linux/drivers/infiniband
Michael S. Tsirkin 9acf6a8570 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>
2006-03-20 10:08:20 -08:00
..
core IB/uverbs: Return actual capacity from create SRQ operation 2006-03-20 10:08:16 -08:00
hw/mthca IB/mthca: Use an enum for HCA page size 2006-03-20 10:08:19 -08:00
ulp IPoIB: Fix multicast race between canceling and completing 2006-03-20 10:08:20 -08:00
Kconfig IB: Add SCSI RDMA Protocol (SRP) initiator 2005-11-02 14:07:13 -08:00
Makefile IB: Add SCSI RDMA Protocol (SRP) initiator 2005-11-02 14:07:13 -08:00