netdev
[Top] [All Lists]

[PATCH] IPV6: Fix large packet length check

To: davem@xxxxxxxxxx
Subject: [PATCH] IPV6: Fix large packet length check
From: YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@xxxxxxxxxxxxxx>
Date: Tue, 24 Jun 2003 12:40:30 +0900 (JST)
Cc: netdev@xxxxxxxxxxx, yoshfuji@xxxxxxxxxxxxxx
Organization: USAGI Project
Sender: netdev-bounce@xxxxxxxxxxx
Hello.

There were two errors in length check in the output path.
We could not send large packet (65535bytes).

This patch fixes the problem.
Patch against [PATCH] IPV6: use macro for maximum payload length patch.

Thanks.

--- linux-2.5+advmss+magic/net/ipv6/ip6_output.c.orig   Tue Jun 24 12:34:12 2003
+++ linux-2.5+advmss+magic/net/ipv6/ip6_output.c        Tue Jun 24 12:32:34 2003
@@ -1265,7 +1265,7 @@
        maxfraglen = ((mtu - fragheaderlen) & ~7) + fragheaderlen - 
sizeof(struct frag_hdr);
 
        if (mtu <= sizeof(struct ipv6hdr) + IPV6_MAXPLEN) {
-               if (inet->cork.length + length > IPV6_MAXPLEN - fragheaderlen) {
+               if (inet->cork.length + length > sizeof(struct ipv6hdr) + 
IPV6_MAXPLEN - fragheaderlen) {
                        ipv6_local_error(sk, EMSGSIZE, fl, mtu-exthdrlen);
                        return -EMSGSIZE;
                }
@@ -1461,7 +1461,7 @@
        
        *(u32*)hdr = fl->fl6_flowlabel | htonl(0x60000000);
 
-       if (skb->len <= IPV6_MAXPLEN)
+       if (skb->len <= sizeof(struct ipv6hdr) + IPV6_MAXPLEN)
                hdr->payload_len = htons(skb->len - sizeof(struct ipv6hdr));
        else
                hdr->payload_len = 0;

-- 
Hideaki YOSHIFUJI @ USAGI Project <yoshfuji@xxxxxxxxxxxxxx>
GPG FP: 9022 65EB 1ECF 3AD1 0BDF  80D8 4807 F894 E062 0EEA

<Prev in Thread] Current Thread [Next in Thread>