From 7dd20b4939376303d081a782270b5947e7086f2a Mon Sep 17 00:00:00 2001 From: Matt Carlson Date: Wed, 17 Feb 2010 15:16:54 +0000 Subject: [PATCH] --- yaml --- r: 184311 b: refs/heads/master c: 61e800cf949926b3d463ca3cf3025d964872774b h: refs/heads/master i: 184309: 4d1c0902a8911e32e57afca0d1a2b81a64397497 184307: 73394cdbe95882c127b196108ff857a610c25e33 184303: 9f145557fcc9937298ede08faf04e60b5b708aaa v: v3 --- [refs] | 2 +- trunk/drivers/net/tg3.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 1a9d2c7ec83f..1c5cc7648ad0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 99405162598176e830d17ae6d4f3d9e070ad900c +refs/heads/master: 61e800cf949926b3d463ca3cf3025d964872774b diff --git a/trunk/drivers/net/tg3.c b/trunk/drivers/net/tg3.c index 385434ff3960..344490e872b4 100644 --- a/trunk/drivers/net/tg3.c +++ b/trunk/drivers/net/tg3.c @@ -4659,11 +4659,16 @@ static int tg3_rx(struct tg3_napi *tnapi, int budget) if (skb_size < 0) goto drop_it; - ri->skb = NULL; - pci_unmap_single(tp->pdev, dma_addr, skb_size, PCI_DMA_FROMDEVICE); + /* Ensure that the update to the skb happens + * after the usage of the old DMA mapping. + */ + smp_wmb(); + + ri->skb = NULL; + skb_put(skb, len); } else { struct sk_buff *copy_skb;