]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
block: floppy: Replace kmalloc() + copy_from_user() with memdup_user()
authorThorsten Blum <thorsten.blum@linux.dev>
Mon, 8 Sep 2025 20:10:20 +0000 (22:10 +0200)
committerJens Axboe <axboe@kernel.dk>
Tue, 9 Sep 2025 15:10:58 +0000 (09:10 -0600)
Replace kmalloc() followed by copy_from_user() with memdup_user() to
improve and simplify raw_cmd_copyin().

No functional changes intended.

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/floppy.c

index ae8d598ee3175c215062d55ce18435a0b19d92fa..5336c3c5ca362de9c87515e11d090545b219fc31 100644 (file)
@@ -3090,16 +3090,13 @@ static int raw_cmd_copyin(int cmd, void __user *param,
        *rcmd = NULL;
 
 loop:
-       ptr = kmalloc(sizeof(struct floppy_raw_cmd), GFP_KERNEL);
-       if (!ptr)
-               return -ENOMEM;
+       ptr = memdup_user(param, sizeof(*ptr));
+       if (IS_ERR(ptr))
+               return PTR_ERR(ptr);
        *rcmd = ptr;
-       ret = copy_from_user(ptr, param, sizeof(*ptr));
        ptr->next = NULL;
        ptr->buffer_length = 0;
        ptr->kernel_data = NULL;
-       if (ret)
-               return -EFAULT;
        param += sizeof(struct floppy_raw_cmd);
        if (ptr->cmd_count > FD_RAW_CMD_FULLSIZE)
                return -EINVAL;