[PATCH net-next] udp: fix poll()
David Miller
davem at davemloft.net
Sat Jun 24 01:18:58 AEST 2017
From: Paolo Abeni <pabeni at redhat.com>
Date: Fri, 23 Jun 2017 14:19:51 +0200
> Michael reported an UDP breakage caused by the commit b65ac44674dd
> ("udp: try to avoid 2 cache miss on dequeue").
> The function __first_packet_length() can update the checksum bits
> of the pending skb, making the scratched area out-of-sync, and
> setting skb->csum, if the skb was previously in need of checksum
> validation.
>
> On later recvmsg() for such skb, checksum validation will be
> invoked again - due to the wrong udp_skb_csum_unnecessary()
> value - and will fail, causing the valid skb to be dropped.
>
> This change addresses the issue refreshing the scratch area in
> __first_packet_length() after the possible checksum update.
>
> Fixes: b65ac44674dd ("udp: try to avoid 2 cache miss on dequeue")
> Reported-by: Michael Ellerman <mpe at ellerman.id.au>
> Signed-off-by: Hannes Frederic Sowa <hannes at stressinduktion.org>
> Signed-off-by: Paolo Abeni <pabeni at redhat.com>
Thanks for fixing this so quickly, applied.
More information about the Linuxppc-dev
mailing list