]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
sctp: Drop ICMP packet too big message with MTU larger than current PMTU
authorWei Yongjun <yjwei@cn.fujitsu.com>
Thu, 23 Oct 2008 07:59:52 +0000 (00:59 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 23 Oct 2008 07:59:52 +0000 (00:59 -0700)
If ICMP packet too big message is received with MTU larger than current
PMTU, SCTP will still accept this ICMP message and sync the PMTU of assoc
with the wrong MTU.

Endpoing A                 Endpoint B
(ESTABLISHED)              (ESTABLISHED)
ICMP         --------->
(packet too big, MTU too larger)
                           sync PMTU

This patch fixed the problem by drop that ICMP message.

Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/input.c

index a49fa80b57b96ff2047d53d13c3a8ad134ecffbe..bf612d954d413fd46ccc489202f8014b5b2ae556 100644 (file)
@@ -369,7 +369,7 @@ static void sctp_add_backlog(struct sock *sk, struct sk_buff *skb)
 void sctp_icmp_frag_needed(struct sock *sk, struct sctp_association *asoc,
                           struct sctp_transport *t, __u32 pmtu)
 {
-       if (!t || (t->pathmtu == pmtu))
+       if (!t || (t->pathmtu <= pmtu))
                return;
 
        if (sock_owned_by_user(sk)) {