diff options
Diffstat (limited to 'drivers/infiniband/sw/rdmavt/qp.c')
| -rw-r--r-- | drivers/infiniband/sw/rdmavt/qp.c | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/infiniband/sw/rdmavt/qp.c b/drivers/infiniband/sw/rdmavt/qp.c index ae50b56e8913..8ef112f883a7 100644 --- a/drivers/infiniband/sw/rdmavt/qp.c +++ b/drivers/infiniband/sw/rdmavt/qp.c @@ -3190,7 +3190,11 @@ serr_no_r_lock:  	spin_lock_irqsave(&sqp->s_lock, flags);  	rvt_send_complete(sqp, wqe, send_status);  	if (sqp->ibqp.qp_type == IB_QPT_RC) { -		int lastwqe = rvt_error_qp(sqp, IB_WC_WR_FLUSH_ERR); +		int lastwqe; + +		spin_lock(&sqp->r_lock); +		lastwqe = rvt_error_qp(sqp, IB_WC_WR_FLUSH_ERR); +		spin_unlock(&sqp->r_lock);  		sqp->s_flags &= ~RVT_S_BUSY;  		spin_unlock_irqrestore(&sqp->s_lock, flags);  | 
