aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/orinoco.c
diff options
context:
space:
mode:
authorPavel Roskin <proski@gnu.org>2005-09-23 04:18:06 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-09-23 04:36:13 -0400
commit8aeabc375041a5fe9c9be315472497b2e0547eed (patch)
tree27f79b27bc015596395c03ecd9c6ae72964fb322 /drivers/net/wireless/orinoco.c
parentf3cb4cc120177090b0ccc9fb20a12010de39ac8a (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/net/wireless/orinoco.c')
-rw-r--r--drivers/net/wireless/orinoco.c4
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