Re: tainted warnings with tcp splicing in 3.7.1

Willy Tarreau
2013-01-10T07:21:47Z

On Wed, Jan 09, 2013 at 10:59:09PM -0800, Eric Dumazet wrote:
> From: Eric Dumazet <edumazet@google.com>
>
> On Wed, 2013-01-09 at 09:09 -0800, Eric Dumazet wrote:
>
> > My feeling is that tcp_recv_skb() should eat skbs instead of only
> > finding the right one
> >
>
> Thats indeed the case.
>
> > Thats because skb_splice_bits() releases the socket lock before calling
> > splice_to_pipe()
> >
> > Once socket is released, other incoming TCP frames can be processed, and
> > the skb we are actually processing might be 'collapsed' into smaller
> > units.
> >
> > Christian, if I send you patches, are you OK to test them ?
> >
> >
>
> Here is the patch fixing this issue.
>
> Thanks a lot for your report, this is a very very old bug.
>
> GRO being more deployed, and with TCP coalescing as well, chances to
> trigger this bug increased a lot.
>
> To reproduce it, I had to force MSS=400 and stress the receiver,
> adding extra delays in skb_splice_bits() with socket lock being not
> held.

FWIW, I tested your patch here and did not notice any regression
compared to last week-end tests, at various MTU size combinations.

Cheers,
Willy