Michael Buesch wrote: > On Wednesday 28 November 2007 17:41:42 Larry Finger wrote: >> 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 > > Ok. > > b43 init: > mutex_lock(wl->mutex) > rfkill_init() > mutex_lock(rfkill->mutex) > > in operation: > rfkill poll (no locks held) > calls into rfkill > mutex_lock(rfkill->mutex) > b43_rfkill_soft_toggle() > mutex_lock(wl->mutex) > > As you can see the lock ordering of the two mutexes > is different. The problem is that we cannot easily drop > the wl->mutex on b43 init, as that would introduce some > race conditions. This is specific to b43 and rt2x00 most > likely doesn't have this requirement. > I'm not sure how to properly fix this. Your analysis is correct. I wrapped the call to b43_rfkill_init() with an unlock/lock pair of calls (races be damned) and the circular locking message went away. BTW, that kind of wrapping is already done for b43_rfkill_exit(). Curious. Larry - To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html