diff options
author | 2017-11-09 07:21:26 -0800 | |
---|---|---|
committer | 2017-11-13 16:59:22 -0500 | |
commit | bc52e9ca74b9a395897bb640c6671b2cbf716032 (patch) | |
tree | bf286e85ae7597e6b6bbd744491ea49631904952 /drivers/infiniband/hw/bnxt_re | |
parent | iw_cxgb4: only call the cq comp_handler when the cq is armed (diff) | |
download | linux-bc52e9ca74b9a395897bb640c6671b2cbf716032.tar.gz linux-bc52e9ca74b9a395897bb640c6671b2cbf716032.tar.bz2 linux-bc52e9ca74b9a395897bb640c6671b2cbf716032.zip |
iw_cxgb4: atomically flush the qp
__flush_qp() has a race condition where during the flush operation,
the qp lock is released allowing another thread to possibly post a WR,
which corrupts the queue state, possibly causing crashes. The lock was
released to preserve the cq/qp locking hierarchy of cq first, then qp.
However releasing the qp lock is not necessary; both RQ and SQ CQ locks
can be acquired first, followed by the qp lock, and then the RQ and SQ
flushing can be done w/o unlocking.
Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/hw/bnxt_re')
0 files changed, 0 insertions, 0 deletions