]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
s390/debug: Replace kmalloc() + copy_from_user() with memdup_user_nul()
authorThorsten Blum <thorsten.blum@linux.dev>
Thu, 4 Sep 2025 11:40:29 +0000 (13:40 +0200)
committerAlexander Gordeev <agordeev@linux.ibm.com>
Tue, 9 Sep 2025 13:03:12 +0000 (15:03 +0200)
Replace kmalloc() followed by copy_from_user() with memdup_user_nul() to
improve and simplify debug_get_user_string(). Remove the manual
NUL-termination.

No functional changes intended.

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
arch/s390/kernel/debug.c

index c62100dc62c8dffa862b789398e9eb2661a87358..6a26f202441d3a8090419bf379adc2b7cac3870b 100644 (file)
@@ -1416,18 +1416,12 @@ static inline char *debug_get_user_string(const char __user *user_buf,
 {
        char *buffer;
 
-       buffer = kmalloc(user_len + 1, GFP_KERNEL);
-       if (!buffer)
-               return ERR_PTR(-ENOMEM);
-       if (copy_from_user(buffer, user_buf, user_len) != 0) {
-               kfree(buffer);
-               return ERR_PTR(-EFAULT);
-       }
+       buffer = memdup_user_nul(user_buf, user_len);
+       if (IS_ERR(buffer))
+               return buffer;
        /* got the string, now strip linefeed. */
        if (buffer[user_len - 1] == '\n')
                buffer[user_len - 1] = 0;
-       else
-               buffer[user_len] = 0;
        return buffer;
 }