summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2008-09-11 15:45:19 -0700
committerDavid S. Miller <davem@davemloft.net>2008-09-11 15:45:19 -0700
commit638266f7e879e34de4a4635049c15f5a58505e75 (patch)
treecf9aba26a0ac2f0e9efb2bd0124b57a5f7506bd8
parent90079ce89aa65e17f36ac2b09110720c51d874f4 (diff)
downloadlinux-stable-638266f7e879e34de4a4635049c15f5a58505e75.tar.gz
linux-stable-638266f7e879e34de4a4635049c15f5a58505e75.tar.bz2
linux-stable-638266f7e879e34de4a4635049c15f5a58505e75.zip
tg3: Fix DMA mapping leak in tigon3_dma_hwbug_workaround().
Noticed by Michael Chan. Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/tg3.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index 355e8bcf6fed..123920759efd 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -4631,6 +4631,9 @@ static int tigon3_dma_hwbug_workaround(struct tg3 *tp, struct sk_buff *skb,
* Drop the packet if it does.
*/
if (ret || tg3_4g_overflow_test(new_addr, new_skb->len)) {
+ if (!ret)
+ skb_dma_unmap(&tp->pdev->dev, new_skb,
+ DMA_TO_DEVICE);
ret = -1;
dev_kfree_skb(new_skb);
new_skb = NULL;