gianfar: Carefully free skbs in functions called by netpoll.
authorEric W. Biederman <ebiederm@xmission.com>
Tue, 11 Mar 2014 21:20:26 +0000 (14:20 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 12 Mar 2014 20:22:13 +0000 (16:22 -0400)
netpoll can call functions in hard irq context that are ordinarily
called in lesser contexts.  For those functions use dev_kfree_skb_any
and dev_consume_skb_any so skbs are freed safely from hard irq
context.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/freescale/gianfar.c

index 68d9bf7940f63191dd7d0bf79abd41dc8ea791c1..6e12f936585621c64f1fa4a560566e75186216a4 100644 (file)
@@ -2192,13 +2192,13 @@ static int gfar_start_xmit(struct sk_buff *skb, struct net_device *dev)
                skb_new = skb_realloc_headroom(skb, fcb_len);
                if (!skb_new) {
                        dev->stats.tx_errors++;
-                       kfree_skb(skb);
+                       dev_kfree_skb_any(skb);
                        return NETDEV_TX_OK;
                }
 
                if (skb->sk)
                        skb_set_owner_w(skb_new, skb->sk);
-               consume_skb(skb);
+               dev_consume_skb_any(skb);
                skb = skb_new;
        }