RDMA/rtrs-clt: Kill wait_for_inflight_permits
authorGuoqing Jiang <guoqing.jiang@cloud.ionos.com>
Thu, 17 Dec 2020 14:19:05 +0000 (15:19 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 2 Mar 2022 10:42:52 +0000 (11:42 +0100)
[ Upstream commit 25a033f5a75873cfdd36eca3c702363b682afb42 ]

Let's wait the inflight permits before free it.

Link: https://lore.kernel.org/r/20201217141915.56989-10-jinpu.wang@cloud.ionos.com
Signed-off-by: Guoqing Jiang <guoqing.jiang@cloud.ionos.com>
Reviewed-by: Md Haris Iqbal <haris.iqbal@cloud.ionos.com>
Signed-off-by: Jack Wang <jinpu.wang@cloud.ionos.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/ulp/rtrs/rtrs-clt.c

index 8937530a42d3d32b589d443e37fe46304a6ff9a7..5a3c11b0b31024d6a6038738906464612531cda0 100644 (file)
@@ -1328,6 +1328,12 @@ out_err:
 
 static void free_permits(struct rtrs_clt *clt)
 {
+       if (clt->permits_map) {
+               size_t sz = clt->queue_depth;
+
+               wait_event(clt->permits_wait,
+                          find_first_bit(clt->permits_map, sz) >= sz);
+       }
        kfree(clt->permits_map);
        clt->permits_map = NULL;
        kfree(clt->permits);
@@ -2630,19 +2636,8 @@ err_put:
        return ERR_PTR(err);
 }
 
-static void wait_for_inflight_permits(struct rtrs_clt *clt)
-{
-       if (clt->permits_map) {
-               size_t sz = clt->queue_depth;
-
-               wait_event(clt->permits_wait,
-                          find_first_bit(clt->permits_map, sz) >= sz);
-       }
-}
-
 static void free_clt(struct rtrs_clt *clt)
 {
-       wait_for_inflight_permits(clt);
        free_permits(clt);
        free_percpu(clt->pcpu_path);