Lockdep problem: v3.18+ (with yesterday's Linus tip - 6f51ee709e4c)

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

 



While unplugging a Logitek Keyboard/mouse micro-receiver, I got the
lockdep splat below.

However, I don't fully understand this splat - I see nothing in
flush_work() nor process_one_work() making use of "intf->reset_ws" -
which seems to be a USB thing.  I guess lockdep is being re-used to
validate work stuff, and "lock" is just plain misleading.

usb 2-1.1: USB disconnect, device number 3

=============================================
[ INFO: possible recursive locking detected ]
3.18.0+ #1459 Not tainted
---------------------------------------------
kworker/0:1/2758 is trying to acquire lock:
 ((&intf->reset_ws)){+.+.+.}, at: [<c003ba90>] flush_work+0x0/0x264

but task is already holding lock:
 ((&intf->reset_ws)){+.+.+.}, at: [<c003ca40>] process_one_work+0x130/0x4b4

other info that might help us debug this:
 Possible unsafe locking scenario:

       CPU0
       ----
  lock((&intf->reset_ws));
  lock((&intf->reset_ws));

 *** DEADLOCK ***

 May be due to missing lock nesting notation

4 locks held by kworker/0:1/2758:
 #0:  ("events"){.+.+.+}, at: [<c003ca40>] process_one_work+0x130/0x4b4
 #1:  ((&intf->reset_ws)){+.+.+.}, at: [<c003ca40>] process_one_work+0x130/0x4b4
 #2:  (&dev->mutex){......}, at: [<c0438c70>] usb_lock_device_for_reset+0x58/0xd0
 #3:  (&dev->mutex){......}, at: [<c038cc10>] device_release_driver+0x20/0x34

stack backtrace:
CPU: 0 PID: 2758 Comm: kworker/0:1 Not tainted 3.18.0+ #1459
Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
Workqueue: events __usb_queue_reset_device
Backtrace:
[<c0012228>] (dump_backtrace) from [<c00123c0>] (show_stack+0x18/0x1c)
 r6:c140b5ac r5:c141ce9c r4:00000000 r3:e3b230c0
[<c00123a8>] (show_stack) from [<c06d7f00>] (dump_stack+0x7c/0x98)
[<c06d7e84>] (dump_stack) from [<c00619a0>] (__lock_acquire+0x13f4/0x1bb0)
 r4:c0bd9190 r3:e3b230c0
[<c00605ac>] (__lock_acquire) from [<c00626c0>] (lock_acquire+0xb0/0x124)
 r10:00000000 r9:c003ba90 r8:00000000 r7:00000000 r6:00000000 r5:ed810670
 r4:00000000
[<c0062610>] (lock_acquire) from [<c003bad4>] (flush_work+0x44/0x264)
 r10:ffffffed r9:c0a43170 r8:ed810400 r7:ed810670 r6:00000001 r5:ed810660
 r4:00000000
[<c003ba90>] (flush_work) from [<c003d8f0>] (__cancel_work_timer+0x8c/0x124)
 r7:ffffffe0 r6:00000000 r5:00000000 r4:ed810660
[<c003d864>] (__cancel_work_timer) from [<c003d9b4>] (cancel_work_sync+0x14/0x18)
 r7:ed810420 r6:ed810420 r5:c0a43170 r4:ee357068
[<c003d9a0>] (cancel_work_sync) from [<c04476dc>] (usb_unbind_interface+0x90/0x280)
[<c044764c>] (usb_unbind_interface) from [<c038cb9c>] (__device_release_driver+078/0xcc)
 r10:ffffffed r9:0000000c r8:fffffff4 r7:ee357000 r6:ed810420 r5:c0a43170
 r4:ed810420
[<c038cb24>] (__device_release_driver) from [<c038cc18>] (device_release_driver+0x28/0x34)
 r5:ed810420 r4:ed810454
[<c038cbf0>] (device_release_driver) from [<c044794c>] (usb_driver_release_interface+0x80/0x84)
 r5:00000001 r4:ed810400
[<c04478cc>] (usb_driver_release_interface) from [<c0447970>] (usb_forced_unbind_intf+0x20/0x30)
 r7:ee357000 r6:ed80c000 r5:ed80c054 r4:ed810400
[<c0447950>] (usb_forced_unbind_intf) from [<c04479e4>] (unbind_marked_interfaces+0x64/0x74)
 r4:00000002 r3:00000020
[<c0447980>] (unbind_marked_interfaces) from [<c0447b58>] (usb_unbind_and_rebind_marked_interfaces+0x14/0x20)
 r6:ed80c050 r5:ffffffff r4:ee357000 r3:0000006b
[<c0447b44>] (usb_unbind_and_rebind_marked_interfaces) from [<c043c470>] (usb_reset_device+0x1dc/0x234)
 r4:ed810000 r3:0000006b
[<c043c294>] (usb_reset_device) from [<c0443f6c>] (__usb_queue_reset_device+0x40/0x58)
 r10:eefb9b00 r9:c0a59178 r8:00000000 r7:dd505eb0 r6:ee357000 r5:ee357068
 r4:ed810260
[<c0443f2c>] (__usb_queue_reset_device) from [<c003cad0>] (process_one_work+0x1c0/0x4b4)
 r6:eefb6500 r5:dd6dde00 r4:ed810260 r3:c0443f2c
[<c003c910>] (process_one_work) from [<c003ce34>] (worker_thread+0x34/0x4b0)
 r10:eefb6500 r9:dd6dde00 r8:00000008 r7:dd6dde18 r6:eefb6500 r5:00000001
 r4:eefb6530
[<c003ce00>] (worker_thread) from [<c0042228>] (kthread+0xe0/0xfc)
 r10:00000000 r9:00000000 r8:00000000 r7:c003ce00 r6:dd6dde00 r5:00000000
 r4:dd66e880
[<c0042148>] (kthread) from [<c000ecc8>] (ret_from_fork+0x14/0x2c)
 r7:00000000 r6:00000000 r5:c0042148 r4:dd66e880

-- 
FTTC broadband for 0.8mile line: currently at 9.5Mbps down 400kbps up
according to speedtest.net.
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




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

  Powered by Linux