diff options
author | Eliad Peller <eliad@wizery.com> | 2011-01-23 13:25:27 +0300 |
---|---|---|
committer | Luciano Coelho <coelho@ti.com> | 2011-01-25 00:15:11 +0300 |
commit | 8e2de74e781e696636e8b4cd08084d2b310d44d9 (patch) | |
tree | fcd5f1384c23920ed556ab0c202537899285acff | |
parent | bbba3e6832ad3e974fb593a98abe03f8b60fc7f3 (diff) | |
download | linux-8e2de74e781e696636e8b4cd08084d2b310d44d9.tar.xz |
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>
-rw-r--r-- | drivers/net/wireless/wl12xx/debugfs.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/net/wireless/wl12xx/debugfs.c b/drivers/net/wireless/wl12xx/debugfs.c index dc3ca0031817..bebfa28a171a 100644 --- a/drivers/net/wireless/wl12xx/debugfs.c +++ b/drivers/net/wireless/wl12xx/debugfs.c @@ -261,27 +261,25 @@ static ssize_t gpio_power_write(struct file *file, unsigned long value; int ret; - mutex_lock(&wl->mutex); - len = min(count, sizeof(buf) - 1); if (copy_from_user(buf, user_buf, len)) { - ret = -EFAULT; - goto out; + return -EFAULT; } buf[len] = '\0'; ret = strict_strtoul(buf, 0, &value); if (ret < 0) { wl1271_warning("illegal value in gpio_power"); - goto out; + return -EINVAL; } + mutex_lock(&wl->mutex); + if (value) wl1271_power_on(wl); else wl1271_power_off(wl); -out: mutex_unlock(&wl->mutex); return count; } |