[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