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

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

From: Grant Edwards <hidden>
Date: 2012-06-06 20:30:16

On 2012-06-06, Eric Dumazet [off-list ref] wrote:
On Wed, 2012-06-06 at 11:51 -0700, David Miller wrote:
quoted
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}
Thanks for the pointer.

-- 
Grant Edwards               grant.b.edwards        Yow! ANN JILLIAN'S HAIR
                                  at               makes LONI ANDERSON'S
                              gmail.com            HAIR look like RICARDO
                                                   MONTALBAN'S HAIR!
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help