Patch "nvmet-rdma: update queue list during ib_device removal" has been added to the 4.14-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
nvmet-rdma: update queue list during ib_device removal
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
nvmet-rdma-update-queue-list-during-ib_device-removal.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Tue Dec 12 10:32:42 CET 2017
From: Israel Rukshin <[email protected]>
Date: Sun, 5 Nov 2017 08:43:01 +0000
Subject: nvmet-rdma: update queue list during ib_device removal
From: Israel Rukshin <[email protected]>
[ Upstream commit 43b92fd27aaef0f529c9321cfebbaec1d7b8f503 ]
A NULL deref happens when nvmet_rdma_remove_one() is called more than once (e.g. while connected via 2 ports).
The first call frees the queues related to the first ib_device but doesn't remove them from the queue list.
While calling nvmet_rdma_remove_one() for the second ib_device it goes over the full queue list again and we get the NULL deref.
--- drivers/nvme/target/rdma.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
drivers/nvme/target/rdma.c +4 -2
@@ -1512,15 +1512,17 @@ static struct nvmet_fabrics_ops nvmet_rdstatic void nvmet_rdma_remove_one (struct ib_device *ib_device,void *client_data) { -struct nvmet_rdma_queue *queue; +struct nvmet_rdma_queue *queue, *tmp;/* Device is being removed, delete all queues using this device */ mutex_lock (&nvmet_rdma_queue_mutex); -list_for_each_entry (queue, &nvmet_rdma_queue_list, queue_list) { +list_for_each_entry_safe (queue, tmp, &nvmet_rdma_queue_list, + queue_list) {if (queue->dev->device != ib_device)continue ;pr_info ("Removing queue %d\n" , queue->idx); +list_del_init (&queue->queue_list);__nvmet_rdma_queue_disconnect (queue); }mutex_unlock (&nvmet_rdma_queue_mutex);
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/nvmet-rdma-update-queue-list-during-ib_device-removal.patch