diff options
author | Pavel Roskin <proski@gnu.org> | 2005-09-23 10:18:06 +0200 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-09-23 10:36:13 +0200 |
commit | 8aeabc375041a5fe9c9be315472497b2e0547eed (patch) | |
tree | 27f79b27bc015596395c03ecd9c6ae72964fb322 /drivers/net/wireless | |
parent | [PATCH] orinoco: Fix memory leak and unneeded unlock in orinoco_join_ap() (diff) | |
download | linux-8aeabc375041a5fe9c9be315472497b2e0547eed.tar.xz linux-8aeabc375041a5fe9c9be315472497b2e0547eed.zip |
[PATCH] orinoco: orinoco_send_wevents() could return without unlocking.
Signed-off-by: Pavel Roskin <proski@gnu.org>
orinoco_send_wevents() could return without unlocking.
Failure to read BSSID from the hardware would cause orinoco_send_wevents() to
return with lock held. Found by sparse.
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/orinoco.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/wireless/orinoco.c b/drivers/net/wireless/orinoco.c index 8b93b44291d4..29cb5d81b67e 100644 --- a/drivers/net/wireless/orinoco.c +++ b/drivers/net/wireless/orinoco.c @@ -1112,12 +1112,14 @@ static void orinoco_send_wevents(struct net_device *dev) err = hermes_read_ltv(hw, IRQ_BAP, HERMES_RID_CURRENTBSSID, ETH_ALEN, NULL, wrqu.ap_addr.sa_data); if (err != 0) - return; + goto out; wrqu.ap_addr.sa_family = ARPHRD_ETHER; /* Send event to user space */ wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL); + + out: orinoco_unlock(priv, &flags); } |