Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 45de4327 authored by Cristina Opriceana's avatar Cristina Opriceana Committed by Greg Kroah-Hartman
Browse files

Staging: rtl8712: Use memdup_user() instead of copy_from_user()



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: default avatarCristina Opriceana <cristina.opriceana@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 66687e6a
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -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;