diff options
Diffstat (limited to 'net/mac80211/debugfs_netdev.c')
| -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 ee61a9f6fab..623e6644b80 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;  }  |