Skip to content

Commit

Permalink
Staging: rtl8712: Use memdup_user() instead of copy_from_user()
Browse files Browse the repository at this point in the history
Use memdup_user() to avoid its duplicated implementation and simplify
code. memdup_user() uses GFP_KERNEL instead of GFP_ATOMIC,
which is valid because copy_from_user() might sleep and it's useless
to make the allocation atomic. Found with coccinelle.

Signed-off-by: Cristina Opriceana <cristina.opriceana@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Cristina Opriceana authored and Greg Kroah-Hartman committed Apr 1, 2015
1 parent 66687e6 commit 45de432
Showing 1 changed file with 3 additions and 7 deletions.
10 changes: 3 additions & 7 deletions drivers/staging/rtl8712/rtl871x_ioctl_linux.c
Original file line number Diff line number Diff line change
Expand Up @@ -1912,13 +1912,9 @@ static int r871x_mp_ioctl_hdl(struct net_device *dev,
bset = (u8)(p->flags & 0xFFFF);
len = p->length;
pparmbuf = NULL;
pparmbuf = kmalloc(len, GFP_ATOMIC);
if (pparmbuf == NULL) {
ret = -ENOMEM;
goto _r871x_mp_ioctl_hdl_exit;
}
if (copy_from_user(pparmbuf, p->pointer, len)) {
ret = -EFAULT;
pparmbuf = memdup_user(p->pointer, len);
if (IS_ERR(pparmbuf)) {
ret = PTR_ERR(pparmbuf);
goto _r871x_mp_ioctl_hdl_exit;
}
poidparam = (struct mp_ioctl_param *)pparmbuf;
Expand Down

0 comments on commit 45de432

Please sign in to comment.