Commit e308e25c authored by Stephen Hemminger's avatar Stephen Hemminger Committed by David S. Miller

[IPV4] udp: trim forgets about CHECKSUM_HW

A UDP packet may contain extra data that needs to be trimmed off.
But when doing so, UDP forgets to fixup the skb checksum if CHECKSUM_HW
is being used.

I think this explains the case of a NFS receive using skge driver
causing 'udp hw checksum failures' when interacting with a crufty
settop box.
Signed-off-by: default avatarStephen Hemminger <shemminger@osdl.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0e4e4220
...@@ -1141,7 +1141,7 @@ int udp_rcv(struct sk_buff *skb) ...@@ -1141,7 +1141,7 @@ int udp_rcv(struct sk_buff *skb)
if (ulen > len || ulen < sizeof(*uh)) if (ulen > len || ulen < sizeof(*uh))
goto short_packet; goto short_packet;
if (pskb_trim(skb, ulen)) if (pskb_trim_rcsum(skb, ulen))
goto short_packet; goto short_packet;
if (udp_checksum_init(skb, uh, ulen, saddr, daddr) < 0) if (udp_checksum_init(skb, uh, ulen, saddr, daddr) < 0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment