diff options
author | Thorsten Blum <thorsten.blum@linux.dev> | 2025-09-18 17:08:10 +0200 |
---|---|---|
committer | Mike Marshall <hubcap@omnibond.com> | 2025-09-30 10:23:24 -0400 |
commit | 11f6bce77e27e82015a0d044e6c1eec8b139831a (patch) | |
tree | cb9ca304f5b583ad4d39356fb93c760bf107bfdc /fs | |
parent | 025e880759c279ec64d0f754fe65bf45961da864 (diff) |
fs/orangefs: Replace kzalloc + copy_from_user with memdup_user_nul
Replace kzalloc() followed by copy_from_user() with memdup_user_nul() to
simplify and improve orangefs_debug_write(). Allocate only 'count' bytes
instead of the maximum size ORANGEFS_MAX_DEBUG_STRING_LEN, and set 'buf'
to NULL to ensure kfree(buf) still works.
No functional changes intended.
Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Signed-off-by: Mike Marshall <hubcap@omnibond.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/orangefs/orangefs-debugfs.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/fs/orangefs/orangefs-debugfs.c b/fs/orangefs/orangefs-debugfs.c index 1c375fb65018..79267b3419f2 100644 --- a/fs/orangefs/orangefs-debugfs.c +++ b/fs/orangefs/orangefs-debugfs.c @@ -440,14 +440,13 @@ static ssize_t orangefs_debug_write(struct file *file, count = ORANGEFS_MAX_DEBUG_STRING_LEN; } - buf = kzalloc(ORANGEFS_MAX_DEBUG_STRING_LEN, GFP_KERNEL); - if (!buf) - goto out; - - if (copy_from_user(buf, ubuf, count - 1)) { + buf = memdup_user_nul(ubuf, count - 1); + if (IS_ERR(buf)) { gossip_debug(GOSSIP_DEBUGFS_DEBUG, - "%s: copy_from_user failed!\n", + "%s: memdup_user_nul failed!\n", __func__); + rc = PTR_ERR(buf); + buf = NULL; goto out; } |