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
_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to