diff options
Diffstat (limited to 'fs/sysfs/bin.c')
| -rw-r--r-- | fs/sysfs/bin.c | 13 | 
1 files changed, 3 insertions, 10 deletions
diff --git a/fs/sysfs/bin.c b/fs/sysfs/bin.c index 93e0c0281d4..9345806c885 100644 --- a/fs/sysfs/bin.c +++ b/fs/sysfs/bin.c @@ -157,14 +157,9 @@ static ssize_t write(struct file *file, const char __user *userbuf,  			count = size - offs;  	} -	temp = kmalloc(count, GFP_KERNEL); -	if (!temp) -		return -ENOMEM; - -	if (copy_from_user(temp, userbuf, count)) { -		count = -EFAULT; -		goto out_free; -	} +	temp = memdup_user(userbuf, count); +	if (IS_ERR(temp)) +		return PTR_ERR(temp);  	mutex_lock(&bb->mutex); @@ -176,8 +171,6 @@ static ssize_t write(struct file *file, const char __user *userbuf,  	if (count > 0)  		*off = offs + count; -out_free: -	kfree(temp);  	return count;  }  | 
