linux/drivers/infiniband/ulp/ipoib
Shlomo Pongratz b5120a6e11 IPoIB: Fix AB-BA deadlock when deleting neighbours
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: Shlomo Pongratz <shlomop@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
2012-09-12 09:21:45 -07:00
..
ipoib_cm.c IB/ipoib: Add missing locking when CM object is deleted 2012-08-14 15:21:44 -07:00
ipoib_ethtool.c
ipoib_fs.c Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
ipoib_ib.c IPoIB: fix skb truesize underestimatiom 2012-07-10 23:33:12 -07:00
ipoib_main.c IPoIB: Fix AB-BA deadlock when deleting neighbours 2012-09-12 09:21:45 -07:00
ipoib_multicast.c IPoIB: Fix AB-BA deadlock when deleting neighbours 2012-09-12 09:21:45 -07:00
ipoib_verbs.c
ipoib_vlan.c
ipoib.h IPoIB: Fix AB-BA deadlock when deleting neighbours 2012-09-12 09:21:45 -07:00
Kconfig
Makefile