From: Guoqing Jiang <[email protected]>

[ Upstream commit f77c4839ee8f4612dcb6601602329096030bd813 ]

The rtrs_iu_free is called in rtrs_iu_alloc if memory is limited, so we
don't need to free the same iu again.

Fixes: 9cb837480424 ("RDMA/rtrs: server: main functionality")
Link: 
https://lore.kernel.org/r/[email protected]
Signed-off-by: Guoqing Jiang <[email protected]>
Reviewed-by: Gioh Kim <[email protected]>
Signed-off-by: Jack Wang <[email protected]>
Signed-off-by: Jason Gunthorpe <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
---
 drivers/infiniband/ulp/rtrs/rtrs-srv.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/infiniband/ulp/rtrs/rtrs-srv.c 
b/drivers/infiniband/ulp/rtrs/rtrs-srv.c
index 0fd2a7f8f9f2..43806180f85e 100644
--- a/drivers/infiniband/ulp/rtrs/rtrs-srv.c
+++ b/drivers/infiniband/ulp/rtrs/rtrs-srv.c
@@ -671,7 +671,7 @@ static int map_cont_bufs(struct rtrs_srv_sess *sess)
                        if (!srv_mr->iu) {
                                err = -ENOMEM;
                                rtrs_err(ss, "rtrs_iu_alloc(), err: %d\n", err);
-                               goto free_iu;
+                               goto dereg_mr;
                        }
                }
                /* Eventually dma addr for each chunk can be cached */
@@ -687,7 +687,6 @@ static int map_cont_bufs(struct rtrs_srv_sess *sess)
                        srv_mr = &sess->mrs[mri];
                        sgt = &srv_mr->sgt;
                        mr = srv_mr->mr;
-free_iu:
                        rtrs_iu_free(srv_mr->iu, sess->s.dev->ib_dev, 1);
 dereg_mr:
                        ib_dereg_mr(mr);
-- 
2.30.1



Reply via email to