lkml.org 
[lkml]   [2020]   [Feb]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 067/116] IB/mlx5: Fix outstanding_pi index for GSI qps
    Date
    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);

    \
     
     \ /
      Last update: 2020-02-13 17:05    [W:4.017 / U:0.672 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site