On Sunday 28 October 2007 23:37:10 David Ellingsworth wrote: > > 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
I'm sorry. Your mailer completely fucked up the context so I'm not really able to see what you want to tell me. -- Greetings Michael. _______________________________________________ Bcm43xx-dev mailing list Bcm43xx-dev@lists.berlios.de https://lists.berlios.de/mailman/listinfo/bcm43xx-dev