Commit db77d84c authored by Guoqing Jiang's avatar Guoqing Jiang Committed by Leon Romanovsky
Browse files

RDMA/rtrs-clt: Kill xchg_paths



Let's call try_cmpxchg directly for the same purpose.

Signed-off-by: default avatarGuoqing Jiang <guoqing.jiang@linux.dev>
Link: https://lore.kernel.org/r/20220903040252.29397-1-guoqing.jiang@linux.dev


Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
parent 57eb9382
Loading
Loading
Loading
Loading
+2 −12
Original line number Diff line number Diff line
@@ -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