s2io: Call dev_kfree_skb_any instead of dev_kfree_skb.
authorEric W. Biederman <ebiederm@xmission.com>
Sun, 16 Mar 2014 00:47:58 +0000 (17:47 -0700)
committerEric W. Biederman <ebiederm@xmission.com>
Tue, 25 Mar 2014 04:19:07 +0000 (21:19 -0700)
Replace dev_kfree_skb with dev_kfree_skb_any in s2io_xmit that can
be called in hard irq and other contexts.

All instances that are changed are packet drops.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
drivers/net/ethernet/neterion/s2io.c

index d44fdb91808e0c5ef53970a608751ddd5363501b..a2844ff322c4c62bed8957a7f3797ad321359cbf 100644 (file)
@@ -4049,7 +4049,7 @@ static netdev_tx_t s2io_xmit(struct sk_buff *skb, struct net_device *dev)
        if (!is_s2io_card_up(sp)) {
                DBG_PRINT(TX_DBG, "%s: Card going down for reset\n",
                          dev->name);
-               dev_kfree_skb(skb);
+               dev_kfree_skb_any(skb);
                return NETDEV_TX_OK;
        }
 
@@ -4122,7 +4122,7 @@ static netdev_tx_t s2io_xmit(struct sk_buff *skb, struct net_device *dev)
            ((put_off+1) == queue_len ? 0 : (put_off+1)) == get_off) {
                DBG_PRINT(TX_DBG, "Error in xmit, No free TXDs.\n");
                s2io_stop_tx_queue(sp, fifo->fifo_no);
-               dev_kfree_skb(skb);
+               dev_kfree_skb_any(skb);
                spin_unlock_irqrestore(&fifo->tx_lock, flags);
                return NETDEV_TX_OK;
        }
@@ -4244,7 +4244,7 @@ pci_map_failed:
        swstats->pci_map_fail_cnt++;
        s2io_stop_tx_queue(sp, fifo->fifo_no);
        swstats->mem_freed += skb->truesize;
-       dev_kfree_skb(skb);
+       dev_kfree_skb_any(skb);
        spin_unlock_irqrestore(&fifo->tx_lock, flags);
        return NETDEV_TX_OK;
 }