From: syzbot <syzbot+72f94b474d6e50b71ffc@syzkaller.appspotmail.com>
To: linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com
Subject: Forwarded: [PATCH] comedi: dt2815: add comprehensive debug logging to diagnose crashes
Date: Sun, 25 Jan 2026 22:17:35 -0800 [thread overview]
Message-ID: <697706ff.050a0220.226181.0013.GAE@google.com> (raw)
In-Reply-To: <69746a86.050a0220.226181.0003.GAE@google.com>
For archival purposes, forwarding an incoming command email to
linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com.
***
Subject: [PATCH] comedi: dt2815: add comprehensive debug logging to diagnose crashes
Author: kartikey406@gmail.com
#syz test: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
Add detailed debug logging throughout dt2815_attach() to diagnose
multiple crash scenarios reported by syzbot. The crashes occur at
different offsets within the function when attaching to I/O ports
without actual hardware present.
This debug patch adds:
- PID tracking to identify concurrent execution
- Logging before/after each outb() operation
- Status register values at each iteration
- Device pointer and iobase values at critical points
- Entry/exit tracking for the attach function
Additionally, implements an early hardware detection check: if the
first status read returns 0xff (floating bus indicating no hardware),
the driver returns -ENODEV immediately instead of attempting further
I/O operations.
This is a debug patch to gather information about the crash patterns
before implementing a final fix.
Reported-by: syzbot+72f94b474d6e50b71ffc@syzkaller.appspotmail.com
Link: https://syzkaller.appspot.com/bug?extid=72f94b474d6e50b71ffc
Signed-off-by: Deepanshu Kartikey <kartikey406@gmail.com>
---
drivers/comedi/drivers/dt2815.c | 37 +++++++++++++++++++++++++++++++--
1 file changed, 35 insertions(+), 2 deletions(-)
diff --git a/drivers/comedi/drivers/dt2815.c b/drivers/comedi/drivers/dt2815.c
index 03ba2fd18a21..285bf13fc74d 100644
--- a/drivers/comedi/drivers/dt2815.c
+++ b/drivers/comedi/drivers/dt2815.c
@@ -144,10 +144,16 @@ static int dt2815_attach(struct comedi_device *dev, struct comedi_devconfig *it)
const struct comedi_lrange *current_range_type, *voltage_range_type;
int ret;
+ printk(KERN_INFO "dt2815: [PID %d] ENTER dt2815_attach, it->options[0] = 0x%lx\n",
+ current->pid, it->options[0]);
+
ret = comedi_request_region(dev, it->options[0], 0x2);
if (ret)
return ret;
+ printk(KERN_INFO "dt2815: [PID %d] after comedi_request_region, dev->iobase = 0x%lx\n",
+ current->pid, dev->iobase);
+
ret = comedi_alloc_subdevices(dev, 1);
if (ret)
return ret;
@@ -175,31 +181,58 @@ static int dt2815_attach(struct comedi_device *dev, struct comedi_devconfig *it)
? current_range_type : voltage_range_type;
}
+ printk(KERN_INFO "dt2815: [PID %d] About to do FIRST outb, dev = %px, dev->iobase = 0x%lx\n",
+ current->pid, dev, dev->iobase);
/* Init the 2815 */
outb(0x00, dev->iobase + DT2815_STATUS);
+
+ printk(KERN_INFO "dt2815: [PID %d] FIRST outb completed successfully\n", current->pid);
+
for (i = 0; i < 100; i++) {
/* This is incredibly slow (approx 20 ms) */
unsigned int status;
+ printk(KERN_INFO "dt2815: [PID %d] Loop iteration %d, dev->iobase = 0x%lx\n",
+ current->pid, i, dev->iobase);
usleep_range(1000, 3000);
status = inb(dev->iobase + DT2815_STATUS);
+ printk(KERN_INFO "dt2815: [PID %d] iteration %d: status = 0x%x\n",
+ current->pid, i, status);
+ /* 0xff usually indicates no hardware present on the bus */
+ if (i == 0 && status == 0xff) {
+ dev_err(dev->class_dev,
+ "No hardware detected at I/O base 0x%lx\n",
+ dev->iobase);
+ printk(KERN_INFO "dt2815: [PID %d] Returning -ENODEV (no hardware)\n",
+ current->pid);
+ return -ENODEV;
+ }
+
if (status == 4) {
unsigned int program;
program = (it->options[4] & 0x3) << 3 | 0x7;
outb(program, dev->iobase + DT2815_DATA);
+ printk(KERN_INFO "dt2815: [PID %d] Hardware ready, programmed successfully\n",
+ current->pid);
dev_dbg(dev->class_dev, "program: 0x%x (@t=%d)\n",
program, i);
+ printk(KERN_INFO "dt2815: [PID %d] Unexpected status 0x%x at iteration %d\n",
+ current->pid, status, i);
break;
} else if (status != 0x00) {
dev_dbg(dev->class_dev,
"unexpected status 0x%x (@t=%d)\n",
status, i);
- if (status & 0x60)
+ if (status & 0x60) {
+ printk(KERN_INFO "dt2815: [PID %d] About to do recovery outb, dev = %px, dev->iobase = 0x%lx\n",
+ current->pid, dev, dev->iobase);
outb(0x00, dev->iobase + DT2815_STATUS);
+ printk(KERN_INFO "dt2815: [PID %d] Recovery outb completed\n", current->pid);
+ }
}
}
-
+ printk(KERN_INFO "dt2815: [PID %d] EXIT dt2815_attach successfully\n", current->pid);
return 0;
}
--
2.43.0
next prev parent reply other threads:[~2026-01-26 6:17 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-24 6:45 [syzbot] [comedi?] BUG: unable to handle kernel paging request in dt2815_attach syzbot
2026-01-26 5:19 ` Forwarded: [PATCH] comedi: dt2815: Add debug logging to diagnose iobase issue syzbot
2026-01-26 5:48 ` Forwarded: [PATCH] comedi: dt2815: add hardware detection to prevent crash on invalid I/O ports syzbot
2026-01-26 6:17 ` syzbot [this message]
2026-01-26 6:42 ` Forwarded: [PATCH] comedi: dt2815: add hardware detection to prevent crash syzbot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=697706ff.050a0220.226181.0013.GAE@google.com \
--to=syzbot+72f94b474d6e50b71ffc@syzkaller.appspotmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=syzkaller-bugs@googlegroups.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.