]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
add another patch to queue
authorGreg Kroah-Hartman <gregkh@suse.de>
Thu, 6 Apr 2006 16:22:20 +0000 (09:22 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 6 Apr 2006 16:22:20 +0000 (09:22 -0700)
queue-2.6.16/series
queue-2.6.16/sky2-bad-memory-reference-on-dual-port-cards.patch [new file with mode: 0644]

index 12b5e3cfd893a717115a582366c30488a07b4d22..aa797883ede205480cbd797773d7d8fb202f344e 100644 (file)
@@ -2,3 +2,4 @@ powerpc-iseries-needs-slb_initialize-to-be-called.patch
 powerpc-fix-incorrect-sa_onstack-behaviour-for-64-bit-processes.patch
 mpbl0010-driver-sysfs-permissions-wide-open.patch
 isd200-limit-to-blk_dev_ide.patch
+sky2-bad-memory-reference-on-dual-port-cards.patch
diff --git a/queue-2.6.16/sky2-bad-memory-reference-on-dual-port-cards.patch b/queue-2.6.16/sky2-bad-memory-reference-on-dual-port-cards.patch
new file mode 100644 (file)
index 0000000..ac7342c
--- /dev/null
@@ -0,0 +1,44 @@
+From stable-bounces@linux.kernel.org Wed Apr  5 17:47:36 2006
+Date: Wed, 5 Apr 2006 17:47:15 -0700
+From: Stephen Hemminger <shemminger@osdl.org>
+To: Jeff Garzik <jgarzik@pobox.com>
+Message-ID: <20060405174715.2ef75105@localhost.localdomain>
+Cc: netdev@vger.kernel.org, stable@kernel.org
+Subject: sky2: bad memory reference on dual port cards
+
+Sky2 driver will oops referencing bad memory if used on
+a dual port card.  The problem is accessing past end of
+MIB counter space.
+
+Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ drivers/net/sky2.c |    4 ++--
+ drivers/net/sky2.h |    1 +
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+--- linux-2.6.16.1.orig/drivers/net/sky2.c
++++ linux-2.6.16.1/drivers/net/sky2.c
+@@ -579,8 +579,8 @@ static void sky2_mac_init(struct sky2_hw
+       reg = gma_read16(hw, port, GM_PHY_ADDR);
+       gma_write16(hw, port, GM_PHY_ADDR, reg | GM_PAR_MIB_CLR);
+-      for (i = 0; i < GM_MIB_CNT_SIZE; i++)
+-              gma_read16(hw, port, GM_MIB_CNT_BASE + 8 * i);
++      for (i = GM_MIB_CNT_BASE; i <= GM_MIB_CNT_END; i += 4)
++              gma_read16(hw, port, i);
+       gma_write16(hw, port, GM_PHY_ADDR, reg);
+       /* transmit control */
+--- linux-2.6.16.1.orig/drivers/net/sky2.h
++++ linux-2.6.16.1/drivers/net/sky2.h
+@@ -1380,6 +1380,7 @@ enum {
+ /* MIB Counters */
+ #define GM_MIB_CNT_BASE       0x0100          /* Base Address of MIB Counters */
+ #define GM_MIB_CNT_SIZE       44              /* Number of MIB Counters */
++#define GM_MIB_CNT_END        0x025C          /* Last MIB counter */
+ /*
+  * MIB Counters base address definitions (low word) -