aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ppp_generic.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c
index 144375dea2de..0db38946bc0a 100644
--- a/drivers/net/ppp_generic.c
+++ b/drivers/net/ppp_generic.c
@@ -538,14 +538,9 @@ static int get_filter(void __user *arg, struct sock_filter **p)
538 } 538 }
539 539
540 len = uprog.len * sizeof(struct sock_filter); 540 len = uprog.len * sizeof(struct sock_filter);
541 code = kmalloc(len, GFP_KERNEL); 541 code = memdup_user(uprog.filter, len);
542 if (code == NULL) 542 if (IS_ERR(code))
543 return -ENOMEM; 543 return PTR_ERR(code);
544
545 if (copy_from_user(code, uprog.filter, len)) {
546 kfree(code);
547 return -EFAULT;
548 }
549 544
550 err = sk_chk_filter(code, uprog.len); 545 err = sk_chk_filter(code, uprog.len);
551 if (err) { 546 if (err) {