| To: | jgarzik@xxxxxxxxx |
|---|---|
| Subject: | [PATCH 2.6 2/3] e100: fix skb leak in tx timeout |
| From: | Scott Feldman <scott.feldman@xxxxxxxxx> |
| Date: | Thu, 10 Jun 2004 11:21:00 -0700 (PDT) |
| Cc: | netdev@xxxxxxxxxxx, scott.feldman@xxxxxxxxx |
| Replyto: | "Scott Feldman" <scott.feldman@xxxxxxxxx> |
| Sender: | netdev-bounce@xxxxxxxxxxx |
* If e100 experiences a transmit timeout, and the tx ring is completely
full at the time, it will leak all of the skbs on the tx ring (because
extra logic is needed to distinguish ring full from ring empty). Jay
Vosburgh [fubar@xxxxxxxxxx].
Signed-off by: scott.feldman@xxxxxxxxx
-----------
--- linux-2.5/drivers/net/e100.c 2004-06-10 11:07:00.015557584 -0700
+++ linux-2.5/drivers/net/e100.c.mod 2004-06-10 11:07:18.487749384 -0700
@@ -1323,7 +1323,7 @@ static inline int e100_tx_clean(struct n
static void e100_clean_cbs(struct nic *nic)
{
if(nic->cbs) {
- while(nic->cb_to_clean != nic->cb_to_use) {
+ while(nic->cbs_avail != nic->params.cbs.count) {
struct cb *cb = nic->cb_to_clean;
if(cb->skb) {
pci_unmap_single(nic->pdev,
@@ -1333,8 +1333,8 @@ static void e100_clean_cbs(struct nic *n
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,
sizeof(struct cb) * nic->params.cbs.count,
nic->cbs, nic->cbs_dma_addr);
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | [PATCH 2.6 1/3] e100: stepping over err return code, Scott Feldman |
|---|---|
| Next by Date: | [PATCH 2.6 3/3] e100: fix sender hang after tx timeout, Scott Feldman |
| Previous by Thread: | [PATCH 2.6 1/3] e100: stepping over err return code, Scott Feldman |
| Next by Thread: | [PATCH 2.6 3/3] e100: fix sender hang after tx timeout, Scott Feldman |
| Indexes: | [Date] [Thread] [Top] [All Lists] |