diff options
Diffstat (limited to 'fs/cachefiles/daemon.c')
| -rw-r--r-- | fs/cachefiles/daemon.c | 12 | 
1 files changed, 3 insertions, 9 deletions
diff --git a/fs/cachefiles/daemon.c b/fs/cachefiles/daemon.c index f601def05bdf..452e98dd7560 100644 --- a/fs/cachefiles/daemon.c +++ b/fs/cachefiles/daemon.c @@ -226,15 +226,9 @@ static ssize_t cachefiles_daemon_write(struct file *file,  		return -EOPNOTSUPP;  	/* drag the command string into the kernel so we can parse it */ -	data = kmalloc(datalen + 1, GFP_KERNEL); -	if (!data) -		return -ENOMEM; - -	ret = -EFAULT; -	if (copy_from_user(data, _data, datalen) != 0) -		goto error; - -	data[datalen] = '\0'; +	data = memdup_user_nul(_data, datalen); +	if (IS_ERR(data)) +		return PTR_ERR(data);  	ret = -EINVAL;  	if (memchr(data, '\0', datalen))  | 
