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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox