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
commitf3cb4cc120177090b0ccc9fb20a12010de39ac8a (patch)
tree368c76f705f9512f5016288b607e3a0e4b36d54d /drivers/net/wireless/orinoco.c
parent4c08202547111e503eca4031ae9443159a79e2b2 (diff)
[PATCH] orinoco: Fix memory leak and unneeded unlock in orinoco_join_ap()
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>
Diffstat (limited to 'drivers/net/wireless/orinoco.c')
-rw-r--r--drivers/net/wireless/orinoco.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/wireless/orinoco.c b/drivers/net/wireless/orinoco.c
index f76fe3d10248..8b93b44291d4 100644
--- a/drivers/net/wireless/orinoco.c
+++ b/drivers/net/wireless/orinoco.c
@@ -1046,7 +1046,7 @@ static void orinoco_join_ap(struct net_device *dev)
1046 return; 1046 return;
1047 1047
1048 if (orinoco_lock(priv, &flags) != 0) 1048 if (orinoco_lock(priv, &flags) != 0)
1049 goto out; 1049 goto fail_lock;
1050 1050
1051 /* Sanity checks in case user changed something in the meantime */ 1051 /* Sanity checks in case user changed something in the meantime */
1052 if (! priv->bssid_fixed) 1052 if (! priv->bssid_fixed)
@@ -1091,8 +1091,10 @@ static void orinoco_join_ap(struct net_device *dev)
1091 printk(KERN_ERR "%s: Error issuing join request\n", dev->name); 1091 printk(KERN_ERR "%s: Error issuing join request\n", dev->name);
1092 1092
1093 out: 1093 out:
1094 kfree(buf);
1095 orinoco_unlock(priv, &flags); 1094 orinoco_unlock(priv, &flags);
1095
1096 fail_lock:
1097 kfree(buf);
1096} 1098}
1097 1099
1098/* Send new BSSID to userspace */ 1100/* Send new BSSID to userspace */