wil6210: Fix potential memory leaks on error paths
authorLino Sanfilippo <LinoSanfilippo@gmx.de>
Fri, 28 Nov 2014 01:47:19 +0000 (02:47 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 1 Dec 2014 20:57:20 +0000 (15:57 -0500)
Fix missing memory deallocation on error paths in wil_write_file_wmi()
and wil_write_file_txmgmt().

Reported-by: Ahmed Tamrawi <ahmedtamrawi@gmail.com>
Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de>
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/wil6210/debugfs.c

index 54a6ddc6301bcabe3c48784e850033c6a170410e..4e6e14501c2f5e654be41bbadae02ffcfc1c166f 100644 (file)
@@ -573,8 +573,10 @@ static ssize_t wil_write_file_txmgmt(struct file *file, const char __user *buf,
        if (!frame)
                return -ENOMEM;
 
-       if (copy_from_user(frame, buf, len))
+       if (copy_from_user(frame, buf, len)) {
+               kfree(frame);
                return -EIO;
+       }
 
        params.buf = frame;
        params.len = len;
@@ -614,8 +616,10 @@ static ssize_t wil_write_file_wmi(struct file *file, const char __user *buf,
                return -ENOMEM;
 
        rc = simple_write_to_buffer(wmi, len, ppos, buf, len);
-       if (rc < 0)
+       if (rc < 0) {
+               kfree(wmi);
                return rc;
+       }
 
        cmd = &wmi[1];
        cmdid = le16_to_cpu(wmi->id);