• John Fastabend's avatar
    macvlan: resolve ENOENT errors on creation · 47d4ab91
    John Fastabend authored
    After the commit below attempting to create macvlan devices was
    resulting in ENOENT errors,
    
    # ip link add link p3p2 type macvlan
    RTNETLINK answers: Invalid argument
    
    This happens because netdev_upper_dev_link() is called before
    register_netdevice() in the macvlan code. Through a call chain
    this results in a call to __netdev_adjacent_dev_insert() and
    finally a sysfs_create_link(). This requires the kobject of
    the macvlan to be registered which is done in register_netdevice().
    If there is no kobject which is the case here the ENOENT error
    is seen on the command line.
    
    To resolve this move the netdev_upper_dev_link() call below
    the register_netdevice() call. This aligns with vlan driver
    flow.
    
    Regression introduced here,
    
    commit 5831d66e
    Author: Veaceslav Falico <vfalico@redhat.com>
    Date:   Wed Sep 25 09:20:32 2013 +0200
    
        net: create sysfs symlinks for neighbour devices
    
    CC: Veaceslav Falico <vfalico@redhat.com>
    CC: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: default avatarJohn Fastabend <john.r.fastabend@intel.com>
    Acked-by: default avatarVeaceslav Falico <vfalico@redhat.com>
    Acked-by: default avatarNeil Horman <nhorman@tuxdriver.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    47d4ab91
macvlan.c 26 KB