Browse Source

wl12xx: wrong values are returned in gpio_power_write()

Return values were assigned to incorrect var / weren't assigned.
fix it, and defer mutex_lock after the sanity checks.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Eliad Peller 14 years ago
parent
commit
8e2de74e78
1 changed files with 4 additions and 6 deletions
  1. 4 6
      drivers/net/wireless/wl12xx/debugfs.c

+ 4 - 6
drivers/net/wireless/wl12xx/debugfs.c

@@ -261,27 +261,25 @@ static ssize_t gpio_power_write(struct file *file,
 	unsigned long value;
 	unsigned long value;
 	int ret;
 	int ret;
 
 
-	mutex_lock(&wl->mutex);
-
 	len = min(count, sizeof(buf) - 1);
 	len = min(count, sizeof(buf) - 1);
 	if (copy_from_user(buf, user_buf, len)) {
 	if (copy_from_user(buf, user_buf, len)) {
-		ret = -EFAULT;
-		goto out;
+		return -EFAULT;
 	}
 	}
 	buf[len] = '\0';
 	buf[len] = '\0';
 
 
 	ret = strict_strtoul(buf, 0, &value);
 	ret = strict_strtoul(buf, 0, &value);
 	if (ret < 0) {
 	if (ret < 0) {
 		wl1271_warning("illegal value in gpio_power");
 		wl1271_warning("illegal value in gpio_power");
-		goto out;
+		return -EINVAL;
 	}
 	}
 
 
+	mutex_lock(&wl->mutex);
+
 	if (value)
 	if (value)
 		wl1271_power_on(wl);
 		wl1271_power_on(wl);
 	else
 	else
 		wl1271_power_off(wl);
 		wl1271_power_off(wl);
 
 
-out:
 	mutex_unlock(&wl->mutex);
 	mutex_unlock(&wl->mutex);
 	return count;
 	return count;
 }
 }