lkml.org 
[lkml]   [2018]   [Oct]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 104/137] IB/srp: Avoid that sg_reset -d ${srp_device} triggers an infinite loop
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Bart Van Assche <bvanassche@acm.org>

    commit ee92efe41cf358f4b99e73509f2bfd4733609f26 upstream.

    Use different loop variables for the inner and outer loop. This avoids
    that an infinite loop occurs if there are more RDMA channels than
    target->req_ring_size.

    Fixes: d92c0da71a35 ("IB/srp: Add multichannel support")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/infiniband/ulp/srp/ib_srp.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    --- a/drivers/infiniband/ulp/srp/ib_srp.c
    +++ b/drivers/infiniband/ulp/srp/ib_srp.c
    @@ -2669,7 +2669,7 @@ static int srp_reset_device(struct scsi_
    {
    struct srp_target_port *target = host_to_target(scmnd->device->host);
    struct srp_rdma_ch *ch;
    - int i;
    + int i, j;
    u8 status;

    shost_printk(KERN_ERR, target->scsi_host, "SRP reset_device called\n");
    @@ -2683,8 +2683,8 @@ static int srp_reset_device(struct scsi_

    for (i = 0; i < target->ch_count; i++) {
    ch = &target->ch[i];
    - for (i = 0; i < target->req_ring_size; ++i) {
    - struct srp_request *req = &ch->req_ring[i];
    + for (j = 0; j < target->req_ring_size; ++j) {
    + struct srp_request *req = &ch->req_ring[j];

    srp_finish_req(ch, req, scmnd->device, DID_RESET << 16);
    }

    \
     
     \ /
      Last update: 2018-10-02 15:46    [W:5.761 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site