Thread (19 messages) flat view 19 messages, 4 authors, 2012-06-07

Re: Change in alloc_skb() behavior in 3.2+ kernels?

From: Eric Dumazet <hidden>
Date: 2012-06-06 19:42:25

On Wed, 2012-06-06 at 11:51 -0700, David Miller wrote:
From: Grant Edwards <redacted>
Date: Wed, 6 Jun 2012 18:32:57 +0000 (UTC)
quoted
The kernel module that's started failing fills the allocated sk_buff
until tailroom() indicates it is full and then sends it.  The problem
is that sending a packet with a length of 1850 won't work (it's a
MAC-layer Ethernet packet).
The amount of tailroom an SKB has is implementation dependent.

It's incredibly poor form to rely upon it to determine whether a fully
sized frame has been constructed or not.

Please fix the code that does this.

By the way, we had a similar problem, and the fix was :

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff;h=a21d45726acacc963d8baddf74607d9b74e2b723

Grant, depending on the context, you might use skb->avail_size and
skb_availroom() as well.

Beware skb->avail_size is unioned with skb->{mark|dropcount}
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help