• J
    ip6_tunnel: copy parms.name after register_netdevice · 731abb9c
    Josh Boyer 提交于
    Commit 1c5cae81 removed an explicit call to dev_alloc_name in ip6_tnl_create
    because register_netdevice will now create a valid name.  This works for the
    net_device itself.
    
    However the tunnel keeps a copy of the name in the parms structure for the
    ip6_tnl associated with the tunnel.  parms.name is set by copying the net_device
    name in ip6_tnl_dev_init_gen.  That function is called from ip6_tnl_dev_init in
    ip6_tnl_create, but it is done before register_netdevice is called so the name
    is set to a bogus value in the parms.name structure.
    
    This shows up if you do a simple tunnel add, followed by a tunnel show:
    
    [root@localhost ~]# ip -6 tunnel add remote fec0::100 local fec0::200
    [root@localhost ~]# ip -6 tunnel show
    ip6tnl0: ipv6/ipv6 remote :: local :: encaplimit 0 hoplimit 0 tclass 0x00 flowlabel 0x00000 (flowinfo 0x00000000)
    ip6tnl%d: ipv6/ipv6 remote fec0::100 local fec0::200 encaplimit 4 hoplimit 64 tclass 0x00 flowlabel 0x00000 (flowinfo 0x00000000)
    [root@localhost ~]#
    
    Fix this by moving the strcpy out of ip6_tnl_dev_init_gen, and calling it after
    register_netdevice has successfully returned.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: NJosh Boyer <jwboyer@redhat.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    731abb9c
ip6_tunnel.c 37.1 KB