mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2026-10-14 05:55:17 +00:00
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: Israel Rukshin <israelr@nvidia.com> Reviewed-by: Max Gurtovoy <mgurtovoy@nvidia.com> Signed-off-by: Christoph Hellwig <hch@lst.de> |
History
|
|
|---|---|---|
| .. | ||
| admin-cmd.c | ||
| configfs.c | ||
| core.c | ||
| discovery.c | ||
| fabrics-cmd.c | ||
| fc.c | ||
| fcloop.c | ||
| io-cmd-bdev.c | ||
| io-cmd-file.c | ||
| Kconfig | ||
| loop.c | ||
| Makefile | ||
| nvmet.h | ||
| passthru.c | ||
| rdma.c | ||
| tcp.c | ||
| trace.c | ||
| trace.h | ||