Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 49266 - RTL-8196 gigabit network card driver Crashes Locks Kernel system
Summary: RTL-8196 gigabit network card driver Crashes Locks Kernel system
Status: RESOLVED UPSTREAM
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Core system (show other bugs)
Hardware: x86 Linux
: High critical (vote)
Assignee: x86-kernel@gentoo.org (DEPRECATED)
URL: http://testing.lkml.org/slashdot.php?...
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-04-28 03:53 UTC by Jonathan Wilson
Modified: 2004-04-28 11:11 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jonathan Wilson 2004-04-28 03:53:22 UTC
Due to a logic error, there is a loop in an interrupt handler that often goes infinite, thus locking up the entire computer.  What follows is taken from another site, could this be fix in Gentoo as it affects my system and obviously others as well.

-------------

Hi everyone,

This is a tiny patch that fixes a particularly annoying bug in the Realtek 8169 gigabit ethernet driver. Due to a logic error, there is a loop in an interrupt handler that often goes infinite, thus locking up the entire computer. The attached patch fixes the problem. 
I have patched against linux-2.6.5-rc2-bk6, however the source file in question hasn't been modified for a long time, so the patch should apply cleanly to any recent kernel version.

Cheers,
Adam.
--- linux-2.6.5-rc2-bk6/drivers/net/r8169.c	2004-03-27 17:38:03.000000000 +1000
+++ linux-2.6.5-rc2-bk6a/drivers/net/r8169.c	2004-03-31 18:45:10.000000000 +1000
@@ -33,6 +33,12 @@
 	- Copy mc_filter setup code from 8139cp
 	  (includes an optimization, and avoids set_bit use)
 
+VERSION 1.2a <2004/03/31> Adam Nielsen (a.nielsen@optushome.com.au)
+
+	"else break;" added to the if-statement in rtl8169_tx_interrupt() to prevent
+	an infinite loop and the resulting kernel lockup when the interrupt is called
+	with a dirty buffer (perhaps when there's nothing to transmit?)
+
 */
 
 #include <linux/module.h>
@@ -892,7 +898,7 @@
 			tp->Tx_skbuff[entry] = NULL;
 			dirty_tx++;
 			tx_left--;
-		}
+		} else break;
 	}
 
 	if (tp->dirty_tx != dirty_tx) {
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
                

Reproducible: Always
Steps to Reproduce:
1. Generate lots of TCP/IP activity
2. Run a P2P client and have a number of users download data
3.

Actual Results:  
System locks up and will not respond to any form of user input and must be reset
by hardware 

Expected Results:  
Not crash! haha, I don't know.  It should be able to handle high TCP/IP activity

N/A
Comment 1 Greg Kroah-Hartman (RETIRED) gentoo-dev 2004-04-28 11:11:55 UTC
Please send this to the net-dev mailing list, that way it will get added to the
main kernel tree

(also, no change log entry is needed for such a patch, your change comments will
show up in the kernel changelog entries...)