| 1 |
From stable-bounces@linux.kernel.org Tue Sep 6 15:52:37 2005
|
| 2 |
Date: Tue, 06 Sep 2005 15:52:34 -0700 (PDT)
|
| 3 |
To: stable@kernel.org
|
| 4 |
From: "David S. Miller" <davem@davemloft.net>
|
| 5 |
Subject: [IPV4]: Reassembly trim not clearing CHECKSUM_HW
|
| 6 |
|
| 7 |
From: Stephen Hemminger <shemminger@osdl.org>
|
| 8 |
|
| 9 |
[IPV4]: Reassembly trim not clearing CHECKSUM_HW
|
| 10 |
|
| 11 |
This was found by inspection while looking for checksum problems
|
| 12 |
with the skge driver that sets CHECKSUM_HW. It did not fix the
|
| 13 |
problem, but it looks like it is needed.
|
| 14 |
|
| 15 |
If IP reassembly is trimming an overlapping fragment, it
|
| 16 |
should reset (or adjust) the hardware checksum flag on the skb.
|
| 17 |
|
| 18 |
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
|
| 19 |
Signed-off-by: David S. Miller <davem@davemloft.net>
|
| 20 |
Signed-off-by: Chris Wright <chrisw@osdl.org>
|
| 21 |
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
| 22 |
---
|
| 23 |
net/ipv4/ip_fragment.c | 2 +-
|
| 24 |
1 files changed, 1 insertion(+), 1 deletion(-)
|
| 25 |
|
| 26 |
Index: linux-2.6.13.y/net/ipv4/ip_fragment.c
|
| 27 |
===================================================================
|
| 28 |
--- linux-2.6.13.y.orig/net/ipv4/ip_fragment.c
|
| 29 |
+++ linux-2.6.13.y/net/ipv4/ip_fragment.c
|
| 30 |
@@ -457,7 +457,7 @@ static void ip_frag_queue(struct ipq *qp
|
| 31 |
|
| 32 |
if (pskb_pull(skb, ihl) == NULL)
|
| 33 |
goto err;
|
| 34 |
- if (pskb_trim(skb, end-offset))
|
| 35 |
+ if (pskb_trim_rcsum(skb, end-offset))
|
| 36 |
goto err;
|
| 37 |
|
| 38 |
/* Find out which fragments are in front and at the back of us
|