From: Andy Shevchenko Date: Mon, 11 May 2020 12:54:14 +0000 (+0300) Subject: platform/x86: thinkpad_acpi: Use strndup_user() in dispatch_proc_write() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=35d13c7a05126a5a54a1ef40aff4c6984474e604;p=linux.git platform/x86: thinkpad_acpi: Use strndup_user() in dispatch_proc_write() Simplify the user copy code by using strndup_user(). Signed-off-by: Andy Shevchenko --- diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c index 6fb540d02dac8..bf651b850faa2 100644 --- a/drivers/platform/x86/thinkpad_acpi.c +++ b/drivers/platform/x86/thinkpad_acpi.c @@ -885,19 +885,11 @@ static ssize_t dispatch_proc_write(struct file *file, if (!ibm || !ibm->write) return -EINVAL; - if (count > PAGE_SIZE - 1) - return -EINVAL; - - kernbuf = kmalloc(count + 1, GFP_KERNEL); - if (!kernbuf) - return -ENOMEM; - if (copy_from_user(kernbuf, userbuf, count)) { - kfree(kernbuf); - return -EFAULT; - } + kernbuf = strndup_user(userbuf, PAGE_SIZE); + if (IS_ERR(kernbuf)) + return PTR_ERR(kernbuf); - kernbuf[count] = 0; ret = ibm->write(kernbuf); if (ret == 0) ret = count;