net: arc_emac: use dev_kfree_skb_any instead of dev_kfree_skb
authorWei Yongjun <weiyongjun1@huawei.com>
Wed, 19 Oct 2016 13:47:52 +0000 (13:47 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 19 Oct 2016 19:16:24 +0000 (15:16 -0400)
Replace dev_kfree_skb with dev_kfree_skb_any in arc_emac_tx()
which can be called from hard irq context (netpoll) and from
other contexts. arc_emac_tx() only frees skbs that it has
dropped.

This is detected by Coccinelle semantic patch.

Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/arc/emac_main.c

index b0da9693f28a130a65e59a007548c773fa422e7f..95d8b3ea7bc3bf06e4fdd3dfe654a8d727963b45 100644 (file)
@@ -633,7 +633,7 @@ static int arc_emac_tx(struct sk_buff *skb, struct net_device *ndev)
        if (unlikely(dma_mapping_error(&ndev->dev, addr))) {
                stats->tx_dropped++;
                stats->tx_errors++;
-               dev_kfree_skb(skb);
+               dev_kfree_skb_any(skb);
                return NETDEV_TX_OK;
        }
        dma_unmap_addr_set(&priv->tx_buff[*txbd_curr], addr, addr);