Return-path: Received: from mtiwmhc11.worldnet.att.net ([204.127.131.115]:57936 "EHLO mtiwmhc11.worldnet.att.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754413AbXK1Qly (ORCPT ); Wed, 28 Nov 2007 11:41:54 -0500 Message-ID: <474D9A46.1020300@lwfinger.net> (sfid-20071128_164159_449158_E036DDB9) Date: Wed, 28 Nov 2007 10:41:42 -0600 From: Larry Finger MIME-Version: 1.0 To: Michael Buesch CC: bcm43xx-dev@lists.berlios.de, linux-wireless@vger.kernel.org Subject: Re: [RFC/T V2] b43: Fix Radio On/Off LED action References: <474c3fed.AWsUCELaFNf32i8C%Larry.Finger@lwfinger.net> <200711281511.22788.mb@bu3sch.de> <474D83BF.7000102@lwfinger.net> <200711281713.02919.mb@bu3sch.de> In-Reply-To: <200711281713.02919.mb@bu3sch.de> Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-wireless-owner@vger.kernel.org List-ID: Michael Buesch wrote: > > I think it's a different bug. The backtrace seems corrupted. > > Can you try this patch? There is some circular locking in rfkill. I still get circular locking. The dump is b43-phy0: Radio hardware status changed to DISABLED b43-phy0: Radio hardware status changed to ENABLED ======================================================= [ INFO: possible circular locking dependency detected ] 2.6.24-rc3-L2.6-g65d438bf-dirty #25 ------------------------------------------------------- events/0/9 is trying to acquire lock: (&wl->mutex){--..}, at: [] b43_rfkill_soft_toggle+0x33/0xb2 [b43] but task is already holding lock: (rfkill_mutex){--..}, at: [] rfkill_switch_all+0x1c/0x78 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (rfkill_mutex){--..}: [] __lock_acquire+0xb34/0xd47 [] rfkill_register+0x87/0x107 [] lock_acquire+0x85/0xa9 [] rfkill_register+0x87/0x107 [] rfkill_register+0x87/0x107 [] mutex_lock_nested+0x10e/0x2b6 [] rfkill_register+0x87/0x107 [] b43_rfkill_init+0x141/0x1a3 [b43] [] b43_wireless_core_init+0x682/0x78c [b43] [] b43_op_start+0x33/0x74 [b43] [] ieee80211_open+0x1c7/0x3dd [mac80211] [] dev_open+0x4e/0x88 [] dev_change_flags+0xaf/0x16b [] do_setlink+0x27a/0x346 [] _read_unlock+0x26/0x2b [] rtnl_setlink+0xf9/0x11c [] rtnetlink_rcv_msg+0x1b6/0x1d5 [] rtnetlink_rcv_msg+0x0/0x1d5 [] netlink_rcv_skb+0x3e/0xaa [] rtnetlink_rcv+0x20/0x29 [] netlink_unicast+0x1d9/0x23a [] __alloc_skb+0x8a/0x138 [] netlink_sendmsg+0x2aa/0x2bd [] sock_sendmsg+0xdf/0xf8 [] autoremove_wake_function+0x0/0x38 [] autoremove_wake_function+0x0/0x38 [] __lock_acquire+0xd26/0xd47 [] move_addr_to_kernel+0x40/0x49 [] verify_iovec+0x4f/0x8e [] sys_sendmsg+0x1e1/0x253 [] up_read+0x26/0x2a [] do_page_fault+0x3bf/0x764 [] sys_getsockname+0x66/0x8c [] trace_hardirqs_on+0x11c/0x147 [] trace_hardirqs_on_thunk+0x35/0x3a [] system_call+0x7e/0x83 [] 0xffffffffffffffff -> #0 (&wl->mutex){--..}: [] __lock_acquire+0xa36/0xd47 [] b43_rfkill_soft_toggle+0x33/0xb2 [b43] [] lock_acquire+0x85/0xa9 [] b43_rfkill_soft_toggle+0x33/0xb2 [b43] [] b43_rfkill_soft_toggle+0x33/0xb2 [b43] [] mutex_lock_nested+0x10e/0x2b6 [] debug_mutex_free_waiter+0x5b/0x5f [] rfkill_task_handler+0x0/0x54 [] b43_rfkill_soft_toggle+0x33/0xb2 [b43] [] rfkill_toggle_radio+0x28/0x60 [] rfkill_switch_all+0x3e/0x78 [] rfkill_task_handler+0x3c/0x54 [] run_workqueue+0xeb/0x200 [] worker_thread+0xed/0xfe [] autoremove_wake_function+0x0/0x38 [] worker_thread+0x0/0xfe [] kthread+0x49/0x77 [] child_rip+0xa/0x12 [] restore_args+0x0/0x30 [] kthread+0x0/0x77 [] child_rip+0x0/0x12 [] 0xffffffffffffffff other info that might help us debug this: 4 locks held by events/0/9: #0: (events){--..}, at: [] run_workqueue+0xa0/0x200 #1: (rfkill_wlan.work){--..}, at: [] run_workqueue+0xa0/0x200 #2: (rfkill_wlan.mutex){--..}, at: [] rfkill_task_handler+0x1e/0x54 #3: (rfkill_mutex){--..}, at: [] rfkill_switch_all+0x1c/0x78 stack backtrace: Call Trace: [] print_circular_bug_tail+0x70/0x7b [] __lock_acquire+0xa36/0xd47 [] :b43:b43_rfkill_soft_toggle+0x33/0xb2 [] lock_acquire+0x85/0xa9 [] :b43:b43_rfkill_soft_toggle+0x33/0xb2 [] :b43:b43_rfkill_soft_toggle+0x33/0xb2 [] mutex_lock_nested+0x10e/0x2b6 [] debug_mutex_free_waiter+0x5b/0x5f [] rfkill_task_handler+0x0/0x54 [] :b43:b43_rfkill_soft_toggle+0x33/0xb2 [] rfkill_toggle_radio+0x28/0x60 [] rfkill_switch_all+0x3e/0x78 [] rfkill_task_handler+0x3c/0x54 [] run_workqueue+0xeb/0x200 [] worker_thread+0xed/0xfe [] autoremove_wake_function+0x0/0x38 [] worker_thread+0x0/0xfe [] kthread+0x49/0x77 [] child_rip+0xa/0x12 [] restore_args+0x0/0x30 [] kthread+0x0/0x77 [] child_rip+0x0/0x12 b43-phy0: Radio hardware status changed to DISABLED