Use memdup_user() helper instead of open-coding to simplify the code.

Signed-off-by: Geliang Tang <geliangt...@gmail.com>
---
 arch/powerpc/platforms/powernv/opal-prd.c | 13 +++----------
 1 file changed, 3 insertions(+), 10 deletions(-)

diff --git a/arch/powerpc/platforms/powernv/opal-prd.c 
b/arch/powerpc/platforms/powernv/opal-prd.c
index 2d6ee1c..de4dd09 100644
--- a/arch/powerpc/platforms/powernv/opal-prd.c
+++ b/arch/powerpc/platforms/powernv/opal-prd.c
@@ -241,15 +241,9 @@ static ssize_t opal_prd_write(struct file *file, const 
char __user *buf,
 
        size = be16_to_cpu(hdr.size);
 
-       msg = kmalloc(size, GFP_KERNEL);
-       if (!msg)
-               return -ENOMEM;
-
-       rc = copy_from_user(msg, buf, size);
-       if (rc) {
-               size = -EFAULT;
-               goto out_free;
-       }
+       msg = memdup_user(buf, size);
+       if (IS_ERR(msg))
+               return PTR_ERR(msg);
 
        rc = opal_prd_msg(msg);
        if (rc) {
@@ -257,7 +251,6 @@ static ssize_t opal_prd_write(struct file *file, const char 
__user *buf,
                size = -EIO;
        }
 
-out_free:
        kfree(msg);
 
        return size;
-- 
2.9.3

Reply via email to