[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