diff options
author | 2012-08-29 15:14:34 +0000 | |
---|---|---|
committer | 2012-09-12 09:21:45 -0700 | |
commit | b5120a6e11e90d98d8a752545ac60bfa1ea95f1a (patch) | |
tree | f376dd84bf679fb2b3ed5ae18af967455a75a958 /lib/mpi/mpi-cmp.c | |
parent | IPoIB: Fix memory leak in the neigh table deletion flow (diff) | |
download | linux-dev-b5120a6e11e90d98d8a752545ac60bfa1ea95f1a.tar.xz linux-dev-b5120a6e11e90d98d8a752545ac60bfa1ea95f1a.zip |
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 'lib/mpi/mpi-cmp.c')
0 files changed, 0 insertions, 0 deletions