Re: INFO: trying to register non-static key in usbtouch_reset_resume

From: Andrey Konovalov
Date: Tue Aug 13 2019 - 09:11:42 EST


On Thu, Jun 20, 2019 at 11:33 AM syzbot
<syzbot+933daad9be4e67ba91a9@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> syzbot has found a reproducer for the following crash on:
>
> HEAD commit: 9939f56e usb-fuzzer: main usb gadget fuzzer driver
> git tree: https://github.com/google/kasan.git usb-fuzzer
> console output: https://syzkaller.appspot.com/x/log.txt?x=100c063aa00000
> kernel config: https://syzkaller.appspot.com/x/.config?x=df134eda130bb43a
> dashboard link: https://syzkaller.appspot.com/bug?extid=933daad9be4e67ba91a9
> compiler: gcc (GCC) 9.0.0 20181231 (experimental)
> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=144fa5e6a00000
> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=13d12de6a00000
>
> IMPORTANT: if you fix the bug, please add the following tag to the commit:
> Reported-by: syzbot+933daad9be4e67ba91a9@xxxxxxxxxxxxxxxxxxxxxxxxx
>
> usb 1-1: reset low-speed USB device number 2 using dummy_hcd
> INFO: trying to register non-static key.
> the code is fine but needs lockdep annotation.
> turning off the locking correctness validator.
> CPU: 0 PID: 12 Comm: kworker/0:1 Not tainted 5.2.0-rc5+ #11
> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
> Google 01/01/2011
> Workqueue: usb_hub_wq hub_event
> Call Trace:
> __dump_stack lib/dump_stack.c:77 [inline]
> dump_stack+0xca/0x13e lib/dump_stack.c:113
> assign_lock_key kernel/locking/lockdep.c:775 [inline]
> register_lock_class+0x11ae/0x1240 kernel/locking/lockdep.c:1084
> __lock_acquire+0x11d/0x5340 kernel/locking/lockdep.c:3674
> lock_acquire+0x100/0x2b0 kernel/locking/lockdep.c:4303
> __mutex_lock_common kernel/locking/mutex.c:926 [inline]
> __mutex_lock+0xf9/0x12b0 kernel/locking/mutex.c:1073
> usbtouch_reset_resume+0xb1/0x170
> drivers/input/touchscreen/usbtouchscreen.c:1611
> usb_resume_interface drivers/usb/core/driver.c:1242 [inline]
> usb_resume_interface.isra.0+0x184/0x390 drivers/usb/core/driver.c:1210
> usb_resume_both+0x23d/0x780 drivers/usb/core/driver.c:1412
> __rpm_callback+0x27e/0x3c0 drivers/base/power/runtime.c:355
> rpm_callback+0x18f/0x230 drivers/base/power/runtime.c:485
> rpm_resume+0x10c5/0x1840 drivers/base/power/runtime.c:849
> __pm_runtime_resume+0x103/0x180 drivers/base/power/runtime.c:1076
> pm_runtime_get_sync include/linux/pm_runtime.h:226 [inline]
> usb_autoresume_device+0x1e/0x60 drivers/usb/core/driver.c:1599
> usb_remote_wakeup+0x7b/0xb0 drivers/usb/core/hub.c:3601
> hub_port_connect_change drivers/usb/core/hub.c:5190 [inline]
> port_event drivers/usb/core/hub.c:5350 [inline]
> hub_event+0x23d7/0x3590 drivers/usb/core/hub.c:5432
> process_one_work+0x905/0x1570 kernel/workqueue.c:2269
> worker_thread+0x96/0xe20 kernel/workqueue.c:2415
> kthread+0x30b/0x410 kernel/kthread.c:255
> ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:352
> dummy_hcd dummy_hcd.0: port status 0x00010100 has changes
> dummy_hcd dummy_hcd.0: port status 0x00010101 has changes
> dummy_hcd dummy_hcd.0: port status 0x00100303 has changes
> usb 1-1: reset low-speed USB device number 2 using dummy_hcd
> dummy_hcd dummy_hcd.0: port status 0x00100303 has changes
> usb usb1: dummy_bus_suspend
> usb usb1: dummy_bus_resume
> dummy_hcd dummy_hcd.0: port status 0x00010100 has changes
> dummy_hcd dummy_hcd.0: port status 0x00100303 has changes
> usb 1-1: reset low-speed USB device number 2 using dummy_hcd
> dummy_hcd dummy_hcd.0: port status 0x00100303 has changes
> usb usb1: dummy_bus_suspend
> usb usb1: dummy_bus_resume
> dummy_hcd dummy_hcd.0: port status 0x00010100 has changes
> dummy_hcd dummy_hcd.0: port status 0x00100303 has changes
> usb 1-1: reset low-speed USB device number 2 using dummy_hcd
> dummy_hcd dummy_hcd.0: port status 0x00100303 has changes
> usb usb1: dummy_bus_suspend
> usb usb1: dummy_bus_resume
> dummy_hcd dummy_hcd.0: port status 0x00010100 has changes
> dummy_hcd dummy_hcd.0: port status 0x00100303 has changes
> usb 1-1: reset low-speed USB device number 2 using dummy_hcd
> dummy_hcd dummy_hcd.0: port status 0x00100303 has changes
> usb usb1: dummy_bus_suspend
> usb usb1: dummy_bus_resume
> dummy_hcd dummy_hcd.0: port status 0x00010100 has changes
> dummy_hcd dummy_hcd.0: port status 0x00100303 has changes
> usb 1-1: reset low-speed USB device number 2 using dummy_hcd
> dummy_hcd dummy_hcd.0: port status 0x00100303 has changes
>

#syz dup: WARNING in usbtouch_open