David Miller <davem@xxxxxxxxxxxxx> writes: > From: Eric Dumazet <eric.dumazet@xxxxxxxxx> > Date: Mon, 10 Mar 2014 20:44:27 -0700 > >> On Mon, 2014-03-10 at 20:18 -0700, Eric W. Biederman wrote: >>> - consume_skb(skb); >>> + dev_consume_skb_any(skb); >> >> Why is this needed ? AFAIK we run in softirq here. >> >>> 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 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html