diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2010-03-10 17:13:36 +0100 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-03-10 16:29:11 -0500 |
commit | 51f5f8ca446d4c59041b9b6995821e13208897ea (patch) | |
tree | 871e000936610452e975788cce836e7253b477e3 /net/mac80211 | |
parent | 2a13052fe495948e572839e514e0e0cd236c50b0 (diff) | |
download | blackbird-op-linux-51f5f8ca446d4c59041b9b6995821e13208897ea.tar.gz blackbird-op-linux-51f5f8ca446d4c59041b9b6995821e13208897ea.zip |
mac80211: Fix memory leak in ieee80211_if_write()
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>
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/debugfs_netdev.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/net/mac80211/debugfs_netdev.c b/net/mac80211/debugfs_netdev.c index 9affe2cd185f..b4ddb2f83914 100644 --- a/net/mac80211/debugfs_netdev.c +++ b/net/mac80211/debugfs_netdev.c @@ -48,20 +48,24 @@ static ssize_t ieee80211_if_write( 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; } |