diff options
author | Michael S. Tsirkin <mst@mellanox.co.il> | 2006-03-02 11:07:47 -0800 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2006-03-20 10:08:20 -0800 |
commit | 9acf6a8570dcfc9f55724b8b71099fc8768e8c26 (patch) | |
tree | 5b265bf0474f321722d2690b5b5dc57cde80690e /drivers/infiniband/core | |
parent | 54d07e2a1ead2f093ce054cda2e0f5ec163c650c (diff) | |
download | blackbird-op-linux-9acf6a8570dcfc9f55724b8b71099fc8768e8c26.tar.gz blackbird-op-linux-9acf6a8570dcfc9f55724b8b71099fc8768e8c26.zip |
IPoIB: Fix multicast race between canceling and completing
ipoib_mcast_stop_thread currently tests mcast->query and if it is
NULL, does not perform wait_for_completion on the mcast and frees the
mcast object directly.
However, since both operations are done without locking, it is
possible that ipoib_mcast_join_complete is in progress on this mcast
object and has set mcast->query to NULL already.
Solve this by:
- taking priv->lock before we change mcast->query in ipoib_mcast_join_complete,
and keeping it until we no longer need the mcast object
- taking priv->lock around mcast->query test in ipoib_mcast_stop_thread
Signed-off-by: Michael S. Tsirkin <mst@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/core')
0 files changed, 0 insertions, 0 deletions