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