Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
[firefly-linux-kernel-4.4.55.git] / net / ipv6 / ip6_input.c
index 5ab923e51af3d4232afe9ea56af0933b7dcb8b9c..47975e363fcdec47ad3c12f5097688e839772167 100644 (file)
 
 
 
-inline int ip6_rcv_finish( struct sk_buff *skb)
+int ip6_rcv_finish(struct sk_buff *skb)
 {
-       if (skb_dst(skb) == NULL)
+       if (sysctl_ip_early_demux && !skb_dst(skb)) {
+               const struct inet6_protocol *ipprot;
+
+               rcu_read_lock();
+               ipprot = rcu_dereference(inet6_protos[ipv6_hdr(skb)->nexthdr]);
+               if (ipprot && ipprot->early_demux)
+                       ipprot->early_demux(skb);
+               rcu_read_unlock();
+       }
+       if (!skb_dst(skb))
                ip6_route_input(skb);
 
        return dst_input(skb);