[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 <aubreylee@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
55569ce256
commit
5e7d7fa573
@@ -471,6 +471,13 @@ int __netpoll_rx(struct sk_buff *skb)
|
|||||||
if (skb->len < len || len < iph->ihl*4)
|
if (skb->len < len || len < iph->ihl*4)
|
||||||
goto out;
|
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)
|
if (iph->protocol != IPPROTO_UDP)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user