• Roopa Prabhu's avatar
    unregister_netdevice : move RTM_DELLINK to until after ndo_uninit · 56bfa7ee
    Roopa Prabhu authored
    This patch fixes ordering of rtnl notifications during unregister_netdevice
    by moving RTM_DELLINK notification to until after ndo_uninit.
    
    The problem was seen with unregistering bond netdevices.
    
    bond ndo_uninit callback generates a few RTM_NEWLINK notifications for
    NETDEV_CHANGEADDR and NETDEV_FEAT_CHANGE. This is seen mostly when the
    bond is deleted with slaves still enslaved to the bond.
    
    During unregister netdevice (rollback_registered_many to be specific)
    bond ndo_uninit is called after RTM_DELLINK notification goes out.
    This results in userspace seeing RTM_DELLINK followed by a couple of
    RTM_NEWLINK's.
    
    In userspace problem was seen with libnl. libnl cache deletes the bond
    when it sees RTM_DELLINK and re-adds the bond with the following
    RTM_NEWLINK. Resulting in a stale bond entry in libnl cache when the kernel
    has already deleted the bond.
    
    This patch has been tested for bond, bridges and vlan devices.
    Signed-off-by: default avatarRoopa Prabhu <roopa@cumulusnetworks.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    56bfa7ee
dev.c 176 KB