On Tuesday 27 November 2007 22:22:22 Larry Finger wrote:
> > I'm wondering who causes this deadlock. "registered" should be false if
> > we are called back from rfkill_initialize, so it should return early before
> > the lock.
> 
> The following code has the competing lock:
> 
> static int rfkill_toggle_radio(struct rfkill *rfkill,
>                                 enum rfkill_state state)
> {
>         int retval;
> 
>         retval = mutex_lock_interruptible(&rfkill->mutex);
>         if (retval)
>                 return retval;
> 
>         if (state != rfkill->state) {
>                 retval = rfkill->toggle_radio(rfkill->data, state);
>                 if (!retval) {
>                         rfkill->state = state;
>                         rfkill_led_trigger(rfkill, state);
>                 }
>         }
> 
>         mutex_unlock(&rfkill->mutex);
>         return retval;
> }

So it's a lock dependency between rfkill->mutex and wl->mutex?
So, now comes the question that really matters. Who is the caller
of rfkill_toggle_radio, in the case where it crashes?

-- 
Greetings Michael.
_______________________________________________
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to