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