Thread (31 messages) flat view 31 messages, 4 authors, 2011-11-18

Re: PROBLEM: System call 'sendmsg' of process ospfd (quagga) causes kernel oops

From: Eric Dumazet <hidden>
Date: 2011-10-18 10:01:17
Also in: lkml

Le mardi 18 octobre 2011 à 11:34 +0200, Herbert Xu a écrit :
On Tue, Oct 18, 2011 at 04:30:32AM +0200, Eric Dumazet wrote:
quoted
If David/Herbert/Timo agree, then patch should find its way into current
kernel, then to stable trees as well.
Actually, I think we should instead fix the users of needed_headroom
to not read it twice which is causing problems here.

GRE tunnels by their nature do not have a fixed value for
needed_headroom.  As the underlying routes change the necessary
headroom may need to be adjusted due to further encapsulation such
as IPsec.

Keeping it constant from tunnel creation may result in suboptimal
performance due to unnecessary header reallocations.

However, until we audit the stack to see if there are further
instances of double-readings such as the one causing the crash
here, I'm fine with your patch making it constant.

Once we're sure that all of the double-readings are gone we
can revert to a dynamic needed_headroom.
Sure, we can work on this path for future kernels.

Adding an RCU protected structure to hold hard_header_len /
needed_headroom / needed_tailroom should be possible, but this adds yet
another pointer dereference...

Thanks !
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help