diff options
Diffstat (limited to 'lib/dynamic_debug.c')
| -rw-r--r-- | lib/dynamic_debug.c | 11 | 
1 files changed, 3 insertions, 8 deletions
| diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index e3952e9c8ec0..fe42b6ec3f0c 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -657,14 +657,9 @@ static ssize_t ddebug_proc_write(struct file *file, const char __user *ubuf,  		pr_warn("expected <%d bytes into control\n", USER_BUF_PAGE);  		return -E2BIG;  	} -	tmpbuf = kmalloc(len + 1, GFP_KERNEL); -	if (!tmpbuf) -		return -ENOMEM; -	if (copy_from_user(tmpbuf, ubuf, len)) { -		kfree(tmpbuf); -		return -EFAULT; -	} -	tmpbuf[len] = '\0'; +	tmpbuf = memdup_user_nul(ubuf, len); +	if (IS_ERR(tmpbuf)) +		return PTR_ERR(tmpbuf);  	vpr_info("read %d bytes from userspace\n", (int)len);  	ret = ddebug_exec_queries(tmpbuf, NULL); | 
