Re: [PATCH] hwmon: prevent packets from going to driver for probe
From: Guenter Roeck
Date: Tue Jul 07 2026 - 20:53:17 EST
On Tue, Apr 28, 2026 at 12:12:26PM +0800, Edward Adam Davis wrote:
> A race condition exists between hid_input_report() and the point
> immediately following the execution of hid_device_io_start() within
> corsairpsu_probe(). If the probe operation fails after "io start" has
> been initiated, this race condition will result in a uaf vulnerability
> [1].
>
> CPU0 CPU1
> ==== ====
> corsairpsu_probe()
> hid_device_io_start()
> ... unlock driver_input_lock
> hid_hw_stop()
> kfree(hidraw) __hid_input_report()
> ... acquire driver_input_lock
> hid_report_raw_event()
> hidraw_report_event()
> ... access hidraw's list_lock // trigger uaf
>
> Consequently, when corsairpsu_probe() fails and hid_hw_stop() needs to
> be executed, the io_started flag is first cleared while holding the
> driver_input_lock to prevent potential race conditions involving input
> reports.
>
> [1]
> BUG: KASAN: slab-use-after-free in rt_spin_lock+0x83/0x400 kernel/locking/spinlock_rt.c:56
> Call Trace:
> hidraw_report_event+0x5d/0x3a0 drivers/hid/hidraw.c:577
> hid_report_raw_event+0x311/0x1730 drivers/hid/hid-core.c:2076
> __hid_input_report drivers/hid/hid-core.c:2152 [inline]
> hid_input_report+0x44e/0x580 drivers/hid/hid-core.c:2174
> hid_irq_in+0x47e/0x6d0 drivers/hid/usbhid/hid-core.c:286
> __usb_hcd_giveback_urb+0x3b3/0x5e0 drivers/usb/core/hcd.c:1657
> dummy_timer+0x8a9/0x47d0 drivers/usb/gadget/udc/dummy_hcd.c:2005
>
> Allocated by task 10:
> hidraw_connect+0x57/0x430 drivers/hid/hidraw.c:606
> hid_connect+0x5bf/0x19d0 drivers/hid/hid-core.c:2277
> hid_hw_start+0xa8/0x120 drivers/hid/hid-core.c:2387
> corsairpsu_probe+0xd9/0x3c0 drivers/hwmon/corsair-psu.c:782
>
> Freed by task 10:
> hidraw_disconnect+0x4f/0x60 drivers/hid/hidraw.c:662
> hid_disconnect drivers/hid/hid-core.c:2362 [inline]
> hid_hw_stop+0x101/0x1e0 drivers/hid/hid-core.c:2407
> corsairpsu_probe+0x327/0x3c0 drivers/hwmon/corsair-psu.c:826
>
> Fixes: d115b51e0e56 ("hwmon: add Corsair PSU HID controller driver")
> Reported-by: syzbot+9eebf5f6544c5e873858@xxxxxxxxxxxxxxxxxxxxxxxxx
> Closes: https://syzkaller.appspot.com/bug?extid=9eebf5f6544c5e873858
> Tested-by: syzbot+9eebf5f6544c5e873858@xxxxxxxxxxxxxxxxxxxxxxxxx
> Signed-off-by: Edward Adam Davis <eadavis@xxxxxx>
Applied.
Note that it would help to copy subsystem mailing lists and maintainers
on patches like this.
Thanks,
Guenter