ath10k: fix possible memory leak in new FW loading
authorMichal Kazior <michal.kazior@tieto.com>
Fri, 4 Oct 2013 06:13:20 +0000 (08:13 +0200)
committerKalle Valo <kvalo@qca.qualcomm.com>
Tue, 8 Oct 2013 12:13:53 +0000 (15:13 +0300)
Some failpaths did `return` instead of a `goto`
leaking requested firmware.

Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/core.c

index bf85d34e51c487fe7f51cc2a0042572e0f5b43d0..5acb4048b008af886d8ade971fef201dbc781ea2 100644 (file)
@@ -404,12 +404,14 @@ static int ath10k_core_fetch_firmware_api_n(struct ath10k *ar, const char *name)
        if (len < magic_len) {
                ath10k_err("firmware image too small to contain magic: %zu\n",
                           len);
-               return -EINVAL;
+               ret = -EINVAL;
+               goto err;
        }
 
        if (memcmp(data, ATH10K_FIRMWARE_MAGIC, magic_len) != 0) {
                ath10k_err("Invalid firmware magic\n");
-               return -EINVAL;
+               ret = -EINVAL;
+               goto err;
        }
 
        /* jump over the padding */
@@ -431,7 +433,8 @@ static int ath10k_core_fetch_firmware_api_n(struct ath10k *ar, const char *name)
                if (len < ie_len) {
                        ath10k_err("Invalid length for FW IE %d (%zu < %zu)\n",
                                   ie_id, len, ie_len);
-                       return -EINVAL;
+                       ret = -EINVAL;
+                       goto err;
                }
 
                switch (ie_id) {