IB/ipoib: Add missing locking when CM object is deleted
authorShlomo Pongratz <shlomop@mellanox.com>
Mon, 13 Aug 2012 14:39:49 +0000 (14:39 +0000)
committerRoland Dreier <roland@purestorage.com>
Tue, 14 Aug 2012 22:21:44 +0000 (15:21 -0700)
commitfa16ebed31f336e41970f3f0ea9e8279f6be2d27
tree73d9e6edccbb22680fd0a11e42aa13ff5df7c4f7
parent0d7614f09c1ebdbaa1599a5aba7593f147bf96ee
IB/ipoib: Add missing locking when CM object is deleted

Commit b63b70d87741 ("IPoIB: Use a private hash table for path lookup
in xmit path") introduced a bug where in ipoib_cm_destroy_tx() a CM
object is moved between lists without any supported locking.  Under a
stress test, this eventually leads to list corruption and a crash.

Previously when this routine was called, callers were taking the
device priv lock.  Currently this function is called from the RCU
callback associated with neighbour deletion.  Fix the race by taking
the same lock we used to before.

Signed-off-by: Shlomo Pongratz <shlomop@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/ulp/ipoib/ipoib_cm.c