• Roland Dreier's avatar
    IPoIB: Fix deadlock between ipoib_open() and child interface create · cbbe1efa
    Roland Dreier authored
    Fix a deadlock between child interface creation/deletion and ipoib
    start/stop.  The former takes vlan_mutex, and then might take RTNL via
    register_netdev()/unregister_netdev().  The latter is executed with
    RTNL held, and tries to take vlan_mutex, which can lead to an AB-BA
    deadlock.
    
    Fix this by having the child interface creation/deletion code take the
    RTNL first so vlan_mutex always nests inside RTNL.  We can use
    register_netdevice() for child interfaces because we form the
    interface name from the parent interface and hence don't need the '%'
    expansion of register_netdev().
    Reported-by: default avatarYossi Etigin <yosefe@voltaire.com>
    Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
    cbbe1efa
ipoib_vlan.c 4.72 KB