diff options
author | Stephen Hemminger <shemminger@osdl.org> | 2005-09-08 15:32:21 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2005-09-08 15:32:21 -0400 |
commit | e308e25c97f06cf704e65eeb773412f5460a3b93 (patch) | |
tree | 295885afa3300455fa1b7cb0dd18a543d73fc744 /net | |
parent | 0e4e4220f10bf8f58a8606f0cb28538088c64b1a (diff) |
[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: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/udp.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index e5beca7de86c..e0bd1013cb0d 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
@@ -1141,7 +1141,7 @@ int udp_rcv(struct sk_buff *skb) | |||
1141 | if (ulen > len || ulen < sizeof(*uh)) | 1141 | if (ulen > len || ulen < sizeof(*uh)) |
1142 | goto short_packet; | 1142 | goto short_packet; |
1143 | 1143 | ||
1144 | if (pskb_trim(skb, ulen)) | 1144 | if (pskb_trim_rcsum(skb, ulen)) |
1145 | goto short_packet; | 1145 | goto short_packet; |
1146 | 1146 | ||
1147 | if (udp_checksum_init(skb, uh, ulen, saddr, daddr) < 0) | 1147 | if (udp_checksum_init(skb, uh, ulen, saddr, daddr) < 0) |