bc765bf3b9a "wl12xx: 1281/1283 support - Loading FW & NVS" had two
problems. The condition was written so that it failed if "len" was
not equal to sizeof(struct wl1271_nvs_file). Also we need to release
the locks on these new error paths.
Signed-off-by: Dan Carpenter <redacted>
diff --git a/drivers/net/wireless/wl12xx/testmode.c b/drivers/net/wireless/wl12xx/testmode.c
index 88add68..10c1762 100644
--- a/drivers/net/wireless/wl12xx/testmode.c
+++ b/drivers/net/wireless/wl12xx/testmode.c
@@ -208,11 +208,17 @@ static int wl1271_tm_cmd_nvs_push(struct wl1271 *wl, struct nlattr *tb[])
kfree(wl->nvs);
- if ((wl->chip.id == CHIP_ID_1283_PG20) &&
- (len != sizeof(struct wl128x_nvs_file)))
- return -EINVAL;
- else if (len != sizeof(struct wl1271_nvs_file))
- return -EINVAL;
+ if (wl->chip.id == CHIP_ID_1283_PG20) {
+ if (len != sizeof(struct wl128x_nvs_file)) {
+ ret = -EINVAL;
+ goto out;
+ }
+ } else {
+ if (len != sizeof(struct wl1271_nvs_file)) {
+ ret = -EINVAL;
+ goto out;
+ }
+ }
wl->nvs = kzalloc(len, GFP_KERNEL);
if (!wl->nvs) {