• Xin Long's avatar
    ip6_tunnel: do not allow loading ip6_tunnel if ipv6 is disabled in cmdline · 8c22dab0
    Xin Long authored
    If ipv6 has been disabled from cmdline since kernel started, it makes
    no sense to allow users to create any ip6 tunnel. Otherwise, it could
    some potential problem.
    
    Jianlin found a kernel crash caused by this in ip6_gre when he set
    ipv6.disable=1 in grub:
    
    [  209.588865] Unable to handle kernel paging request for data at address 0x00000080
    [  209.588872] Faulting instruction address: 0xc000000000a3aa6c
    [  209.588879] Oops: Kernel access of bad area, sig: 11 [#1]
    [  209.589062] NIP [c000000000a3aa6c] fib_rules_lookup+0x4c/0x260
    [  209.589071] LR [c000000000b9ad90] fib6_rule_lookup+0x50/0xb0
    [  209.589076] Call Trace:
    [  209.589097] fib6_rule_lookup+0x50/0xb0
    [  209.589106] rt6_lookup+0xc4/0x110
    [  209.589116] ip6gre_tnl_link_config+0x214/0x2f0 [ip6_gre]
    [  209.589125] ip6gre_newlink+0x138/0x3a0 [ip6_gre]
    [  209.589134] rtnl_newlink+0x798/0xb80
    [  209.589142] rtnetlink_rcv_msg+0xec/0x390
    [  209.589151] netlink_rcv_skb+0x138/0x150
    [  209.589159] rtnetlink_rcv+0x48/0x70
    [  209.589169] netlink_unicast+0x538/0x640
    [  209.589175] netlink_sendmsg+0x40c/0x480
    [  209.589184] ___sys_sendmsg+0x384/0x4e0
    [  209.589194] SyS_sendmsg+0xd4/0x140
    [  209.589201] SyS_socketcall+0x3e0/0x4f0
    [  209.589209] system_call+0x38/0xe0
    
    This patch is to return -EOPNOTSUPP in ip6_tunnel_init if ipv6 has been
    disabled from cmdline.
    Reported-by: default avatarJianlin Shi <jishi@redhat.com>
    Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8c22dab0
ip6_tunnel.c 55.6 KB