Skip to content

Commit

Permalink
b43legacy: Fix rfkill allocation leakage in error paths
Browse files Browse the repository at this point in the history
We must kill rfkill in any error paths that trigger after rfkill init.

Signed-off-by: Michael Buesch <mb@bu3sch.de>
Acked-by: Stefano Brivio <stefano.brivio@polimi.it>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Michael Buesch authored and David S. Miller committed Feb 1, 2008
1 parent 1946a2c commit 8712f27
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion drivers/net/wireless/b43legacy/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -3221,6 +3221,7 @@ static int b43legacy_op_start(struct ieee80211_hw *hw)
struct b43legacy_wldev *dev = wl->current_dev;
int did_init = 0;
int err = 0;
bool do_rfkill_exit = 0;

/* First register RFkill.
* LEDs that are registered later depend on it. */
Expand All @@ -3230,8 +3231,10 @@ static int b43legacy_op_start(struct ieee80211_hw *hw)

if (b43legacy_status(dev) < B43legacy_STAT_INITIALIZED) {
err = b43legacy_wireless_core_init(dev);
if (err)
if (err) {
do_rfkill_exit = 1;
goto out_mutex_unlock;
}
did_init = 1;
}

Expand All @@ -3240,13 +3243,17 @@ static int b43legacy_op_start(struct ieee80211_hw *hw)
if (err) {
if (did_init)
b43legacy_wireless_core_exit(dev);
do_rfkill_exit = 1;
goto out_mutex_unlock;
}
}

out_mutex_unlock:
mutex_unlock(&wl->mutex);

if (do_rfkill_exit)
b43legacy_rfkill_exit(dev);

return err;
}

Expand Down

0 comments on commit 8712f27

Please sign in to comment.