[bug report] usb: WARNING in usb_free_urb

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello developers,

We hit this issue when fuzzing the usb module with Syzkaller.

HEAD commit: 819837584309 6.12.0-rc5
git tree: upstream
kernel config: https://drive.google.com/file/d/1-9pltE-1CMgGgNFu9o5l0BlCHk3Rnzb_/view?usp=drive_link
console output: https://drive.google.com/file/d/1X-kcCiTBxVr62OXExiOnJIuMVHeyUm4o/view?usp=sharing
syz repro: https://drive.google.com/file/d/1baQYznawknskJBUNWhAl0cgckV5m0_ih/view?usp=sharing
C reproducer: https://drive.google.com/file/d/1nK_keaTF9vMxqD_SVMWXlZOno4CUyl17/view?usp=sharing

A similar but not identical problem has been found: https://lore.kernel.org/all/000000000000922b0b0619de5b8f@xxxxxxxxxx/T/.
And an ad-hoc patch is proposed: https://syzkaller.appspot.com/text?tag=Patch&x=1209fabc980000.

Environment:
Ubuntu 22.04 on Linux 5.15
QEMU emulator version 6.2.0
qemu-system-x86_64 \
-m 2G \
-smp 2 \
-kernel /home/wd/bzImage \
-append "console=ttyS0 root=/dev/sda earlyprintk=serial net.ifnames=0" \
-drive file=/home/wd/bullseye.img,format=raw \
-net user,host=10.0.2.10,hostfwd=tcp:127.0.0.1:10021-:22 \
-net nic,model=e1000 \
-enable-kvm \
-nographic \
-pidfile vm.pid \
2>&1 | tee vm.log

If you fix this issue, please add the following tag to the commit:
Reported-by: Shihao Jiang<sh.jiang@xxxxxxxxxx>

====================================================
WARNING: CPU: 0 PID: 9 at mm/slub.c:4689 free_large_kmalloc+0xc5/0x120 mm/slub.c:4689
Modules linked in:
CPU: 0 UID: 0 PID: 9 Comm: kworker/0:1 Tainted: G        W          6.12.0-rc5 #1
Tainted: [W]=WARN
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
Workqueue: usb_hub_wq hub_event
RIP: 0010:free_large_kmalloc+0xc5/0x120 mm/slub.c:4689
Code: 11 78 b2 ff 44 89 e2 be 06 00 00 00 48 89 ef e8 51 cd 12 00 e8 2c 76 b2 ff eb bf 5b 48 89 ef 5d 41 5c 41 5d e9 4c 5c e3 ff 90 <0f> 0b 90 80 3d 73 eb 24 0e 00 74 31 48 8b 74 24 20 4c 89 e7 41 bc
RSP: 0018:ffffc900003aee58 EFLAGS: 00010246
RAX: 04fff00000000000 RBX: 0000000000000100 RCX: ffffc90008251000
RDX: 0000000000000000 RSI: ffff8880514e2000 RDI: ffffea0001453880
RBP: ffffea0001453880 R08: 0000000000000001 R09: ffffed1003d85480
R10: 0000000000000000 R11: ffffffff81004eba R12: ffff8880514e2000
R13: ffff888029e27000 R14: dffffc0000000000 R15: ffff88802b1380f0
FS:  0000000000000000(0000) GS:ffff88802b800000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f06340190f0 CR3: 000000007cff2000 CR4: 0000000000352ef0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 <TASK>
 urb_destroy drivers/usb/core/urb.c:25 [inline]
 kref_put include/linux/kref.h:65 [inline]
 usb_free_urb+0xef/0x100 drivers/usb/core/urb.c:97
 smsusb_term_device+0x108/0x1e0 drivers/media/usb/siano/smsusb.c:352
 smsusb_init_device+0x935/0xe00 drivers/media/usb/siano/smsusb.c:497
 smsusb_probe+0x5b1/0x1070 drivers/media/usb/siano/smsusb.c:575
 usb_probe_interface+0x314/0x9f0 drivers/usb/core/driver.c:399
 call_driver_probe drivers/base/dd.c:579 [inline]
 really_probe+0x252/0xa90 drivers/base/dd.c:658
 __driver_probe_device+0x1df/0x450 drivers/base/dd.c:800
 driver_probe_device+0x4c/0x1a0 drivers/base/dd.c:830
 __device_attach_driver+0x1db/0x2f0 drivers/base/dd.c:958
 bus_for_each_drv+0x14c/0x1d0 drivers/base/bus.c:459
 __device_attach+0x1f2/0x4c0 drivers/base/dd.c:1030
 bus_probe_device+0x17f/0x1c0 drivers/base/bus.c:534
 device_add+0x110b/0x1a20 drivers/base/core.c:3675
 usb_set_configuration+0x11c0/0x1c90 drivers/usb/core/message.c:2210
 usb_generic_driver_probe+0xb7/0x110 drivers/usb/core/generic.c:254
 usb_probe_device+0xed/0x3e0 drivers/usb/core/driver.c:294
 call_driver_probe drivers/base/dd.c:579 [inline]
 really_probe+0x252/0xa90 drivers/base/dd.c:658
 __driver_probe_device+0x1df/0x450 drivers/base/dd.c:800
 driver_probe_device+0x4c/0x1a0 drivers/base/dd.c:830
 __device_attach_driver+0x1db/0x2f0 drivers/base/dd.c:958
 bus_for_each_drv+0x14c/0x1d0 drivers/base/bus.c:459
 __device_attach+0x1f2/0x4c0 drivers/base/dd.c:1030
 bus_probe_device+0x17f/0x1c0 drivers/base/bus.c:534
 device_add+0x110b/0x1a20 drivers/base/core.c:3675
 usb_new_device+0xd46/0x1990 drivers/usb/core/hub.c:2651
 hub_port_connect drivers/usb/core/hub.c:5521 [inline]
 hub_port_connect_change drivers/usb/core/hub.c:5661 [inline]
 port_event drivers/usb/core/hub.c:5821 [inline]
 hub_event+0x2c3b/0x4cd0 drivers/usb/core/hub.c:5903
 process_one_work+0x95a/0x1b20 kernel/workqueue.c:3229
 process_scheduled_works kernel/workqueue.c:3310 [inline]
 worker_thread+0x677/0xe90 kernel/workqueue.c:3391
 kthread+0x2ca/0x3b0 kernel/kthread.c:389
 ret_from_fork+0x48/0x80 arch/x86/kernel/process.c:147
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
 </TASK>
====================================================

Best Regards, 
Shihao.




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux