> From: [EMAIL PROTECTED]> To: [EMAIL PROTECTED]> Subject: [PATCH] b43: Fix 
> rfkill callback deadlock> Date: Sun, 28 Oct 2007 17:27:10 +0100> CC: [EMAIL 
> PROTECTED]; bcm43xx-dev@lists.berlios.de; [EMAIL PROTECTED]> > wl->mutex 
> might already be locked on initialization.> > Signed-off-by: Michael Buesch 
> <[EMAIL PROTECTED]>> > Index: wireless-2.6/drivers/net/wireless/b43/rfkill.c> 
> ===================================================================> --- 
> wireless-2.6.orig/drivers/net/wireless/b43/rfkill.c 2007-10-27 
> 13:28:16.000000000 +0200> +++ wireless-2.6/drivers/net/wireless/b43/rfkill.c 
> 2007-10-28 17:13:55.000000000 +0100> @@ -61,15 +61,22 @@ static void 
> b43_rfkill_poll(struct input> mutex_unlock(&wl->mutex);> }> > -/* Called when 
> the RFKILL toggled in software.> - * This is called without locking. */> +/* 
> Called when the RFKILL toggled in software. */> static int 
> b43_rfkill_soft_toggle(void *data, enum rfkill_state state)> {> struct 
> b43_wldev *dev = data;> struct b43_wl *wl = dev->wl;> int err = 0;> > - 
> mutex_lock(&wl->mutex);> + /* When RFKILL is registered, it will call back 
> into this callback.> + * wl->mutex will already be locked when this happens.> 
> + * So first trylock. On contention check if we are in initialization.> + * 
> Silently return if that happens to avoid a deadlock. */> + if 
> (mutex_trylock(&wl->mutex) == 0) {> + if (b43_status(dev) < 
> B43_STAT_INITIALIZED)> + return 0;> + mutex_lock(&wl->mutex);> + }> if 
> (b43_status(dev) < B43_STAT_INITIALIZED)> goto out_unlock;
Why not replace the above lines up to and including "- mutex_loc(&wl->mutext);" 
with:
 
if(b43_status(dev) < B43_STAT_INITIALIZED)
    return 0;
 
mutex_lock(&wl->mutex)> > @@ -89,7 +96,6 @@ static int 
b43_rfkill_soft_toggle(void *> b43_radio_turn_off(dev, 0);> break;> }> -> 
out_unlock:> mutex_unlock(&wl->mutex);> > 
_______________________________________________> Bcm43xx-dev mailing list> 
Bcm43xx-dev@lists.berlios.de> 
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev
_________________________________________________________________
Boo! Scare away worms, viruses and so much more! Try Windows Live OneCare!
http://onecare.live.com/standard/en-us/purchase/trial.aspx?s_cid=wl_hotmailnews
_______________________________________________
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to