• Shlomo Pongratz's avatar
    IPoIB: Fix AB-BA deadlock when deleting neighbours · b5120a6e
    Shlomo Pongratz authored
    Lockdep points out a circular locking dependency betwwen the ipoib
    device priv spinlock (priv->lock) and the neighbour table rwlock
    (ntbl->rwlock).
    
    In the normal path, ie neigbour garbage collection task, the neigh
    table rwlock is taken first and then if the neighbour needs to be
    deleted, priv->lock is taken.
    
    However in some error paths, such as in ipoib_cm_handle_tx_wc(),
    priv->lock is taken first and then ipoib_neigh_free routine is called
    which in turn takes the neighbour table ntbl->rwlock.
    
    The solution is to get rid the neigh table rwlock completely and use
    only priv->lock.
    Signed-off-by: default avatarShlomo Pongratz <shlomop@mellanox.com>
    Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
    b5120a6e
ipoib.h 19.9 KB