diff options
author | Pavel Roskin <proski@gnu.org> | 2005-09-23 04:18:06 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-09-23 04:36:13 -0400 |
commit | 8aeabc375041a5fe9c9be315472497b2e0547eed (patch) | |
tree | 27f79b27bc015596395c03ecd9c6ae72964fb322 /drivers | |
parent | f3cb4cc120177090b0ccc9fb20a12010de39ac8a (diff) |
[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')
-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) | |||
1112 | err = hermes_read_ltv(hw, IRQ_BAP, HERMES_RID_CURRENTBSSID, | 1112 | err = hermes_read_ltv(hw, IRQ_BAP, HERMES_RID_CURRENTBSSID, |
1113 | ETH_ALEN, NULL, wrqu.ap_addr.sa_data); | 1113 | ETH_ALEN, NULL, wrqu.ap_addr.sa_data); |
1114 | if (err != 0) | 1114 | if (err != 0) |
1115 | return; | 1115 | goto out; |
1116 | 1116 | ||
1117 | wrqu.ap_addr.sa_family = ARPHRD_ETHER; | 1117 | wrqu.ap_addr.sa_family = ARPHRD_ETHER; |
1118 | 1118 | ||
1119 | /* Send event to user space */ | 1119 | /* Send event to user space */ |
1120 | wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL); | 1120 | wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL); |
1121 | |||
1122 | out: | ||
1121 | orinoco_unlock(priv, &flags); | 1123 | orinoco_unlock(priv, &flags); |
1122 | } | 1124 | } |
1123 | 1125 | ||