IB/mlx5: Fix outstanding_pi index for GSI qps
commitb5671afe5e
upstream. Commitb0ffeb537f
("IB/mlx5: Fix iteration overrun in GSI qps") changed the way outstanding WRs are tracked for the GSI QP. But the fix did not cover the case when a call to ib_post_send() fails and updates index to track outstanding. Since the prior commmit outstanding_pi should not be bounded otherwise the loop generate_completions() will fail. Fixes:b0ffeb537f
("IB/mlx5: Fix iteration overrun in GSI qps") Link: https://lore.kernel.org/r/1576195889-23527-1-git-send-email-psajeepa@purestorage.com Signed-off-by: Prabhath Sajeepa <psajeepa@purestorage.com> Acked-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
b4d104ce6d
commit
320a24fae2
|
@ -507,8 +507,7 @@ int mlx5_ib_gsi_post_send(struct ib_qp *qp, const struct ib_send_wr *wr,
|
||||||
ret = ib_post_send(tx_qp, &cur_wr.wr, bad_wr);
|
ret = ib_post_send(tx_qp, &cur_wr.wr, bad_wr);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
/* Undo the effect of adding the outstanding wr */
|
/* Undo the effect of adding the outstanding wr */
|
||||||
gsi->outstanding_pi = (gsi->outstanding_pi - 1) %
|
gsi->outstanding_pi--;
|
||||||
gsi->cap.max_send_wr;
|
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
spin_unlock_irqrestore(&gsi->lock, flags);
|
spin_unlock_irqrestore(&gsi->lock, flags);
|
||||||
|
|
Loading…
Reference in New Issue