ipv6: move ip6_sk_accept_pmtu from generic pmtu update path to ipv6 one
authorHannes Frederic Sowa <hannes@stressinduktion.org>
Thu, 19 Dec 2013 11:54:58 +0000 (12:54 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sun, 22 Dec 2013 03:00:59 +0000 (22:00 -0500)
In commit 93b36cf3425b9b ("ipv6: support IPV6_PMTU_INTERFACE on sockets")
I made a horrible mistake to add ip6_sk_accept_pmtu to the generic
sctp_icmp_frag_needed path. This results in build warnings if IPv6 is
disabled which were luckily caught by Fengguang's kbuild bot. But it
also leads to a kernel panic IPv4 frag-needed packet is received.

Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Acked-by: Daniel Borkmann <dborkman@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/input.c
net/sctp/ipv6.c

index 042ec6c..2a192a7 100644 (file)
@@ -389,9 +389,6 @@ void sctp_icmp_frag_needed(struct sock *sk, struct sctp_association *asoc,
        if (!t || (t->pathmtu <= pmtu))
                return;
 
-       if (!ip6_sk_accept_pmtu(sk))
-               return;
-
        if (sock_owned_by_user(sk)) {
                asoc->pmtu_pending = 1;
                t->pmtu_pending = 1;
index 317e13e..14191ab 100644 (file)
@@ -172,7 +172,8 @@ static void sctp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
 
        switch (type) {
        case ICMPV6_PKT_TOOBIG:
-               sctp_icmp_frag_needed(sk, asoc, transport, ntohl(info));
+               if (ip6_sk_accept_pmtu(sk))
+                       sctp_icmp_frag_needed(sk, asoc, transport, ntohl(info));
                goto out_unlock;
        case ICMPV6_PARAMPROB:
                if (ICMPV6_UNK_NEXTHDR == code) {