[PATCH] orinoco: Fix memory leak and unneeded unlock in orinoco_join_ap()
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>
Fix memory leak and unneeded unlock in orinoco_join_ap()

If orinoco_lock() fails, the code would still run orinoco_unlock(),
instead of freeing the allocated memory.  Found by sparse.
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
drivers/net/wireless/orinoco.c

index f76fe3d..8b93b44 100644 (file)
@@ -1046,7 +1046,7 @@ static void orinoco_join_ap(struct net_device *dev)
                return;
 
        if (orinoco_lock(priv, &flags) != 0)
-               goto out;
+               goto fail_lock;
 
        /* Sanity checks in case user changed something in the meantime */
        if (! priv->bssid_fixed)
@@ -1091,8 +1091,10 @@ static void orinoco_join_ap(struct net_device *dev)
                printk(KERN_ERR "%s: Error issuing join request\n", dev->name);
 
  out:
-       kfree(buf);
        orinoco_unlock(priv, &flags);
+
+ fail_lock:
+       kfree(buf);
 }
 
 /* Send new BSSID to userspace */