Re: [Bugme-new] [Bug 9532] New: circular locking dependency when unplugging USB keyboard

Andrew Morton <[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
On Mon, 10 Dec 2007 05:30:36 -0800 (PST)
[email protected] wrote:

> http://bugzilla.kernel.org/show_bug.cgi?id=9532
> 
>            Summary: circular locking dependency when unplugging USB keyboard
>            Product: Drivers
>            Version: 2.5
>      KernelVersion: 2.6.24-rc4
>           Platform: All
>         OS/Version: Linux
>               Tree: Mainline
>             Status: NEW
>           Severity: normal
>           Priority: P1
>          Component: USB
>         AssignedTo: [email protected]
>         ReportedBy: [email protected]
> 
> 
> Most recent kernel where this bug did not occur: unknown
> Distribution: Debian
> Hardware Environment: i386 laptop (LG LE50 Express)
> Software Environment: Debian testing/unstable, X.org, KDE
> Problem Description:
> 
> I got the following messages when unplugging a USB-connected wireless keyboard.

Appears to be a regression.  The device was dead after this.

Here's the cleaned up lockdep trace (removed the pestiferous word-wrapping):


Dec 10 14:21:41 better kernel: usb 1-1: USB disconnect, address 3
Dec 10 14:21:41 better kernel: 
Dec 10 14:21:41 better kernel: =======================================================
Dec 10 14:21:41 better kernel: [ INFO: possible circular locking dependency
detected ]
Dec 10 14:21:41 better kernel: 2.6.24-rc4-lg #1
Dec 10 14:21:41 better kernel: -------------------------------------------------------
Dec 10 14:21:41 better kernel: khubd/680 is trying to acquire lock:
Dec 10 14:21:41 better kernel:  (&dev->pm_mutex){--..}, at: [<f8d0984b>]
usb_autopm_do_device+0x2b/0x110 [usbcore]
Dec 10 14:21:41 better kernel: 
Dec 10 14:21:41 better kernel: but task is already holding lock:
Dec 10 14:21:41 better kernel:  (&dev->pm_mutex/1){--..}, at: [<f8d034b1>]
usb_disconnect+0xf1/0x140 [usbcore]
Dec 10 14:21:41 better kernel: 
Dec 10 14:21:41 better kernel: which lock already depends on the new lock.
Dec 10 14:21:41 better kernel: 
Dec 10 14:21:41 better kernel: 
Dec 10 14:21:41 better kernel: the existing dependency chain (in reverse order)
is:
Dec 10 14:21:41 better kernel: 
Dec 10 14:21:41 better kernel: -> #6 (&dev->pm_mutex/1){--..}:
Dec 10 14:21:41 better kernel:        [<c0240980>] __lock_acquire+0xbc0/0x1080
Dec 10 14:21:41 better kernel:        [<f8d09eca>] usb_autopm_do_interface+0x3a/0xd0 [usbcore]
Dec 10 14:21:41 better kernel:        [<f8d09eca>] usb_autopm_do_interface+0x3a/0xd0 [usbcore]
Dec 10 14:21:41 better kernel:        [<c0240e9f>] lock_acquire+0x5f/0x80
Dec 10 14:21:41 better kernel:        [<f8d09eca>] usb_autopm_do_interface+0x3a/0xd0 [usbcore]
Dec 10 14:21:41 better kernel:        [<c043fcdf>] mutex_lock_nested+0x7f/0x2f0
Dec 10 14:21:41 better kernel:        [<f8d09eca>] usb_autopm_do_interface+0x3a/0xd0 [usbcore]
Dec 10 14:21:41 better kernel:        [<c03b5136>] input_open_device+0x26/0xa0
Dec 10 14:21:41 better kernel:        [<f8d09eca>] usb_autopm_do_interface+0x3a/0xd0 [usbcore]
Dec 10 14:21:41 better kernel:        [<f8d63a5b>] usbhid_open+0x3b/0x50
[usbhid]
Dec 10 14:21:41 better kernel:        [<f8d5eaaa>] hidinput_open+0xa/0x10 [hid]
Dec 10 14:21:41 better kernel:        [<c03b518a>] input_open_device+0x7a/0xa0
Dec 10 14:21:41 better kernel:        [<c037c56a>] kbd_connect+0x6a/0x90
Dec 10 14:21:41 better kernel:        [<c03b4d27>] input_attach_handler+0x57/0x90
Dec 10 14:21:41 better kernel:        [<c03b6f29>] input_register_device+0x1a9/0x210
Dec 10 14:21:41 better kernel:        [<f8d5b992>] hidinput_connect+0x382/0x32d0 [hid]
Dec 10 14:21:41 better kernel:        [<f8d64573>] hid_probe+0x933/0xce0
[usbhid]
Dec 10 14:21:41 better kernel:        [<c023f86f>] trace_hardirqs_on+0xaf/0x160
Dec 10 14:21:41 better kernel:        [<c043fb75>] __mutex_unlock_slowpath+0xb5/0x190
Dec 10 14:21:41 better kernel:        [<c023f86f>] trace_hardirqs_on+0xaf/0x160
Dec 10 14:21:41 better kernel:        [<f8d098a4>] usb_autopm_do_device+0x84/0x110 [usbcore]
Dec 10 14:21:41 better kernel:        [<f8d09407>] usb_match_one_id+0x27/0xb0
[usbcore]
Dec 10 14:21:41 better kernel:        [<f8d0a6b9>] usb_probe_interface+0xb9/0x140 [usbcore]
Dec 10 14:21:41 better kernel:        [<c0394c27>] driver_probe_device+0x87/0x190
Dec 10 14:21:41 better kernel:        [<c0394eb4>] __driver_attach+0xb4/0xc0
Dec 10 14:21:41 better kernel:        [<c0393fdc>] bus_for_each_dev+0x3c/0x60
Dec 10 14:21:41 better kernel:        [<c0394a96>] driver_attach+0x16/0x20
Dec 10 14:21:41 better kernel:        [<c0394e00>] __driver_attach+0x0/0xc0
Dec 10 14:21:41 better kernel:        [<c039437b>] bus_add_driver+0x8b/0x1f0
Dec 10 14:21:41 better kernel:        [<f8d0a1c9>] usb_register_driver+0x99/0x120 [usbcore]
Dec 10 14:21:41 better kernel:        [<f8877034>] 0xf8877034
Dec 10 14:21:41 better kernel:        [<c0237897>] blocking_notifier_call_chain+0x17/0x20
Dec 10 14:21:41 better kernel:        [<c0246dcd>] sys_init_module+0x12d/0x17d0
Dec 10 14:21:41 better kernel:        [<c02043a6>] syscall_call+0x7/0xb
Dec 10 14:21:41 better kernel:        [<ffffffff>] 0xffffffff
Dec 10 14:21:41 better kernel: 
Dec 10 14:21:41 better kernel: -> #5 (&dev->mutex){--..}:
Dec 10 14:21:41 better kernel:        [<c0240980>] __lock_acquire+0xbc0/0x1080
Dec 10 14:21:41 better kernel:        [<c03b509a>] input_register_handle+0x2a/0xa0
Dec 10 14:21:41 better kernel:        [<c0240e9f>] lock_acquire+0x5f/0x80
Dec 10 14:21:41 better kernel:        [<c03b509a>] input_register_handle+0x2a/0xa0
Dec 10 14:21:41 better kernel:        [<c043f7cb>] mutex_lock_interruptible_nested+0x8b/0x380
Dec 10 14:21:41 better kernel:        [<c03b509a>] input_register_handle+0x2a/0xa0
Dec 10 14:21:41 better kernel:        [<c023f6d8>] mark_held_locks+0x38/0x70
Dec 10 14:21:41 better kernel:        [<c03b509a>] input_register_handle+0x2a/0xa0
Dec 10 14:21:41 better kernel:        [<c03b509a>] input_register_handle+0x2a/0xa0
Dec 10 14:21:41 better kernel:        [<c037c54f>] kbd_connect+0x4f/0x90
Dec 10 14:21:41 better kernel:        [<c03b4d27>] input_attach_handler+0x57/0x90
Dec 10 14:21:41 better kernel:        [<c03b6f29>] input_register_device+0x1a9/0x210
Dec 10 14:21:41 better kernel:        [<c03b8cc6>] atkbd_connect+0x206/0x230
Dec 10 14:21:41 better kernel:        [<c03b1c68>] serio_connect_driver+0x28/0x50
Dec 10 14:21:41 better kernel:        [<c0394c27>] driver_probe_device+0x87/0x190
Dec 10 14:21:41 better kernel:        [<c0394eb4>] __driver_attach+0xb4/0xc0
Dec 10 14:21:41 better kernel:        [<c0393fdc>] bus_for_each_dev+0x3c/0x60
Dec 10 14:21:41 better kernel:        [<c0394a96>] driver_attach+0x16/0x20
Dec 10 14:21:41 better kernel:        [<c0394e00>] __driver_attach+0x0/0xc0
Dec 10 14:21:41 better kernel:        [<c03b29a6>] serio_thread+0x256/0x360
Dec 10 14:21:41 better kernel:        [<c021b280>] finish_task_switch+0x0/0xb0
Dec 10 14:21:41 better kernel:        [<c0233070>] autoremove_wake_function+0x0/0x40
Dec 10 14:21:41 better kernel:        [<c03b2750>] serio_thread+0x0/0x360
Dec 10 14:21:41 better kernel:        [<c0232dd2>] kthread+0x42/0x70
Dec 10 14:21:41 better kernel:        [<c0232d90>] kthread+0x0/0x70
Dec 10 14:21:41 better kernel:        [<c0204f5b>] kernel_thread_helper+0x7/0x1c
Dec 10 14:21:41 better kernel:        [<ffffffff>] 0xffffffff
Dec 10 14:21:41 better kernel: 
Dec 10 14:21:41 better kernel: -> #4 (input_mutex){--..}:
Dec 10 14:21:41 better kernel:        [<c0240980>] __lock_acquire+0xbc0/0x1080
Dec 10 14:21:41 better kernel:        [<c03b6ed4>] input_register_device+0x154/0x210
Dec 10 14:21:41 better kernel:        [<c021b280>] finish_task_switch+0x0/0xb0
Dec 10 14:21:41 better kernel:        [<c0240e9f>] lock_acquire+0x5f/0x80
Dec 10 14:21:41 better kernel:        [<c03b6ed4>] input_register_device+0x154/0x210
Dec 10 14:21:41 better kernel:        [<c043f7cb>] mutex_lock_interruptible_nested+0x8b/0x380
Dec 10 14:21:41 better kernel:        [<c03b6ed4>] input_register_device+0x154/0x210
Dec 10 14:21:41 better last message repeated 2 times
Dec 10 14:21:41 better kernel:        [<f8e6dda8>] rt2x00rfkill_register+0x78/0xd0 [rt2x00lib]
Dec 10 14:21:41 better kernel:        [<f8e6bb9f>] rt2x00lib_initialize+0x13f/0x160 [rt2x00lib]
Dec 10 14:21:41 better kernel:        [<f8e6c68a>] rt2x00mac_start+0x3a/0x70
[rt2x00lib]
Dec 10 14:21:41 better kernel:        [<f8ef0b77>] ieee80211_open+0x1e7/0x4a0
[mac80211]
Dec 10 14:21:41 better kernel:        [<c023f6d8>] mark_held_locks+0x38/0x70
Dec 10 14:21:41 better kernel:        [<c0224986>] local_bh_enable_ip+0x86/0x110
Dec 10 14:21:41 better kernel:        [<c03cde19>] dev_set_rx_mode+0x19/0x50
Dec 10 14:21:41 better kernel:        [<c03d04dc>] dev_open+0x4c/0x80
Dec 10 14:21:41 better kernel:        [<c03cef52>] dev_change_flags+0x82/0x1b0
Dec 10 14:21:41 better kernel:        [<c03cd3e2>] __dev_get_by_name+0x72/0x90
Dec 10 14:21:41 better kernel:        [<c04176f0>] devinet_ioctl+0x500/0x6a0
Dec 10 14:21:41 better kernel:        [<c03d0330>] dev_ioctl+0x480/0x560
Dec 10 14:21:41 better kernel:        [<c03c1942>] sock_ioctl+0xd2/0x230
Dec 10 14:21:41 better kernel:        [<c03c1870>] sock_ioctl+0x0/0x230
Dec 10 14:21:41 better kernel:        [<c028ac3b>] do_ioctl+0x2b/0x90
Dec 10 14:21:41 better kernel:        [<c028aea1>] vfs_ioctl+0x201/0x2d0
Dec 10 14:21:41 better kernel:        [<c023f86f>] trace_hardirqs_on+0xaf/0x160
Dec 10 14:21:41 better kernel:        [<c028afc6>] sys_ioctl+0x56/0x70
Dec 10 14:21:41 better kernel:        [<c020431e>] sysenter_past_esp+0x5f/0xa5
Dec 10 14:21:41 better kernel:        [<ffffffff>] 0xffffffff
Dec 10 14:21:41 better kernel: 
Dec 10 14:21:41 better kernel: -> #3 (rtnl_mutex){--..}:
Dec 10 14:21:41 better kernel:        [<c0240980>] __lock_acquire+0xbc0/0x1080
Dec 10 14:21:41 better kernel:        [<c03da345>] linkwatch_event+0x5/0x30
Dec 10 14:21:41 better kernel:        [<c020ae7f>] save_stack_trace+0x1f/0x40
Dec 10 14:21:41 better kernel:        [<c03da345>] linkwatch_event+0x5/0x30
Dec 10 14:21:41 better kernel:        [<c0240e9f>] lock_acquire+0x5f/0x80
Dec 10 14:21:41 better kernel:        [<c03da345>] linkwatch_event+0x5/0x30
Dec 10 14:21:41 better kernel:        [<c043fcdf>] mutex_lock_nested+0x7f/0x2f0
Dec 10 14:21:41 better kernel:        [<c03da345>] linkwatch_event+0x5/0x30
Dec 10 14:21:41 better kernel:        [<c03da340>] linkwatch_event+0x0/0x30
Dec 10 14:21:41 better kernel:        [<c03da345>] linkwatch_event+0x5/0x30
Dec 10 14:21:41 better kernel:        [<c022f43b>] run_workqueue+0x15b/0x1e0
Dec 10 14:21:41 better kernel:        [<c022f3e4>] run_workqueue+0x104/0x1e0
Dec 10 14:21:41 better kernel:        [<c022fe82>] worker_thread+0x82/0xe0
Dec 10 14:21:41 better kernel:        [<c0233070>] autoremove_wake_function+0x0/0x40
Dec 10 14:21:41 better kernel:        [<c022fe00>] worker_thread+0x0/0xe0
Dec 10 14:21:41 better kernel:        [<c0232dd2>] kthread+0x42/0x70
Dec 10 14:21:41 better kernel:        [<c0232d90>] kthread+0x0/0x70
Dec 10 14:21:41 better kernel:        [<c0204f5b>] kernel_thread_helper+0x7/0x1c
Dec 10 14:21:41 better kernel:        [<ffffffff>] 0xffffffff
Dec 10 14:21:41 better kernel: 
Dec 10 14:21:41 better kernel: -> #2 ((linkwatch_work).work){--..}:
Dec 10 14:21:41 better kernel:        [<c0240980>] __lock_acquire+0xbc0/0x1080
Dec 10 14:21:41 better kernel:        [<c022f3e4>] run_workqueue+0x104/0x1e0
Dec 10 14:21:41 better kernel:        [<c03da340>] linkwatch_event+0x0/0x30
Dec 10 14:21:41 better kernel:        [<c0240e9f>] lock_acquire+0x5f/0x80
Dec 10 14:21:41 better kernel:        [<c022f3e4>] run_workqueue+0x104/0x1e0
Dec 10 14:21:41 better kernel:        [<c022f437>] run_workqueue+0x157/0x1e0
Dec 10 14:21:41 better kernel:        [<c022f3e4>] run_workqueue+0x104/0x1e0
Dec 10 14:21:41 better kernel:        [<c022fe82>] worker_thread+0x82/0xe0
Dec 10 14:21:41 better kernel:        [<c0233070>] autoremove_wake_function+0x0/0x40
Dec 10 14:21:41 better kernel:        [<c022fe00>] worker_thread+0x0/0xe0
Dec 10 14:21:41 better kernel:        [<c0232dd2>] kthread+0x42/0x70
Dec 10 14:21:41 better kernel:        [<c0232d90>] kthread+0x0/0x70
Dec 10 14:21:41 better kernel:        [<c0204f5b>] kernel_thread_helper+0x7/0x1c
Dec 10 14:21:41 better kernel:        [<ffffffff>] 0xffffffff
Dec 10 14:21:41 better kernel: 
Dec 10 14:21:41 better kernel: -> #1 (events){--..}:
Dec 10 14:21:41 better kernel:        [<c0240980>] __lock_acquire+0xbc0/0x1080
Dec 10 14:21:41 better kernel:        [<c022fa80>] flush_workqueue+0x0/0x70
Dec 10 14:21:41 better kernel:        [<c043fdec>] mutex_lock_nested+0x18c/0x2f0
Dec 10 14:21:41 better kernel:        [<c023f86f>] trace_hardirqs_on+0xaf/0x160
Dec 10 14:21:41 better kernel:        [<c0240e9f>] lock_acquire+0x5f/0x80
Dec 10 14:21:41 better kernel:        [<c022fa80>] flush_workqueue+0x0/0x70
Dec 10 14:21:41 better kernel:        [<c022fac3>] flush_workqueue+0x43/0x70
Dec 10 14:21:41 better kernel:        [<c022fa80>] flush_workqueue+0x0/0x70
Dec 10 14:21:41 better kernel:        [<f8d04338>] hub_suspend+0x48/0x50
[usbcore]
Dec 10 14:21:41 better kernel:        [<f8d04340>] hub_resume+0x0/0x10
[usbcore]
Dec 10 14:21:41 better kernel:        [<f8d09c18>] usb_suspend_both+0xc8/0x2f0
[usbcore]
Dec 10 14:21:41 better kernel:        [<f8d0984b>] usb_autopm_do_device+0x2b/0x110 [usbcore]
Dec 10 14:21:41 better kernel:        [<f8d098e4>] usb_autopm_do_device+0xc4/0x110 [usbcore]
Dec 10 14:21:41 better kernel:        [<f8d09f70>] usb_autosuspend_work+0x0/0x10 [usbcore]
Dec 10 14:21:41 better kernel:        [<f8d09f70>] usb_autosuspend_work+0x0/0x10 [usbcore]
Dec 10 14:21:41 better kernel:        [<c022f43b>] run_workqueue+0x15b/0x1e0
Dec 10 14:21:41 better kernel:        [<c022f3e4>] run_workqueue+0x104/0x1e0
Dec 10 14:21:41 better kernel:        [<c022fe82>] worker_thread+0x82/0xe0
Dec 10 14:21:41 better kernel:        [<c0233070>] autoremove_wake_function+0x0/0x40
Dec 10 14:21:41 better kernel:        [<c022fe00>] worker_thread+0x0/0xe0
Dec 10 14:21:41 better kernel:        [<c0232dd2>] kthread+0x42/0x70
Dec 10 14:21:41 better kernel:        [<c0232d90>] kthread+0x0/0x70
Dec 10 14:21:41 better kernel:        [<c0204f5b>] kernel_thread_helper+0x7/0x1c
Dec 10 14:21:41 better kernel:        [<ffffffff>] 0xffffffff
Dec 10 14:21:41 better kernel: 
Dec 10 14:21:41 better kernel: -> #0 (&dev->pm_mutex){--..}:
Dec 10 14:21:41 better kernel:        [<c02407ab>] __lock_acquire+0x9eb/0x1080
Dec 10 14:21:41 better kernel:        [<f8d0984b>] usb_autopm_do_device+0x2b/0x110 [usbcore]
Dec 10 14:21:41 better kernel:        [<c0240e9f>] lock_acquire+0x5f/0x80
Dec 10 14:21:41 better kernel:        [<f8d0984b>] usb_autopm_do_device+0x2b/0x110 [usbcore]
Dec 10 14:21:41 better kernel:        [<c043fcdf>] mutex_lock_nested+0x7f/0x2f0
Dec 10 14:21:41 better kernel:        [<f8d0984b>] usb_autopm_do_device+0x2b/0x110 [usbcore]
Dec 10 14:21:41 better kernel:        [<f8d0984b>] usb_autopm_do_device+0x2b/0x110 [usbcore]
Dec 10 14:21:41 better kernel:        [<f8d034ee>] usb_disconnect+0x12e/0x140
[usbcore]
Dec 10 14:21:41 better kernel:        [<f8d049d0>] hub_thread+0x460/0xcb0
[usbcore]
Dec 10 14:21:41 better kernel:        [<c04413bb>] _spin_unlock_irq+0x2b/0x50
Dec 10 14:21:41 better kernel:        [<c021b2db>] finish_task_switch+0x5b/0xb0
Dec 10 14:21:41 better kernel:        [<c0233070>] autoremove_wake_function+0x0/0x40
Dec 10 14:21:41 better kernel:        [<f8d04570>] hub_thread+0x0/0xcb0
[usbcore]
Dec 10 14:21:41 better kernel:        [<c0232dd2>] kthread+0x42/0x70
Dec 10 14:21:41 better kernel:        [<c0232d90>] kthread+0x0/0x70
Dec 10 14:21:41 better kernel:        [<c0204f5b>] kernel_thread_helper+0x7/0x1c
Dec 10 14:21:41 better kernel:        [<ffffffff>] 0xffffffff
Dec 10 14:21:41 better kernel: 
Dec 10 14:21:41 better kernel: other info that might help us debug this:
Dec 10 14:21:41 better kernel: 
Dec 10 14:21:41 better kernel: 1 lock held by khubd/680:
Dec 10 14:21:41 better kernel:  #0:  (&dev->pm_mutex/1){--..}, at: [<f8d034b1>] usb_disconnect+0xf1/0x140 [usbcore]
Dec 10 14:21:41 better kernel: 
Dec 10 14:21:41 better kernel: stack backtrace:
Dec 10 14:21:41 better kernel: Pid: 680, comm: khubd Not tainted 2.6.24-rc4-lg
#1
Dec 10 14:21:41 better kernel:  [<c023eb4a>] print_circular_bug_tail+0x7a/0x90
Dec 10 14:21:41 better kernel:  [<c02407ab>] __lock_acquire+0x9eb/0x1080
Dec 10 14:21:41 better kernel:  [<f8d0984b>] usb_autopm_do_device+0x2b/0x110 [usbcore]
Dec 10 14:21:41 better kernel:  [<c0240e9f>] lock_acquire+0x5f/0x80
Dec 10 14:21:41 better kernel:  [<f8d0984b>] usb_autopm_do_device+0x2b/0x110 [usbcore]
Dec 10 14:21:41 better kernel:  [<c043fcdf>] mutex_lock_nested+0x7f/0x2f0
Dec 10 14:21:41 better kernel:  [<f8d0984b>] usb_autopm_do_device+0x2b/0x110 [usbcore]
Dec 10 14:21:41 better kernel:  [<f8d0984b>] usb_autopm_do_device+0x2b/0x110 [usbcore]
Dec 10 14:21:41 better kernel:  [<f8d034ee>] usb_disconnect+0x12e/0x140 [usbcore]
Dec 10 14:21:41 better kernel:  [<f8d049d0>] hub_thread+0x460/0xcb0 [usbcore]
Dec 10 14:21:41 better kernel:  [<c04413bb>] _spin_unlock_irq+0x2b/0x50
Dec 10 14:21:41 better kernel:  [<c021b2db>] finish_task_switch+0x5b/0xb0
Dec 10 14:21:41 better kernel:  [<c0233070>] autoremove_wake_function+0x0/0x40
Dec 10 14:21:41 better kernel:  [<f8d04570>] hub_thread+0x0/0xcb0 [usbcore]
Dec 10 14:21:41 better kernel:  [<c0232dd2>] kthread+0x42/0x70
Dec 10 14:21:41 better kernel:  [<c0232d90>] kthread+0x0/0x70
Dec 10 14:21:41 better kernel:  [<c0204f5b>] kernel_thread_helper+0x7/0x1c
Dec 10 14:21:41 better kernel:  =======================



-------------------------------------------------------------------------
SF.Net email is sponsored by: 
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.