Subject: [PATCH] cxgb3: Use CAP_SYS_RAWIO for firmware

From: Alan Cox <[email-masked]>
Date: Tue, 29 Apr 2008 14:29:30 +0100

Otherwise theoretically at least

	CAP_NET_ADMIN
	Reload new firmware
	Wait..
	Firmware patches kernel

So it should be CAY_SYS_RAWIO - not that I suspect this is in fact a
credible attack vector!

Signed-off-by: Alan Cox <[email-masked]>

diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.25-mm1/drivers/net/cxgb3/cxgb3_main.c linux-2.6.25-mm1/drivers/net/cxgb3/cxgb3_main.c
--- linux.vanilla-2.6.25-mm1/drivers/net/cxgb3/cxgb3_main.c	2008-04-28 11:36:42.000000000 +0100
+++ linux-2.6.25-mm1/drivers/net/cxgb3/cxgb3_main.c	2008-04-18 17:14:44.000000000 +0100
@@ -1894,11 +1894,11 @@
 		u8 *fw_data;
 		struct ch_mem_range t;
 
-		if (!capable(CAP_NET_ADMIN))
+		if (!capable(CAP_SYS_RAWIO))
 			return -EPERM;
 		if (copy_from_user(&t, useraddr, sizeof(t)))
 			return -EFAULT;
-
+		/* Check t.len sanity ? */
 		fw_data = kmalloc(t.len, GFP_KERNEL);
 		if (!fw_data)
 			return -ENOMEM;