RDMA/siw: Remove siw_sk_save_upcalls
authorGuoqing Jiang <guoqing.jiang@linux.dev>
Mon, 13 Nov 2023 11:57:22 +0000 (19:57 +0800)
committerLeon Romanovsky <leon@kernel.org>
Wed, 15 Nov 2023 13:58:14 +0000 (15:58 +0200)
Let's move it into siw_sk_assign_cm_upcalls, then we only
need to get sk_callback_lock once.

Acked-by: Bernard Metzler <bmt@zurich.ibm.com>
Signed-off-by: Guoqing Jiang <guoqing.jiang@linux.dev>
Link: https://lore.kernel.org/r/20231113115726.12762-14-guoqing.jiang@linux.dev
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/sw/siw/siw_cm.c

index 5e9a591eec5803e7a569ec161273e84424ec98c9..5c0f9f8bf3db69453956c9222d2443e28b6dc334 100644 (file)
@@ -40,16 +40,6 @@ static int siw_cm_upcall(struct siw_cep *cep, enum iw_cm_event_type reason,
                         int status);
 
 static void siw_sk_assign_cm_upcalls(struct sock *sk)
-{
-       write_lock_bh(&sk->sk_callback_lock);
-       sk->sk_state_change = siw_cm_llp_state_change;
-       sk->sk_data_ready = siw_cm_llp_data_ready;
-       sk->sk_write_space = siw_cm_llp_write_space;
-       sk->sk_error_report = siw_cm_llp_error_report;
-       write_unlock_bh(&sk->sk_callback_lock);
-}
-
-static void siw_sk_save_upcalls(struct sock *sk)
 {
        struct siw_cep *cep = sk_to_cep(sk);
 
@@ -58,6 +48,11 @@ static void siw_sk_save_upcalls(struct sock *sk)
        cep->sk_data_ready = sk->sk_data_ready;
        cep->sk_write_space = sk->sk_write_space;
        cep->sk_error_report = sk->sk_error_report;
+
+       sk->sk_state_change = siw_cm_llp_state_change;
+       sk->sk_data_ready = siw_cm_llp_data_ready;
+       sk->sk_write_space = siw_cm_llp_write_space;
+       sk->sk_error_report = siw_cm_llp_error_report;
        write_unlock_bh(&sk->sk_callback_lock);
 }
 
@@ -156,7 +151,6 @@ static void siw_cep_socket_assoc(struct siw_cep *cep, struct socket *s)
        siw_cep_get(cep);
        s->sk->sk_user_data = cep;
 
-       siw_sk_save_upcalls(s->sk);
        siw_sk_assign_cm_upcalls(s->sk);
 }