diff options
author | Eliad Peller <eliad@wizery.com> | 2011-01-23 05:25:27 -0500 |
---|---|---|
committer | Luciano Coelho <coelho@ti.com> | 2011-01-24 16:15:11 -0500 |
commit | 8e2de74e781e696636e8b4cd08084d2b310d44d9 (patch) | |
tree | fcd5f1384c23920ed556ab0c202537899285acff /drivers/net/wireless/wl12xx/debugfs.c | |
parent | bbba3e6832ad3e974fb593a98abe03f8b60fc7f3 (diff) |
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>
Diffstat (limited to 'drivers/net/wireless/wl12xx/debugfs.c')
-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, | |||
261 | unsigned long value; | 261 | unsigned long value; |
262 | int ret; | 262 | int ret; |
263 | 263 | ||
264 | mutex_lock(&wl->mutex); | ||
265 | |||
266 | len = min(count, sizeof(buf) - 1); | 264 | len = min(count, sizeof(buf) - 1); |
267 | if (copy_from_user(buf, user_buf, len)) { | 265 | if (copy_from_user(buf, user_buf, len)) { |
268 | ret = -EFAULT; | 266 | return -EFAULT; |
269 | goto out; | ||
270 | } | 267 | } |
271 | buf[len] = '\0'; | 268 | buf[len] = '\0'; |
272 | 269 | ||
273 | ret = strict_strtoul(buf, 0, &value); | 270 | ret = strict_strtoul(buf, 0, &value); |
274 | if (ret < 0) { | 271 | if (ret < 0) { |
275 | wl1271_warning("illegal value in gpio_power"); | 272 | wl1271_warning("illegal value in gpio_power"); |
276 | goto out; | 273 | return -EINVAL; |
277 | } | 274 | } |
278 | 275 | ||
276 | mutex_lock(&wl->mutex); | ||
277 | |||
279 | if (value) | 278 | if (value) |
280 | wl1271_power_on(wl); | 279 | wl1271_power_on(wl); |
281 | else | 280 | else |
282 | wl1271_power_off(wl); | 281 | wl1271_power_off(wl); |
283 | 282 | ||
284 | out: | ||
285 | mutex_unlock(&wl->mutex); | 283 | mutex_unlock(&wl->mutex); |
286 | return count; | 284 | return count; |
287 | } | 285 | } |