media: v4l: ioctl: Use kmalloc to allocate a small chunk of memory
authorSakari Ailus <sakari.ailus@linux.intel.com>
Sun, 20 Dec 2020 20:17:17 +0000 (21:17 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 12 Jan 2021 16:06:58 +0000 (17:06 +0100)
kvmalloc() was used to allocate the temporary memory buffer that was used
to contain both the IOCTL argument as well as a possible array argument
that could have been large. Now that the two are separated, the IOCTL
argument is known to be small in size. Use kmalloc to allocate it instead
of kvmalloc. Similarly for releasing it.

Suggested-by: Arnd Bergmann <arnd@kernel.org>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/v4l2-core/v4l2-ioctl.c

index 9906b41004e9bd304e042682580057c95593f113..8d5d9c39c162263be7ac4fa33176b266a91cbd84 100644 (file)
@@ -3300,7 +3300,7 @@ video_usercopy(struct file *file, unsigned int orig_cmd, unsigned long arg,
                        parg = sbuf;
                } else {
                        /* too big to allocate from stack */
-                       mbuf = kvmalloc(ioc_size, GFP_KERNEL);
+                       mbuf = kmalloc(ioc_size, GFP_KERNEL);
                        if (NULL == mbuf)
                                return -ENOMEM;
                        parg = mbuf;
@@ -3377,7 +3377,7 @@ out_array_args:
                err = -EFAULT;
 out:
        kvfree(array_buf);
-       kvfree(mbuf);
+       kfree(mbuf);
        return err;
 }