RDMA/rtrs-clt: Kill xchg_paths
authorGuoqing Jiang <guoqing.jiang@linux.dev>
Sat, 3 Sep 2022 04:02:52 +0000 (12:02 +0800)
committerLeon Romanovsky <leon@kernel.org>
Tue, 6 Sep 2022 11:12:03 +0000 (14:12 +0300)
Let's call try_cmpxchg directly for the same purpose.

Signed-off-by: Guoqing Jiang <guoqing.jiang@linux.dev>
Link: https://lore.kernel.org/r/20220903040252.29397-1-guoqing.jiang@linux.dev
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/ulp/rtrs/rtrs-clt.c

index c29eccd..d252676 100644 (file)
@@ -2220,17 +2220,6 @@ static void rtrs_clt_stop_and_destroy_conns(struct rtrs_clt_path *clt_path)
        }
 }
 
-static inline bool xchg_paths(struct rtrs_clt_path __rcu **rcu_ppcpu_path,
-                             struct rtrs_clt_path *clt_path,
-                             struct rtrs_clt_path *next)
-{
-       struct rtrs_clt_path **ppcpu_path;
-
-       /* Call cmpxchg() without sparse warnings */
-       ppcpu_path = (typeof(ppcpu_path))rcu_ppcpu_path;
-       return clt_path == cmpxchg(ppcpu_path, clt_path, next);
-}
-
 static void rtrs_clt_remove_path_from_arr(struct rtrs_clt_path *clt_path)
 {
        struct rtrs_clt_sess *clt = clt_path->clt;
@@ -2305,7 +2294,8 @@ static void rtrs_clt_remove_path_from_arr(struct rtrs_clt_path *clt_path)
                 * We race with IO code path, which also changes pointer,
                 * thus we have to be careful not to overwrite it.
                 */
-               if (xchg_paths(ppcpu_path, clt_path, next))
+               if (try_cmpxchg((struct rtrs_clt_path **)ppcpu_path, &clt_path,
+                               next))
                        /*
                         * @ppcpu_path was successfully replaced with @next,
                         * that means that someone could also pick up the