From: Eric W. Biederman Date: Sat, 15 Mar 2014 23:49:05 +0000 (-0700) Subject: enic: Call dev_kfree_skb_any instead of dev_kfree_skb. X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=98d8a65d106bab634ea6ed66d8fad8d60a4d6d99;p=openwrt%2Fstaging%2Fblogic.git enic: Call dev_kfree_skb_any instead of dev_kfree_skb. Replace dev_kfree_skb with dev_kfree_skb_any in enic_hard_start_xmit that can be called in hard irq and other contexts. enic_hard_start_xmit only frees the skb when dropping it. Signed-off-by: "Eric W. Biederman" --- diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c index 4c35fc8fad99..2945718ce806 100644 --- a/drivers/net/ethernet/cisco/enic/enic_main.c +++ b/drivers/net/ethernet/cisco/enic/enic_main.c @@ -521,7 +521,7 @@ static netdev_tx_t enic_hard_start_xmit(struct sk_buff *skb, unsigned int txq_map; if (skb->len <= 0) { - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); return NETDEV_TX_OK; } @@ -536,7 +536,7 @@ static netdev_tx_t enic_hard_start_xmit(struct sk_buff *skb, if (skb_shinfo(skb)->gso_size == 0 && skb_shinfo(skb)->nr_frags + 1 > ENIC_NON_TSO_MAX_DESC && skb_linearize(skb)) { - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); return NETDEV_TX_OK; }