[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