• Israel Rukshin's avatar
    nvmet-rdma: Fix list_del corruption on queue establishment failure · 9ceb7863
    Israel Rukshin authored
    When a queue is in NVMET_RDMA_Q_CONNECTING state, it may has some
    requests at rsp_wait_list. In case a disconnect occurs at this
    state, no one will empty this list and will return the requests to
    free_rsps list. Normally nvmet_rdma_queue_established() free those
    requests after moving the queue to NVMET_RDMA_Q_LIVE state, but in
    this case __nvmet_rdma_queue_disconnect() is called before. The
    crash happens at nvmet_rdma_free_rsps() when calling
    list_del(&rsp->free_list), because the request exists only at
    the wait list. To fix the issue, simply clear rsp_wait_list when
    destroying the queue.
    Signed-off-by: default avatarIsrael Rukshin <israelr@nvidia.com>
    Reviewed-by: default avatarMax Gurtovoy <mgurtovoy@nvidia.com>
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    9ceb7863
rdma.c 50.8 KB