diff
--- a/drivers/net/ethernet/broadcom/bnx2x/bnad/bnad_debugfs.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnad/bnad_debugfs.c
@@ -13,5 +13,13 @@
 	size_t cnt;
 	void *kern_buf;
 
-	kern_buf = memdup_user(buf, nbytes);
+	kern_buf = kmalloc(nbytes, GFP_KERNEL);
+	if (!kern_buf) {
+		return -ENOMEM;
+	}
+	if (copy_from_user(kern_buf, buf, nbytes)) {
+		kfree(kern_buf);
+		return -EFAULT;
+	}
 	if (IS_ERR(kern_buf))

