[kernel] r19251 - in dists/squeeze-security/linux-2.6/debian: . patches/bugfix/all patches/series

Dann Frazier dannf at alioth.debian.org
Sat Jul 14 15:04:30 UTC 2012


Author: dannf
Date: Sat Jul 14 15:04:27 2012
New Revision: 19251

Log:
dl2k: Clean up rio_ioctl, add missing CAP_NET_ADMIN checks (CVE-2012-2313)

Added:
   dists/squeeze-security/linux-2.6/debian/patches/bugfix/all/dl2k-Clean-up-rio_ioctl.patch
   dists/squeeze-security/linux-2.6/debian/patches/bugfix/all/dl2k-use-standard-defines-from-mii.h.patch
Modified:
   dists/squeeze-security/linux-2.6/debian/changelog
   dists/squeeze-security/linux-2.6/debian/patches/series/45squeeze1

Modified: dists/squeeze-security/linux-2.6/debian/changelog
==============================================================================
--- dists/squeeze-security/linux-2.6/debian/changelog	Fri Jul 13 04:37:28 2012	(r19250)
+++ dists/squeeze-security/linux-2.6/debian/changelog	Sat Jul 14 15:04:27 2012	(r19251)
@@ -2,6 +2,7 @@
 
   * net: sock: validate data_len before allocating skb in
     sock_alloc_send_pskb() (CVE-2012-2136)
+  * dl2k: Clean up rio_ioctl, add missing CAP_NET_ADMIN checks (CVE-2012-2313)
 
  -- dann frazier <dannf at debian.org>  Tue, 12 Jun 2012 16:56:29 -0600
 

Added: dists/squeeze-security/linux-2.6/debian/patches/bugfix/all/dl2k-Clean-up-rio_ioctl.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-security/linux-2.6/debian/patches/bugfix/all/dl2k-Clean-up-rio_ioctl.patch	Sat Jul 14 15:04:27 2012	(r19251)
@@ -0,0 +1,115 @@
+commit 1bb57e940e1958e40d51f2078f50c3a96a9b2d75
+Author: Jeff Mahoney <jeffm at suse.com>
+Date:   Wed Apr 25 14:32:09 2012 +0000
+
+    dl2k: Clean up rio_ioctl
+    
+    The dl2k driver's rio_ioctl call has a few issues:
+    - No permissions checking
+    - Implements SIOCGMIIREG and SIOCGMIIREG using the SIOCDEVPRIVATE numbers
+    - Has a few ioctls that may have been used for debugging at one point
+      but have no place in the kernel proper.
+    
+    This patch removes all but the MII ioctls, renumbers them to use the
+    standard ones, and adds the proper permission check for SIOCSMIIREG.
+    
+    We can also get rid of the dl2k-specific struct mii_data in favor of
+    the generic struct mii_ioctl_data.
+    
+    Since we have the phyid on hand, we can add the SIOCGMIIPHY ioctl too.
+    
+    Most of the MII code for the driver could probably be converted to use
+    the generic MII library but I don't have a device to test the results.
+    
+    Reported-by: Stephan Mueller <stephan.mueller at atsec.com>
+    Signed-off-by: Jeff Mahoney <jeffm at suse.com>
+    Signed-off-by: David S. Miller <davem at davemloft.net>
+    [dannf: backported to Debian's 2.6.32]
+
+diff --git a/drivers/net/dl2k.c b/drivers/net/dl2k.c
+index 731ee85..c2f9313 100644
+--- a/drivers/net/dl2k.c
++++ b/drivers/net/dl2k.c
+@@ -1279,55 +1279,21 @@ rio_ioctl (struct net_device *dev, struct ifreq *rq, int cmd)
+ {
+ 	int phy_addr;
+ 	struct netdev_private *np = netdev_priv(dev);
+-	struct mii_data *miidata = (struct mii_data *) &rq->ifr_ifru;
+-
+-	struct netdev_desc *desc;
+-	int i;
++	struct mii_ioctl_data *miidata = if_mii(rq);
+ 
+ 	phy_addr = np->phy_addr;
+ 	switch (cmd) {
+-	case SIOCDEVPRIVATE:
+-		break;
+-
+-	case SIOCDEVPRIVATE + 1:
+-		miidata->out_value = mii_read (dev, phy_addr, miidata->reg_num);
++	case SIOCGMIIPHY:
++		miidata->phy_id = phy_addr;
+ 		break;
+-	case SIOCDEVPRIVATE + 2:
+-		mii_write (dev, phy_addr, miidata->reg_num, miidata->in_value);
++	case SIOCGMIIREG:
++		miidata->val_out = mii_read (dev, phy_addr, miidata->reg_num);
+ 		break;
+-	case SIOCDEVPRIVATE + 3:
+-		break;
+-	case SIOCDEVPRIVATE + 4:
+-		break;
+-	case SIOCDEVPRIVATE + 5:
+-		netif_stop_queue (dev);
++	case SIOCSMIIREG:
++		if (!capable(CAP_NET_ADMIN))
++			return -EPERM;
++		mii_write (dev, phy_addr, miidata->reg_num, miidata->val_in);
+ 		break;
+-	case SIOCDEVPRIVATE + 6:
+-		netif_wake_queue (dev);
+-		break;
+-	case SIOCDEVPRIVATE + 7:
+-		printk
+-		    ("tx_full=%x cur_tx=%lx old_tx=%lx cur_rx=%lx old_rx=%lx\n",
+-		     netif_queue_stopped(dev), np->cur_tx, np->old_tx, np->cur_rx,
+-		     np->old_rx);
+-		break;
+-	case SIOCDEVPRIVATE + 8:
+-		printk("TX ring:\n");
+-		for (i = 0; i < TX_RING_SIZE; i++) {
+-			desc = &np->tx_ring[i];
+-			printk
+-			    ("%02x:cur:%08x next:%08x status:%08x frag1:%08x frag0:%08x",
+-			     i,
+-			     (u32) (np->tx_ring_dma + i * sizeof (*desc)),
+-			     (u32)le64_to_cpu(desc->next_desc),
+-			     (u32)le64_to_cpu(desc->status),
+-			     (u32)(le64_to_cpu(desc->fraginfo) >> 32),
+-			     (u32)le64_to_cpu(desc->fraginfo));
+-			printk ("\n");
+-		}
+-		printk ("\n");
+-		break;
+-
+ 	default:
+ 		return -EOPNOTSUPP;
+ 	}
+diff --git a/drivers/net/dl2k.h b/drivers/net/dl2k.h
+index 73e1457..cde8ecd 100644
+--- a/drivers/net/dl2k.h
++++ b/drivers/net/dl2k.h
+@@ -365,13 +365,6 @@ struct ioctl_data {
+ 	char *data;
+ };
+ 
+-struct mii_data {
+-	__u16 reserved;
+-	__u16 reg_num;
+-	__u16 in_value;
+-	__u16 out_value;
+-};
+-
+ /* The Rx and Tx buffer descriptors. */
+ struct netdev_desc {
+ 	__le64 next_desc;

Added: dists/squeeze-security/linux-2.6/debian/patches/bugfix/all/dl2k-use-standard-defines-from-mii.h.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-security/linux-2.6/debian/patches/bugfix/all/dl2k-use-standard-defines-from-mii.h.patch	Sat Jul 14 15:04:27 2012	(r19251)
@@ -0,0 +1,393 @@
+commit 78f6a6bd89e9a33e4be1bc61e6990a1172aa396e
+Author: Francois Romieu <romieu at fr.zoreil.com>
+Date:   Sun Aug 21 18:32:05 2011 +0200
+
+    dl2k: use standard #defines from mii.h.
+    
+    Signed-off-by: Francois Romieu <romieu at fr.zoreil.com>
+    [dannf: backported to Debian's 2.6.32]
+
+diff --git a/drivers/net/dl2k.c b/drivers/net/dl2k.c
+index 7fa7a90..731ee85 100644
+--- a/drivers/net/dl2k.c
++++ b/drivers/net/dl2k.c
+@@ -1448,7 +1448,7 @@ mii_wait_link (struct net_device *dev, int wait)
+ 
+ 	do {
+ 		bmsr = mii_read (dev, phy_addr, MII_BMSR);
+-		if (bmsr & MII_BMSR_LINK_STATUS)
++		if (bmsr & BMSR_LSTATUS)
+ 			return 0;
+ 		mdelay (1);
+ 	} while (--wait > 0);
+@@ -1469,60 +1469,60 @@ mii_get_media (struct net_device *dev)
+ 
+ 	bmsr = mii_read (dev, phy_addr, MII_BMSR);
+ 	if (np->an_enable) {
+-		if (!(bmsr & MII_BMSR_AN_COMPLETE)) {
++		if (!(bmsr & BMSR_ANEGCOMPLETE)) {
+ 			/* Auto-Negotiation not completed */
+ 			return -1;
+ 		}
+-		negotiate = mii_read (dev, phy_addr, MII_ANAR) &
+-			mii_read (dev, phy_addr, MII_ANLPAR);
+-		mscr = mii_read (dev, phy_addr, MII_MSCR);
+-		mssr = mii_read (dev, phy_addr, MII_MSSR);
+-		if (mscr & MII_MSCR_1000BT_FD && mssr & MII_MSSR_LP_1000BT_FD) {
++		negotiate = mii_read (dev, phy_addr, MII_ADVERTISE) &
++			mii_read (dev, phy_addr, MII_LPA);
++		mscr = mii_read (dev, phy_addr, MII_CTRL1000);
++		mssr = mii_read (dev, phy_addr, MII_STAT1000);
++		if (mscr & ADVERTISE_1000FULL && mssr & LPA_1000FULL) {
+ 			np->speed = 1000;
+ 			np->full_duplex = 1;
+ 			printk (KERN_INFO "Auto 1000 Mbps, Full duplex\n");
+-		} else if (mscr & MII_MSCR_1000BT_HD && mssr & MII_MSSR_LP_1000BT_HD) {
++		} else if (mscr & ADVERTISE_1000HALF && mssr & LPA_1000HALF) {
+ 			np->speed = 1000;
+ 			np->full_duplex = 0;
+ 			printk (KERN_INFO "Auto 1000 Mbps, Half duplex\n");
+-		} else if (negotiate & MII_ANAR_100BX_FD) {
++		} else if (negotiate & ADVERTISE_100FULL) {
+ 			np->speed = 100;
+ 			np->full_duplex = 1;
+ 			printk (KERN_INFO "Auto 100 Mbps, Full duplex\n");
+-		} else if (negotiate & MII_ANAR_100BX_HD) {
++		} else if (negotiate & ADVERTISE_100HALF) {
+ 			np->speed = 100;
+ 			np->full_duplex = 0;
+ 			printk (KERN_INFO "Auto 100 Mbps, Half duplex\n");
+-		} else if (negotiate & MII_ANAR_10BT_FD) {
++		} else if (negotiate & ADVERTISE_10FULL) {
+ 			np->speed = 10;
+ 			np->full_duplex = 1;
+ 			printk (KERN_INFO "Auto 10 Mbps, Full duplex\n");
+-		} else if (negotiate & MII_ANAR_10BT_HD) {
++		} else if (negotiate & ADVERTISE_10HALF) {
+ 			np->speed = 10;
+ 			np->full_duplex = 0;
+ 			printk (KERN_INFO "Auto 10 Mbps, Half duplex\n");
+ 		}
+-		if (negotiate & MII_ANAR_PAUSE) {
++		if (negotiate & ADVERTISE_PAUSE_CAP) {
+ 			np->tx_flow &= 1;
+ 			np->rx_flow &= 1;
+-		} else if (negotiate & MII_ANAR_ASYMMETRIC) {
++		} else if (negotiate & ADVERTISE_PAUSE_ASYM) {
+ 			np->tx_flow = 0;
+ 			np->rx_flow &= 1;
+ 		}
+ 		/* else tx_flow, rx_flow = user select  */
+ 	} else {
+ 		__u16 bmcr = mii_read (dev, phy_addr, MII_BMCR);
+-		switch (bmcr & (MII_BMCR_SPEED_100 | MII_BMCR_SPEED_1000)) {
+-		case MII_BMCR_SPEED_1000:
++		switch (bmcr & (BMCR_SPEED100 | BMCR_SPEED1000)) {
++		case BMCR_SPEED1000:
+ 			printk (KERN_INFO "Operating at 1000 Mbps, ");
+ 			break;
+-		case MII_BMCR_SPEED_100:
++		case BMCR_SPEED100:
+ 			printk (KERN_INFO "Operating at 100 Mbps, ");
+ 			break;
+ 		case 0:
+ 			printk (KERN_INFO "Operating at 10 Mbps, ");
+ 		}
+-		if (bmcr & MII_BMCR_DUPLEX_MODE) {
++		if (bmcr & BMCR_FULLDPLX) {
+ 			printk (KERN_CONT "Full duplex\n");
+ 		} else {
+ 			printk (KERN_CONT "Half duplex\n");
+@@ -1556,24 +1556,22 @@ mii_set_media (struct net_device *dev)
+ 	if (np->an_enable) {
+ 		/* Advertise capabilities */
+ 		bmsr = mii_read (dev, phy_addr, MII_BMSR);
+-		anar = mii_read (dev, phy_addr, MII_ANAR) &
+-			     ~MII_ANAR_100BX_FD &
+-			     ~MII_ANAR_100BX_HD &
+-			     ~MII_ANAR_100BT4 &
+-			     ~MII_ANAR_10BT_FD &
+-			     ~MII_ANAR_10BT_HD;
+-		if (bmsr & MII_BMSR_100BX_FD)
+-			anar |= MII_ANAR_100BX_FD;
+-		if (bmsr & MII_BMSR_100BX_HD)
+-			anar |= MII_ANAR_100BX_HD;
+-		if (bmsr & MII_BMSR_100BT4)
+-			anar |= MII_ANAR_100BT4;
+-		if (bmsr & MII_BMSR_10BT_FD)
+-			anar |= MII_ANAR_10BT_FD;
+-		if (bmsr & MII_BMSR_10BT_HD)
+-			anar |= MII_ANAR_10BT_HD;
+-		anar |= MII_ANAR_PAUSE | MII_ANAR_ASYMMETRIC;
+-		mii_write (dev, phy_addr, MII_ANAR, anar);
++		anar = mii_read (dev, phy_addr, MII_ADVERTISE) &
++			~(ADVERTISE_100FULL | ADVERTISE_10FULL |
++			  ADVERTISE_100HALF | ADVERTISE_10HALF |
++			  ADVERTISE_100BASE4);
++		if (bmsr & BMSR_100FULL)
++			anar |= ADVERTISE_100FULL;
++		if (bmsr & BMSR_100HALF)
++			anar |= ADVERTISE_100HALF;
++		if (bmsr & BMSR_100BASE4)
++			anar |= ADVERTISE_100BASE4;
++		if (bmsr & BMSR_10FULL)
++			anar |= ADVERTISE_10FULL;
++		if (bmsr & BMSR_10HALF)
++			anar |= ADVERTISE_10HALF;
++		anar |= ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM;
++		mii_write (dev, phy_addr, MII_ADVERTISE, anar);
+ 
+ 		/* Enable Auto crossover */
+ 		pscr = mii_read (dev, phy_addr, MII_PHY_SCR);
+@@ -1581,8 +1579,8 @@ mii_set_media (struct net_device *dev)
+ 		mii_write (dev, phy_addr, MII_PHY_SCR, pscr);
+ 
+ 		/* Soft reset PHY */
+-		mii_write (dev, phy_addr, MII_BMCR, MII_BMCR_RESET);
+-		bmcr = MII_BMCR_AN_ENABLE | MII_BMCR_RESTART_AN | MII_BMCR_RESET;
++		mii_write (dev, phy_addr, MII_BMCR, BMCR_RESET);
++		bmcr = BMCR_ANENABLE | BMCR_ANRESTART | BMCR_RESET;
+ 		mii_write (dev, phy_addr, MII_BMCR, bmcr);
+ 		mdelay(1);
+ 	} else {
+@@ -1594,7 +1592,7 @@ mii_set_media (struct net_device *dev)
+ 
+ 		/* 2) PHY Reset */
+ 		bmcr = mii_read (dev, phy_addr, MII_BMCR);
+-		bmcr |= MII_BMCR_RESET;
++		bmcr |= BMCR_RESET;
+ 		mii_write (dev, phy_addr, MII_BMCR, bmcr);
+ 
+ 		/* 3) Power Down */
+@@ -1603,25 +1601,25 @@ mii_set_media (struct net_device *dev)
+ 		mdelay (100);	/* wait a certain time */
+ 
+ 		/* 4) Advertise nothing */
+-		mii_write (dev, phy_addr, MII_ANAR, 0);
++		mii_write (dev, phy_addr, MII_ADVERTISE, 0);
+ 
+ 		/* 5) Set media and Power Up */
+-		bmcr = MII_BMCR_POWER_DOWN;
++		bmcr = BMCR_PDOWN;
+ 		if (np->speed == 100) {
+-			bmcr |= MII_BMCR_SPEED_100;
++			bmcr |= BMCR_SPEED100;
+ 			printk (KERN_INFO "Manual 100 Mbps, ");
+ 		} else if (np->speed == 10) {
+ 			printk (KERN_INFO "Manual 10 Mbps, ");
+ 		}
+ 		if (np->full_duplex) {
+-			bmcr |= MII_BMCR_DUPLEX_MODE;
++			bmcr |= BMCR_FULLDPLX;
+ 			printk (KERN_CONT "Full duplex\n");
+ 		} else {
+ 			printk (KERN_CONT "Half duplex\n");
+ 		}
+ #if 0
+ 		/* Set 1000BaseT Master/Slave setting */
+-		mscr = mii_read (dev, phy_addr, MII_MSCR);
++		mscr = mii_read (dev, phy_addr, MII_CTRL1000);
+ 		mscr |= MII_MSCR_CFG_ENABLE;
+ 		mscr &= ~MII_MSCR_CFG_VALUE = 0;
+ #endif
+@@ -1644,7 +1642,7 @@ mii_get_media_pcs (struct net_device *dev)
+ 
+ 	bmsr = mii_read (dev, phy_addr, PCS_BMSR);
+ 	if (np->an_enable) {
+-		if (!(bmsr & MII_BMSR_AN_COMPLETE)) {
++		if (!(bmsr & BMSR_ANEGCOMPLETE)) {
+ 			/* Auto-Negotiation not completed */
+ 			return -1;
+ 		}
+@@ -1669,7 +1667,7 @@ mii_get_media_pcs (struct net_device *dev)
+ 	} else {
+ 		__u16 bmcr = mii_read (dev, phy_addr, PCS_BMCR);
+ 		printk (KERN_INFO "Operating at 1000 Mbps, ");
+-		if (bmcr & MII_BMCR_DUPLEX_MODE) {
++		if (bmcr & BMCR_FULLDPLX) {
+ 			printk (KERN_CONT "Full duplex\n");
+ 		} else {
+ 			printk (KERN_CONT "Half duplex\n");
+@@ -1702,7 +1700,7 @@ mii_set_media_pcs (struct net_device *dev)
+ 	if (np->an_enable) {
+ 		/* Advertise capabilities */
+ 		esr = mii_read (dev, phy_addr, PCS_ESR);
+-		anar = mii_read (dev, phy_addr, MII_ANAR) &
++		anar = mii_read (dev, phy_addr, MII_ADVERTISE) &
+ 			~PCS_ANAR_HALF_DUPLEX &
+ 			~PCS_ANAR_FULL_DUPLEX;
+ 		if (esr & (MII_ESR_1000BT_HD | MII_ESR_1000BX_HD))
+@@ -1710,22 +1708,21 @@ mii_set_media_pcs (struct net_device *dev)
+ 		if (esr & (MII_ESR_1000BT_FD | MII_ESR_1000BX_FD))
+ 			anar |= PCS_ANAR_FULL_DUPLEX;
+ 		anar |= PCS_ANAR_PAUSE | PCS_ANAR_ASYMMETRIC;
+-		mii_write (dev, phy_addr, MII_ANAR, anar);
++		mii_write (dev, phy_addr, MII_ADVERTISE, anar);
+ 
+ 		/* Soft reset PHY */
+-		mii_write (dev, phy_addr, MII_BMCR, MII_BMCR_RESET);
+-		bmcr = MII_BMCR_AN_ENABLE | MII_BMCR_RESTART_AN |
+-		       MII_BMCR_RESET;
++		mii_write (dev, phy_addr, MII_BMCR, BMCR_RESET);
++		bmcr = BMCR_ANENABLE | BMCR_ANRESTART | BMCR_RESET;
+ 		mii_write (dev, phy_addr, MII_BMCR, bmcr);
+ 		mdelay(1);
+ 	} else {
+ 		/* Force speed setting */
+ 		/* PHY Reset */
+-		bmcr = MII_BMCR_RESET;
++		bmcr = BMCR_RESET;
+ 		mii_write (dev, phy_addr, MII_BMCR, bmcr);
+ 		mdelay(10);
+ 		if (np->full_duplex) {
+-			bmcr = MII_BMCR_DUPLEX_MODE;
++			bmcr = BMCR_FULLDPLX;
+ 			printk (KERN_INFO "Manual full duplex\n");
+ 		} else {
+ 			bmcr = 0;
+@@ -1735,7 +1732,7 @@ mii_set_media_pcs (struct net_device *dev)
+ 		mdelay(10);
+ 
+ 		/*  Advertise nothing */
+-		mii_write (dev, phy_addr, MII_ANAR, 0);
++		mii_write (dev, phy_addr, MII_ADVERTISE, 0);
+ 	}
+ 	return 0;
+ }
+diff --git a/drivers/net/dl2k.h b/drivers/net/dl2k.h
+index 266ec87..73e1457 100644
+--- a/drivers/net/dl2k.h
++++ b/drivers/net/dl2k.h
+@@ -28,6 +28,7 @@
+ #include <linux/init.h>
+ #include <linux/crc32.h>
+ #include <linux/ethtool.h>
++#include <linux/mii.h>
+ #include <linux/bitops.h>
+ #include <asm/processor.h>	/* Processor type for cache alignment. */
+ #include <asm/io.h>
+@@ -271,20 +272,9 @@ enum RFS_bits {
+ #define MII_RESET_TIME_OUT		10000
+ /* MII register */
+ enum _mii_reg {
+-	MII_BMCR = 0,
+-	MII_BMSR = 1,
+-	MII_PHY_ID1 = 2,
+-	MII_PHY_ID2 = 3,
+-	MII_ANAR = 4,
+-	MII_ANLPAR = 5,
+-	MII_ANER = 6,
+-	MII_ANNPT = 7,
+-	MII_ANLPRNP = 8,
+-	MII_MSCR = 9,
+-	MII_MSSR = 10,
+-	MII_ESR = 15,
+ 	MII_PHY_SCR = 16,
+ };
++
+ /* PCS register */
+ enum _pcs_reg {
+ 	PCS_BMCR = 0,
+@@ -297,102 +287,6 @@ enum _pcs_reg {
+ 	PCS_ESR = 15,
+ };
+ 
+-/* Basic Mode Control Register */
+-enum _mii_bmcr {
+-	MII_BMCR_RESET = 0x8000,
+-	MII_BMCR_LOOP_BACK = 0x4000,
+-	MII_BMCR_SPEED_LSB = 0x2000,
+-	MII_BMCR_AN_ENABLE = 0x1000,
+-	MII_BMCR_POWER_DOWN = 0x0800,
+-	MII_BMCR_ISOLATE = 0x0400,
+-	MII_BMCR_RESTART_AN = 0x0200,
+-	MII_BMCR_DUPLEX_MODE = 0x0100,
+-	MII_BMCR_COL_TEST = 0x0080,
+-	MII_BMCR_SPEED_MSB = 0x0040,
+-	MII_BMCR_SPEED_RESERVED = 0x003f,
+-	MII_BMCR_SPEED_10 = 0,
+-	MII_BMCR_SPEED_100 = MII_BMCR_SPEED_LSB,
+-	MII_BMCR_SPEED_1000 = MII_BMCR_SPEED_MSB,
+-};
+-
+-/* Basic Mode Status Register */
+-enum _mii_bmsr {
+-	MII_BMSR_100BT4 = 0x8000,
+-	MII_BMSR_100BX_FD = 0x4000,
+-	MII_BMSR_100BX_HD = 0x2000,
+-	MII_BMSR_10BT_FD = 0x1000,
+-	MII_BMSR_10BT_HD = 0x0800,
+-	MII_BMSR_100BT2_FD = 0x0400,
+-	MII_BMSR_100BT2_HD = 0x0200,
+-	MII_BMSR_EXT_STATUS = 0x0100,
+-	MII_BMSR_PREAMBLE_SUPP = 0x0040,
+-	MII_BMSR_AN_COMPLETE = 0x0020,
+-	MII_BMSR_REMOTE_FAULT = 0x0010,
+-	MII_BMSR_AN_ABILITY = 0x0008,
+-	MII_BMSR_LINK_STATUS = 0x0004,
+-	MII_BMSR_JABBER_DETECT = 0x0002,
+-	MII_BMSR_EXT_CAP = 0x0001,
+-};
+-
+-/* ANAR */
+-enum _mii_anar {
+-	MII_ANAR_NEXT_PAGE = 0x8000,
+-	MII_ANAR_REMOTE_FAULT = 0x4000,
+-	MII_ANAR_ASYMMETRIC = 0x0800,
+-	MII_ANAR_PAUSE = 0x0400,
+-	MII_ANAR_100BT4 = 0x0200,
+-	MII_ANAR_100BX_FD = 0x0100,
+-	MII_ANAR_100BX_HD = 0x0080,
+-	MII_ANAR_10BT_FD = 0x0020,
+-	MII_ANAR_10BT_HD = 0x0010,
+-	MII_ANAR_SELECTOR = 0x001f,
+-	MII_IEEE8023_CSMACD = 0x0001,
+-};
+-
+-/* ANLPAR */
+-enum _mii_anlpar {
+-	MII_ANLPAR_NEXT_PAGE = MII_ANAR_NEXT_PAGE,
+-	MII_ANLPAR_REMOTE_FAULT = MII_ANAR_REMOTE_FAULT,
+-	MII_ANLPAR_ASYMMETRIC = MII_ANAR_ASYMMETRIC,
+-	MII_ANLPAR_PAUSE = MII_ANAR_PAUSE,
+-	MII_ANLPAR_100BT4 = MII_ANAR_100BT4,
+-	MII_ANLPAR_100BX_FD = MII_ANAR_100BX_FD,
+-	MII_ANLPAR_100BX_HD = MII_ANAR_100BX_HD,
+-	MII_ANLPAR_10BT_FD = MII_ANAR_10BT_FD,
+-	MII_ANLPAR_10BT_HD = MII_ANAR_10BT_HD,
+-	MII_ANLPAR_SELECTOR = MII_ANAR_SELECTOR,
+-};
+-
+-/* Auto-Negotiation Expansion Register */
+-enum _mii_aner {
+-	MII_ANER_PAR_DETECT_FAULT = 0x0010,
+-	MII_ANER_LP_NEXTPAGABLE = 0x0008,
+-	MII_ANER_NETXTPAGABLE = 0x0004,
+-	MII_ANER_PAGE_RECEIVED = 0x0002,
+-	MII_ANER_LP_NEGOTIABLE = 0x0001,
+-};
+-
+-/* MASTER-SLAVE Control Register */
+-enum _mii_mscr {
+-	MII_MSCR_TEST_MODE = 0xe000,
+-	MII_MSCR_CFG_ENABLE = 0x1000,
+-	MII_MSCR_CFG_VALUE = 0x0800,
+-	MII_MSCR_PORT_VALUE = 0x0400,
+-	MII_MSCR_1000BT_FD = 0x0200,
+-	MII_MSCR_1000BT_HD = 0X0100,
+-};
+-
+-/* MASTER-SLAVE Status Register */
+-enum _mii_mssr {
+-	MII_MSSR_CFG_FAULT = 0x8000,
+-	MII_MSSR_CFG_RES = 0x4000,
+-	MII_MSSR_LOCAL_RCV_STATUS = 0x2000,
+-	MII_MSSR_REMOTE_RCVR = 0x1000,
+-	MII_MSSR_LP_1000BT_FD = 0x0800,
+-	MII_MSSR_LP_1000BT_HD = 0x0400,
+-	MII_MSSR_IDLE_ERR_COUNT = 0x00ff,
+-};
+-
+ /* IEEE Extened Status Register */
+ enum _mii_esr {
+ 	MII_ESR_1000BX_FD = 0x8000,

Modified: dists/squeeze-security/linux-2.6/debian/patches/series/45squeeze1
==============================================================================
--- dists/squeeze-security/linux-2.6/debian/patches/series/45squeeze1	Fri Jul 13 04:37:28 2012	(r19250)
+++ dists/squeeze-security/linux-2.6/debian/patches/series/45squeeze1	Sat Jul 14 15:04:27 2012	(r19251)
@@ -1 +1,3 @@
 + bugfix/all/net-sock-validate-data_len-before-allocating-skb-in-sock_alloc_send_pskb.patch
++ bugfix/all/dl2k-use-standard-defines-from-mii.h.patch
++ bugfix/all/dl2k-Clean-up-rio_ioctl.patch



More information about the Kernel-svn-changes mailing list