[PATCH] orinoco: orinoco_send_wevents() could return without unlocking.
authorPavel Roskin <proski@gnu.org>
Fri, 23 Sep 2005 08:18:06 +0000 (04:18 -0400)
committerJeff Garzik <jgarzik@pobox.com>
Fri, 23 Sep 2005 08:36:13 +0000 (04:36 -0400)
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>
drivers/net/wireless/orinoco.c

index 8b93b44291d48cab229bf6b30b0506b8608d2f72..29cb5d81b67ef90b3d19eac17add2fa2c4364cb9 100644 (file)
@@ -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);
 }