[PATCH] Use rsps_lock in nvmet_rdma_free_rsp
Tomita.Haruo at toshiba-sol.co.jp
Tomita.Haruo at toshiba-sol.co.jp
Mon Nov 21 21:32:42 PST 2016
Hi Christoph and Sagi,
Without using rsps_lock in nvmet_rdma_free_rsp, free_list is being operated.
The following patch, this issue fixed. Is this patch right?
rdma.c | 3 +++
1 file changed, 3 insertions(+)
--- linux-4.9-rc6/drivers/nvme/target/rdma.c.org 2016-11-21 06:52:19.000000000 +0900
+++ linux-4.9-rc6/drivers/nvme/target/rdma.c 2016-11-22 14:04:59.387510444 +0900
@@ -423,11 +423,14 @@ static void nvmet_rdma_free_rsps(struct
{
struct nvmet_rdma_device *ndev = queue->dev;
int i, nr_rsps = queue->recv_queue_size * 2;
+ unsigned long flags;
for (i = 0; i < nr_rsps; i++) {
+ spin_lock_irqsave(&queue->rsps_lock, flags);
struct nvmet_rdma_rsp *rsp = &queue->rsps[i];
list_del(&rsp->free_list);
+ spin_unlock_irqrestore(&queue->rsps_lock, flags);
nvmet_rdma_free_rsp(ndev, rsp);
}
kfree(queue->rsps);
thanks
--
Haruo
More information about the Linux-nvme
mailing list