Syzbot reported, that dev->urb_ctl was submitted while active. The problem was in missing validation check. We should check, that dev->urb_ctl is not pending before sumbitting it again. Fail log: URB 00000000cfeee59c submitted while active WARNING: CPU: 1 PID: 8459 at drivers/usb/core/urb.c:378 usb_submit_urb+0x1271/0x1540 drivers/usb/core/urb.c:378 ... Call Trace: <IRQ> cm109_urb_irq_callback+0x44f/0xaa0 drivers/input/misc/cm109.c:422 __usb_hcd_giveback_urb+0x2b0/0x5c0 drivers/usb/core/hcd.c:1656 usb_hcd_giveback_urb+0x367/0x410 drivers/usb/core/hcd.c:1726 Reported-and-tested-by: syzbot+2d6d691af5ab4b7e66df@xxxxxxxxxxxxxxxxxxxxxxxxx Fixes: c04148f915e5 ("Input: add driver for USB VoIP phones with CM109 chipset") Signed-off-by: Pavel Skripkin <paskripkin@xxxxxxxxx> --- drivers/input/misc/cm109.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/input/misc/cm109.c b/drivers/input/misc/cm109.c index f515fae465c3..60bddadbbe3a 100644 --- a/drivers/input/misc/cm109.c +++ b/drivers/input/misc/cm109.c @@ -406,7 +406,7 @@ static void cm109_urb_irq_callback(struct urb *urb) dev->irq_urb_pending = 0; - if (likely(!dev->shutdown)) { + if (likely(!dev->shutdown) && likely(!dev->ctl_urb_pending)) { if (dev->buzzer_state) dev->ctl_data->byte[HID_OR0] |= BUZZER_ON; -- 2.32.0