Re: [PATCH 01/11] bonding: Call dev_kfree_skby_any instead of kfree_skb.
From: Eric W. Biederman <hidden>
Date: 2014-03-11 05:31:56
David Miller [off-list ref] writes:
From: Eric Dumazet <redacted> Date: Mon, 10 Mar 2014 20:44:27 -0700quoted
On Mon, 2014-03-10 at 20:18 -0700, Eric W. Biederman wrote:quoted
- consume_skb(skb); + dev_consume_skb_any(skb);Why is this needed ? AFAIK we run in softirq here.quoted
return ret; } }@@ -1132,7 +1132,7 @@ static rx_handler_result_t bond_handle_frame(struct sk_buff **pskb) if (unlikely(skb_cow_head(skb, skb->data - skb_mac_header(skb)))) { - kfree_skb(skb); + dev_kfree_skb_any(skb);same here.These changes eminate from a recent discussion about netpoll, which can call into the driver from hardware interrupts, particularly when netconsole services a printk from hardware interrupt context. bnx2x already makes similar ammends. I hope that Eric B. here audited to make sure he's only doing this transformation in situations that actually need this treatment for the above mentioned issue.
It looks like our replies crossed. Yes every location that I changed is a location that I can currently find a code path to from a printk in a hard irq context. Furthermore the difference between dev_kfree_skb/kfree_skb and dev_kfree_skb_any is simply a test to see if you are in interrupt context so there should be no functional differences except when we make it to these code paths in interrupt context. Eric