RDMA/rtrs-srv: Free srv_mr iu only when always_invalidate is true
authorMd Haris Iqbal <haris.iqbal@ionos.com>
Mon, 20 Nov 2023 15:41:41 +0000 (16:41 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Dec 2023 17:45:13 +0000 (18:45 +0100)
[ Upstream commit 3a71cd6ca0ce33d1af019ecf1d7167406fa54400 ]

Since srv_mr->iu is allocated and used only when always_invalidate is
true, free it only when always_invalidate is true.

Fixes: 9cb837480424 ("RDMA/rtrs: server: main functionality")
Signed-off-by: Md Haris Iqbal <haris.iqbal@ionos.com>
Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
Signed-off-by: Grzegorz Prajsner <grzegorz.prajsner@ionos.com>
Link: https://lore.kernel.org/r/20231120154146.920486-5-haris.iqbal@ionos.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/ulp/rtrs/rtrs-srv.c

index 4be0e5b..925b714 100644 (file)
@@ -551,7 +551,10 @@ static void unmap_cont_bufs(struct rtrs_srv_path *srv_path)
                struct rtrs_srv_mr *srv_mr;
 
                srv_mr = &srv_path->mrs[i];
-               rtrs_iu_free(srv_mr->iu, srv_path->s.dev->ib_dev, 1);
+
+               if (always_invalidate)
+                       rtrs_iu_free(srv_mr->iu, srv_path->s.dev->ib_dev, 1);
+
                ib_dereg_mr(srv_mr->mr);
                ib_dma_unmap_sg(srv_path->s.dev->ib_dev, srv_mr->sgt.sgl,
                                srv_mr->sgt.nents, DMA_BIDIRECTIONAL);