From: Aubrey Li Date: Thu, 19 Apr 2007 23:40:19 +0000 (+0200) Subject: [NET]: Fix UDP checksum issue in net poll mode. X-Git-Tag: v2.6.16.49-rc1~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=691d4b9f4f4479edb4c3c63c7dbf5c5fa1ce0979;p=thirdparty%2Fkernel%2Fstable.git [NET]: Fix UDP checksum issue in net poll mode. In net poll mode, the current checksum function doesn't consider the kind of packet which is padded to reach a specific minimum length. I believe that's the problem causing my test case failed. The following patch fixed this issue. Signed-off-by: Aubrey Li Signed-off-by: David S. Miller Signed-off-by: Adrian Bunk --- diff --git a/net/core/netpoll.c b/net/core/netpoll.c index ea51f8d02eb86..62753d3afc720 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -485,6 +485,13 @@ int __netpoll_rx(struct sk_buff *skb) if (skb->len < len || len < iph->ihl*4) goto out; + /* + * Our transport medium may have padded the buffer out. + * Now We trim to the true length of the frame. + */ + if (pskb_trim_rcsum(skb, len)) + goto out; + if (iph->protocol != IPPROTO_UDP) goto out;