summaryrefslogtreecommitdiffstats
path: root/drivers/input/joydev.c
diff options
context:
space:
mode:
authorJavier Martinez Canillas <javier@osg.samsung.com>2015-10-02 11:12:53 -0700
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2015-10-02 11:44:16 -0700
commit5702222c9a7af4a207066d54aa95cfe31f34f2f8 (patch)
tree4e81af9337a13eb55af535cbb028ac6a9b52bf8e /drivers/input/joydev.c
parentaaa59e0911f5624663217c248cfa7cc1c2e33e08 (diff)
downloadlinux-5702222c9a7af4a207066d54aa95cfe31f34f2f8.tar.bz2
Input: joydev - use memdup_user() to duplicate memory from user-space
The memdup_user() helper function can be used to duplicate a memory region from user-space to kernel-space. There is no need to open code the same logic using kmalloc() and copy_from_user() instead. This was found with make coccicheck that reported the following warning: drivers/input/joydev.c:447:10-17: WARNING opportunity for memdup_user drivers/input/joydev.c:483:10-17: WARNING opportunity for memdup_user Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers/input/joydev.c')
-rw-r--r--drivers/input/joydev.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/drivers/input/joydev.c b/drivers/input/joydev.c
index 6cb5a3e5f9a1..e3dcd4abae18 100644
--- a/drivers/input/joydev.c
+++ b/drivers/input/joydev.c
@@ -444,12 +444,9 @@ static int joydev_handle_JSIOCSAXMAP(struct joydev *joydev,
len = min(len, sizeof(joydev->abspam));
/* Validate the map. */
- abspam = kmalloc(len, GFP_KERNEL);
- if (!abspam)
- return -ENOMEM;
-
- if (copy_from_user(abspam, argp, len)) {
- retval = -EFAULT;
+ abspam = memdup_user(argp, len);
+ if (IS_ERR(abspam)) {
+ retval = PTR_ERR(abspam);
goto out;
}
@@ -480,12 +477,9 @@ static int joydev_handle_JSIOCSBTNMAP(struct joydev *joydev,
len = min(len, sizeof(joydev->keypam));
/* Validate the map. */
- keypam = kmalloc(len, GFP_KERNEL);
- if (!keypam)
- return -ENOMEM;
-
- if (copy_from_user(keypam, argp, len)) {
- retval = -EFAULT;
+ keypam = memdup_user(argp, len);
+ if (IS_ERR(keypam)) {
+ retval = PTR_ERR(keypam);
goto out;
}