sh_eth: Check for DMA mapping errors on transmit
dma_map_single() may fail if an IOMMU or swiotlb is in use, so we need to check for this. Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
740c7f31c0
commit
aa3933b873
|
@ -2174,6 +2174,10 @@ static int sh_eth_start_xmit(struct sk_buff *skb, struct net_device *ndev)
|
||||||
skb->len + 2);
|
skb->len + 2);
|
||||||
txdesc->addr = dma_map_single(&ndev->dev, skb->data, skb->len,
|
txdesc->addr = dma_map_single(&ndev->dev, skb->data, skb->len,
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
|
if (dma_mapping_error(&ndev->dev, txdesc->addr)) {
|
||||||
|
kfree_skb(skb);
|
||||||
|
return NETDEV_TX_OK;
|
||||||
|
}
|
||||||
txdesc->buffer_length = skb->len;
|
txdesc->buffer_length = skb->len;
|
||||||
|
|
||||||
if (entry >= mdp->num_tx_ring - 1)
|
if (entry >= mdp->num_tx_ring - 1)
|
||||||
|
|
Loading…
Reference in New Issue