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;