On Wed, Dec 30, 2015 at 08:51:12AM -0500, Eric Dumazet wrote: > From: Eric Dumazet <edumazet@xxxxxxxxxx> > > Backport of this upstream commit into stable kernels : > 89c22d8c3b27 ("net: Fix skb csum races when peeking") > exposed a bug in udp stack vs MSG_PEEK support, when user provides > a buffer smaller than skb payload. > > In this case, > skb_copy_and_csum_datagram_iovec(skb, sizeof(struct udphdr), > msg->msg_iov); > returns -EFAULT. > > This bug does not happen in upstream kernels since Al Viro did a great > job to replace this into : > skb_copy_and_csum_datagram_msg(skb, sizeof(struct udphdr), msg); > This variant is safe vs short buffers. > > For the time being, instead reverting Herbert Xu patch and add back > skb->ip_summed invalid changes, simply store the result of > udp_lib_checksum_complete() so that we avoid computing the checksum a > second time, and avoid the problematic > skb_copy_and_csum_datagram_iovec() call. > > This patch can be applied on recent kernels as it avoids a double > checksumming, then backported to stable kernels as a bug fix. > > Signed-off-by: Eric Dumazet <edumazet@xxxxxxxxxx> Acked-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> -- Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html