lkml.org 
[lkml]   [2018]   [May]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 151/496] nvme-pci: Fix nvme queue cleanup if IRQ setup fails
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

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

    From: Jianchao Wang <jianchao.w.wang@oracle.com>

    [ Upstream commit f25a2dfc20e3a3ed8fe6618c331799dd7bd01190 ]

    This patch fixes nvme queue cleanup if requesting an IRQ handler for
    the queue's vector fails. It does this by resetting the cq_vector to
    the uninitialized value of -1 so it is ignored for a controller reset.

    Signed-off-by: Jianchao Wang <jianchao.w.wang@oracle.com>
    [changelog updates, removed misc whitespace changes]
    Signed-off-by: Keith Busch <keith.busch@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/nvme/host/pci.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    --- a/drivers/nvme/host/pci.c
    +++ b/drivers/nvme/host/pci.c
    @@ -1322,7 +1322,7 @@ static int nvme_create_queue(struct nvme
    nvmeq->cq_vector = qid - 1;
    result = adapter_alloc_cq(dev, qid, nvmeq);
    if (result < 0)
    - return result;
    + goto release_vector;

    result = adapter_alloc_sq(dev, qid, nvmeq);
    if (result < 0)
    @@ -1336,9 +1336,12 @@ static int nvme_create_queue(struct nvme
    return result;

    release_sq:
    + dev->online_queues--;
    adapter_delete_sq(dev, qid);
    release_cq:
    adapter_delete_cq(dev, qid);
    + release_vector:
    + nvmeq->cq_vector = -1;
    return result;
    }


    \
     
     \ /
      Last update: 2018-05-28 15:27    [W:4.408 / U:1.744 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site