Thread (288 messages) 288 messages, 13 authors, 2014-04-01

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 -0700
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help