| From b5671afe5e39ed71e94eae788bacdcceec69db09 Mon Sep 17 00:00:00 2001 |
| From: Prabhath Sajeepa <psajeepa@purestorage.com> |
| Date: Thu, 12 Dec 2019 17:11:29 -0700 |
| Subject: IB/mlx5: Fix outstanding_pi index for GSI qps |
| |
| From: Prabhath Sajeepa <psajeepa@purestorage.com> |
| |
| commit b5671afe5e39ed71e94eae788bacdcceec69db09 upstream. |
| |
| Commit b0ffeb537f3a ("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: b0ffeb537f3a ("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> |
| |
| --- |
| drivers/infiniband/hw/mlx5/gsi.c | 3 +-- |
| 1 file changed, 1 insertion(+), 2 deletions(-) |
| |
| --- a/drivers/infiniband/hw/mlx5/gsi.c |
| +++ b/drivers/infiniband/hw/mlx5/gsi.c |
| @@ -507,8 +507,7 @@ int mlx5_ib_gsi_post_send(struct ib_qp * |
| ret = ib_post_send(tx_qp, &cur_wr.wr, bad_wr); |
| if (ret) { |
| /* Undo the effect of adding the outstanding wr */ |
| - gsi->outstanding_pi = (gsi->outstanding_pi - 1) % |
| - gsi->cap.max_send_wr; |
| + gsi->outstanding_pi--; |
| goto err; |
| } |
| spin_unlock_irqrestore(&gsi->lock, flags); |