From: Jeff Mahoney <jeffm@suse.com>
Subject: dl2k: Tighten ioctl permissions
Patch-mainline: Never, fixed differently
X-Commit-Note: Upstream commit 1bb57e940e1958e40d51f2078f50c3a96a9b2d75
References: bnc#758813

 dl2k's rio_ioctl function defines several ioctls that involve
 operations that should be denied to regular users.

 SIOCDEVPRIVATE + 2 is a renumbered SIOCSMIIREG.
 SIOCDEVPRIVATE + 5 calls netif_stop_queue.
 SIOCDEVPRIVATE + 6 calls netif_wake_queue.

Reported-by: Stephan Mueller <stephan.mueller@atsec.com>
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
---

 drivers/net/dl2k.c |    8 ++++++++
 1 file changed, 8 insertions(+)

--- a/drivers/net/dl2k.c
+++ b/drivers/net/dl2k.c
@@ -1264,6 +1264,14 @@ rio_ioctl (struct net_device *dev, struc
 	struct netdev_desc *desc;
 	int i;
 
+	switch (cmd) {
+	case SIOCDEVPRIVATE + 2:
+	case SIOCDEVPRIVATE + 5:
+	case SIOCDEVPRIVATE + 6:
+		if (!capable(CAP_NET_ADMIN))
+			return -EPERM;
+	};
+
 	phy_addr = np->phy_addr;
 	switch (cmd) {
 	case SIOCDEVPRIVATE:
