Fix memory leak and use kmalloc() instead of kzalloc() as we are going
to overwrite the allocated buffer.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
        ssize_t (*write)(struct ieee80211_sub_if_data *, const char *, int))
 {
        u8 *buf;
-       ssize_t ret = -ENODEV;
+       ssize_t ret;
 
-       buf = kzalloc(count, GFP_KERNEL);
+       buf = kmalloc(count, GFP_KERNEL);
        if (!buf)
                return -ENOMEM;
 
+       ret = -EFAULT;
        if (copy_from_user(buf, userbuf, count))
-               return -EFAULT;
+               goto freebuf;
 
+       ret = -ENODEV;
        rtnl_lock();
        if (sdata->dev->reg_state == NETREG_REGISTERED)
                ret = (*write)(sdata, buf, count);
        rtnl_unlock();
 
+freebuf:
+       kfree(buf);
        return ret;
 }