benet: fix the misusage of zero dma address
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Sun, 4 Apr 2010 21:40:18 +0000 (21:40 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 8 Apr 2010 03:59:26 +0000 (20:59 -0700)
benet driver wrongly assumes that zero is an invalid dma address
(calls dma_unmap_page for only non zero dma addresses). Zero is a
valid dma address on some architectures. The dma length can be used
here.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Acked-by: Sathya Perla <sathyap@serverengines.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/benet/be_main.c

index 833618339d4d64e644b11046880c73a3e2fce584..18e0a80d3e61e0ba9dd77afbf6ce69849f0dded8 100644 (file)
@@ -404,7 +404,7 @@ static void unmap_tx_frag(struct pci_dev *pdev, struct be_eth_wrb *wrb,
        be_dws_le_to_cpu(wrb, sizeof(*wrb));
 
        dma = (u64)wrb->frag_pa_hi << 32 | (u64)wrb->frag_pa_lo;
-       if (dma != 0) {
+       if (wrb->frag_len) {
                if (unmap_single)
                        pci_unmap_single(pdev, dma, wrb->frag_len,
                                PCI_DMA_TODEVICE);