[kernel] r8394 - in dists/etch/linux-2.6/debian: . patches/bugfix
patches/series
Dann Frazier
dannf at alioth.debian.org
Sun Mar 25 21:41:12 UTC 2007
Author: dannf
Date: Sun Mar 25 20:41:11 2007
New Revision: 8394
Added:
dists/etch/linux-2.6/debian/patches/bugfix/natsemi-napi-shared-irq.patch
Modified:
dists/etch/linux-2.6/debian/changelog
dists/etch/linux-2.6/debian/patches/series/12
Log:
* natsemi-napi-shared-irq.patch
Fix hang in natsemi driver when sharing interrupts. (closes: #415476)
Thanks to Mark Brown for the backport.
Modified: dists/etch/linux-2.6/debian/changelog
==============================================================================
--- dists/etch/linux-2.6/debian/changelog (original)
+++ dists/etch/linux-2.6/debian/changelog Sun Mar 25 20:41:11 2007
@@ -48,7 +48,10 @@
[SECURITY] Fix a vulnerability that permits renicing processes in
other contexts. (closes: #412143)
See CVE-2007-0241
-
+ * natsemi-napi-shared-irq.patch
+ Fix hang in natsemi driver when sharing interrupts. (closes: #415476)
+ Thanks to Mark Brown for the backport.
+
[ Bastian Blank ]
* xen: Fix highmem dma copy code. (closes: #415805)
@@ -56,7 +59,7 @@
* mips: Implement flush_anon_page() to fix data corruption issues
(Ralf Baechle).
- -- Bastian Blank <waldi at debian.org> Sat, 24 Mar 2007 08:06:27 +0100
+ -- dann frazier <dannf at debian.org> Sun, 25 Mar 2007 14:35:43 -0600
linux-2.6 (2.6.18.dfsg.1-11) unstable; urgency=low
Added: dists/etch/linux-2.6/debian/patches/bugfix/natsemi-napi-shared-irq.patch
==============================================================================
--- (empty file)
+++ dists/etch/linux-2.6/debian/patches/bugfix/natsemi-napi-shared-irq.patch Sun Mar 25 20:41:11 2007
@@ -0,0 +1,57 @@
+--- build-i386-none-486/drivers/net/natsemi.c.orig 2006-09-19 21:42:06.000000000 -0600
++++ build-i386-none-486/drivers/net/natsemi.c 2007-03-25 13:46:49.000000000 -0600
+@@ -2094,28 +2094,35 @@
+ struct netdev_private *np = netdev_priv(dev);
+ void __iomem * ioaddr = ns_ioaddr(dev);
+
+- if (np->hands_off)
++ /* Reading IntrStatus automatically acknowledges so don't do
++ * that while interrupts are disabled, (for example, while a
++ * poll is scheduled). */
++ if (np->hands_off || !readl(ioaddr + IntrEnable))
+ return IRQ_NONE;
+
+- /* Reading automatically acknowledges. */
+ np->intr_status = readl(ioaddr + IntrStatus);
+
++ if (!np->intr_status)
++ return IRQ_NONE;
++
+ if (netif_msg_intr(np))
+ printk(KERN_DEBUG
+ "%s: Interrupt, status %#08x, mask %#08x.\n",
+ dev->name, np->intr_status,
+ readl(ioaddr + IntrMask));
+
+- if (!np->intr_status)
+- return IRQ_NONE;
+-
+ prefetch(&np->rx_skbuff[np->cur_rx % RX_RING_SIZE]);
+
+ if (netif_rx_schedule_prep(dev)) {
+ /* Disable interrupts and register for poll */
+ natsemi_irq_disable(dev);
+ __netif_rx_schedule(dev);
+- }
++ } else
++ printk(KERN_WARNING
++ "%s: Ignoring interrupt, status %#08x, mask %#08x.\n",
++ dev->name, np->intr_status,
++ readl(ioaddr + IntrMask));
++
+ return IRQ_HANDLED;
+ }
+
+@@ -2131,6 +2138,12 @@
+ int work_done = 0;
+
+ do {
++ if (netif_msg_intr(np))
++ printk(KERN_DEBUG
++ "%s: Poll, status %#08x, mask %#08x.\n",
++ dev->name, np->intr_status,
++ readl(ioaddr + IntrMask));
++
+ if (np->intr_status &
+ (IntrTxDone | IntrTxIntr | IntrTxIdle | IntrTxErr)) {
+ spin_lock(&np->lock);
Modified: dists/etch/linux-2.6/debian/patches/series/12
==============================================================================
--- dists/etch/linux-2.6/debian/patches/series/12 (original)
+++ dists/etch/linux-2.6/debian/patches/series/12 Sun Mar 25 20:41:11 2007
@@ -8,3 +8,4 @@
+ bugfix/sparc/tcp-sendmsg-t12k-oops-fix.patch
+ bugfix/bnx2_tx_avail-off-by-1-fix.patch
+ bugfix/mips/flush_anon_page.patch
++ bugfix/natsemi-napi-shared-irq.patch
More information about the Kernel-svn-changes
mailing list