ip6_vti: fix creating fallback tunnel device for vti6
authorHaishuang Yan <yanhaishuang@cmss.chinamobile.com>
Sun, 19 Aug 2018 07:05:05 +0000 (15:05 +0800)
committerDavid S. Miller <davem@davemloft.net>
Sun, 19 Aug 2018 18:26:39 +0000 (11:26 -0700)
When set fb_tunnels_only_for_init_net to 1, don't create fallback tunnel
device for vti6 when a new namespace is created.

Tested:
[root@builder2 ~]# modprobe ip6_tunnel
[root@builder2 ~]# modprobe ip6_vti
[root@builder2 ~]# echo 1 > /proc/sys/net/core/fb_tunnels_only_for_init_net
[root@builder2 ~]# unshare -n
[root@builder2 ~]# ip link
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group
default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/ip6_vti.c

index 65d4a8044cb0cb732edc6a8984995a4d871009d2..38dec9da90d338b4704a8acd4586536b467f75b9 100644 (file)
@@ -1106,6 +1106,8 @@ static int __net_init vti6_init_net(struct net *net)
        ip6n->tnls[0] = ip6n->tnls_wc;
        ip6n->tnls[1] = ip6n->tnls_r_l;
 
+       if (!net_has_fallback_tunnels(net))
+               return 0;
        err = -ENOMEM;
        ip6n->fb_tnl_dev = alloc_netdev(sizeof(struct ip6_tnl), "ip6_vti0",
                                        NET_NAME_UNKNOWN, vti6_dev_setup);