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)
committerJason Gunthorpe <jgg@nvidia.com>
Fri, 15 Jan 2021 19:25:09 +0000 (15:25 -0400)
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>
drivers/infiniband/ulp/rtrs/rtrs-clt.c

index 99fc349..6a5b72a 100644 (file)
@@ -1318,6 +1318,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);
@@ -2607,19 +2613,8 @@ static struct rtrs_clt *alloc_clt(const char *sessname, size_t paths_num,
        return clt;
 }
 
-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);
        mutex_destroy(&clt->paths_ev_mutex);