diff options
author | Shlomo Pongratz <shlomop@mellanox.com> | 2012-08-29 11:14:34 -0400 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2012-09-12 12:21:45 -0400 |
commit | b5120a6e11e90d98d8a752545ac60bfa1ea95f1a (patch) | |
tree | f376dd84bf679fb2b3ed5ae18af967455a75a958 /include/linux/zutil.h | |
parent | 66172c09938bfc4efdcf9b5e0246a85b9b76dd54 (diff) |
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>
Diffstat (limited to 'include/linux/zutil.h')
0 files changed, 0 insertions, 0 deletions