DORMANTno replies

[PATCH 2.6] e100: 1/2 fix skb leak in tx timeout

From: Jay Vosburgh <hidden>
Date: 2004-06-08 21:26:35

	If e100 experiences a transmit timeout, and the tx ring is
completely full at that time, it will leak all of the skbs on the tx
ring (because extra logic is needed to distinguish ring full from ring
empty).

	-J

---
	-Jay Vosburgh, IBM Linux Technology Center, fubar@us.ibm.com


diff -urN linux-2.6.6-virgin/drivers/net/e100.c linux-2.6.6/drivers/net/e100.c
--- linux-2.6.6-virgin/drivers/net/e100.c	2004-06-08 13:51:34.000000000 -0700
+++ linux-2.6.6/drivers/net/e100.c	2004-06-08 13:52:37.000000000 -0700
@@ -1322,7 +1322,8 @@
 static void e100_clean_cbs(struct nic *nic)
 {
 	if(nic->cbs) {
-		while(nic->cb_to_clean != nic->cb_to_use) {
+		while((nic->cb_to_clean != nic->cb_to_use) ||
+		      (0 == nic->cbs_avail)) {
 			struct cb *cb = nic->cb_to_clean;
 			if(cb->skb) {
 				pci_unmap_single(nic->pdev,
@@ -1332,6 +1333,7 @@
 				dev_kfree_skb(cb->skb);
 			}
 			nic->cb_to_clean = nic->cb_to_clean->next;
+			nic->cbs_avail++;
 		}
 		nic->cbs_avail = nic->params.cbs.count;
 		pci_free_consistent(nic->pdev,
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help