summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorPaolo Abeni <pabeni@redhat.com>2017-06-23 14:19:51 +0200
committerDavid S. Miller <davem@davemloft.net>2017-06-23 11:18:43 -0400
commit9bd780f5e0663035d41a95a6b87eced011ba7e2a (patch)
tree9179096d14dd69ac1cd7355d55d0c4ade8ac0b9e /include
parent4b943faedfc29eda882851b772c06cecdf78d8e3 (diff)
downloadlinux-9bd780f5e0663035d41a95a6b87eced011ba7e2a.tar.bz2
udp: fix poll()
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@ellerman.id.au> Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions