Neil Horman c48b60c
commit 2087ac1fc6fd9bbb1f7e16889e984e0af0510b4b
Neil Horman c48b60c
Author: Neil Horman <nhorman@tuxdriver.com>
Neil Horman c48b60c
Date:   Thu Jun 13 15:25:45 2013 -0400
Neil Horman c48b60c
Neil Horman c48b60c
    tulip: Properly check dma mapping result
Neil Horman c48b60c
    
Neil Horman c48b60c
    Tulip throws an error when dma debugging is enabled, as it doesn't properly
Neil Horman c48b60c
    check dma mapping results with dma_mapping_error() durring tx ring refills.
Neil Horman c48b60c
    
Neil Horman c48b60c
    Easy fix, just add it in, and drop the frame if the mapping is bad
Neil Horman c48b60c
    
Neil Horman c48b60c
    Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Neil Horman c48b60c
    CC: Grant Grundler <grundler@parisc-linux.org>
Neil Horman c48b60c
    CC: "David S. Miller" <davem@davemloft.net>
Neil Horman c48b60c
Neil Horman c48b60c
diff --git a/drivers/net/ethernet/dec/tulip/interrupt.c b/drivers/net/ethernet/dec/tulip/interrupt.c
Neil Horman c48b60c
index 28a5e42..92306b3 100644
Neil Horman c48b60c
--- a/drivers/net/ethernet/dec/tulip/interrupt.c
Neil Horman c48b60c
+++ b/drivers/net/ethernet/dec/tulip/interrupt.c
Neil Horman c48b60c
@@ -76,6 +76,12 @@ int tulip_refill_rx(struct net_device *dev)
Neil Horman c48b60c
 
Neil Horman c48b60c
 			mapping = pci_map_single(tp->pdev, skb->data, PKT_BUF_SZ,
Neil Horman c48b60c
 						 PCI_DMA_FROMDEVICE);
Neil Horman c48b60c
+			if (dma_mapping_error(&tp->pdev->dev, mapping)) {
Neil Horman c48b60c
+				dev_kfree_skb(skb);
Neil Horman c48b60c
+				tp->rx_buffers[entry].skb = NULL;
Neil Horman c48b60c
+				break;
Neil Horman c48b60c
+			}
Neil Horman c48b60c
+
Neil Horman c48b60c
 			tp->rx_buffers[entry].mapping = mapping;
Neil Horman c48b60c
 
Neil Horman c48b60c
 			tp->rx_ring[entry].buffer1 = cpu_to_le32(mapping);