mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 18:41:58 +09:00
nvme-rdma: fix double freeing of async event data
[ Upstream commit 6344d02dc8 ]
Some error paths in configuration of admin queue free data buffer
associated with async request SQE without resetting the data buffer
pointer to NULL, This buffer is also freed up again if the controller
is shutdown or reset.
Signed-off-by: Prabhath Sajeepa <psajeepa@purestorage.com>
Reviewed-by: Roland Dreier <roland@purestorage.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
5893e48f8f
commit
992a773cb9
@@ -184,6 +184,7 @@ static int nvme_rdma_alloc_qe(struct ib_device *ibdev, struct nvme_rdma_qe *qe,
|
||||
qe->dma = ib_dma_map_single(ibdev, qe->data, capsule_size, dir);
|
||||
if (ib_dma_mapping_error(ibdev, qe->dma)) {
|
||||
kfree(qe->data);
|
||||
qe->data = NULL;
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@@ -816,6 +817,7 @@ out_free_tagset:
|
||||
out_free_async_qe:
|
||||
nvme_rdma_free_qe(ctrl->device->dev, &ctrl->async_event_sqe,
|
||||
sizeof(struct nvme_command), DMA_TO_DEVICE);
|
||||
ctrl->async_event_sqe.data = NULL;
|
||||
out_free_queue:
|
||||
nvme_rdma_free_queue(&ctrl->queues[0]);
|
||||
return error;
|
||||
|
||||
Reference in New Issue
Block a user