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 + 1, GFP_KERNEL); // +1 for null-termination
+	if (!kern_buf)
+		return -ENOMEM;
+
+	if (strncpy_from_user(kern_buf, buf, nbytes) < 0) {
+		kfree(kern_buf);
+		return -EFAULT;
+	}
+	((char *)kern_buf)[nbytes] = '\0'; // Ensure null-termination
 	if (IS_ERR(kern_buf))

