Skip to content

Commit

Permalink
mptcp: use mptcp_set_state
Browse files Browse the repository at this point in the history
This patch replaces all the 'inet_sk_state_store()' calls under net/mptcp
with the new helper mptcp_set_state().

Signed-off-by: Geliang Tang <[email protected]>
  • Loading branch information
geliangtang authored and intel-lab-lkp committed Nov 29, 2023
1 parent b31caee commit a7efa06
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 20 deletions.
3 changes: 3 additions & 0 deletions net/mptcp/pm_netlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -1048,6 +1048,9 @@ static int mptcp_pm_nl_create_listen_socket(struct sock *sk,
if (err)
return err;

/* avoid replacing inet_sk_state_store with mptcp_set_state here, as the
* old status is known to be TCP_CLOSE, hence will not affect the count.
*/
inet_sk_state_store(newsk, TCP_LISTEN);
lock_sock(ssk);
err = __inet_listen_sk(ssk, backlog);
Expand Down
38 changes: 19 additions & 19 deletions net/mptcp/protocol.c
Original file line number Diff line number Diff line change
Expand Up @@ -443,11 +443,11 @@ static void mptcp_check_data_fin_ack(struct sock *sk)

switch (sk->sk_state) {
case TCP_FIN_WAIT1:
inet_sk_state_store(sk, TCP_FIN_WAIT2);
mptcp_set_state(sk, TCP_FIN_WAIT2);
break;
case TCP_CLOSING:
case TCP_LAST_ACK:
inet_sk_state_store(sk, TCP_CLOSE);
mptcp_set_state(sk, TCP_CLOSE);
break;
}

Expand Down Expand Up @@ -608,13 +608,13 @@ static bool mptcp_check_data_fin(struct sock *sk)

switch (sk->sk_state) {
case TCP_ESTABLISHED:
inet_sk_state_store(sk, TCP_CLOSE_WAIT);
mptcp_set_state(sk, TCP_CLOSE_WAIT);
break;
case TCP_FIN_WAIT1:
inet_sk_state_store(sk, TCP_CLOSING);
mptcp_set_state(sk, TCP_CLOSING);
break;
case TCP_FIN_WAIT2:
inet_sk_state_store(sk, TCP_CLOSE);
mptcp_set_state(sk, TCP_CLOSE);
break;
default:
/* Other states not expected */
Expand Down Expand Up @@ -789,7 +789,7 @@ static bool __mptcp_subflow_error_report(struct sock *sk, struct sock *ssk)
*/
ssk_state = inet_sk_state_load(ssk);
if (ssk_state == TCP_CLOSE && !sock_flag(sk, SOCK_DEAD))
inet_sk_state_store(sk, ssk_state);
mptcp_set_state(sk, ssk_state);
WRITE_ONCE(sk->sk_err, -err);

/* This barrier is coupled with smp_rmb() in mptcp_poll() */
Expand Down Expand Up @@ -2477,7 +2477,7 @@ static void __mptcp_close_ssk(struct sock *sk, struct sock *ssk,
inet_sk_state_load(msk->first) == TCP_CLOSE) {
if (sk->sk_state != TCP_ESTABLISHED ||
msk->in_accept_queue || sock_flag(sk, SOCK_DEAD)) {
inet_sk_state_store(sk, TCP_CLOSE);
mptcp_set_state(sk, TCP_CLOSE);
mptcp_close_wake_up(sk);
} else {
mptcp_start_tout_timer(sk);
Expand Down Expand Up @@ -2572,7 +2572,7 @@ static void mptcp_check_fastclose(struct mptcp_sock *msk)
WRITE_ONCE(sk->sk_err, ECONNRESET);
}

inet_sk_state_store(sk, TCP_CLOSE);
mptcp_set_state(sk, TCP_CLOSE);
WRITE_ONCE(sk->sk_shutdown, SHUTDOWN_MASK);
smp_mb__before_atomic(); /* SHUTDOWN must be visible first */
set_bit(MPTCP_WORK_CLOSE_SUBFLOW, &msk->flags);
Expand Down Expand Up @@ -2707,7 +2707,7 @@ static void mptcp_do_fastclose(struct sock *sk)
struct mptcp_subflow_context *subflow, *tmp;
struct mptcp_sock *msk = mptcp_sk(sk);

inet_sk_state_store(sk, TCP_CLOSE);
mptcp_set_state(sk, TCP_CLOSE);
mptcp_for_each_subflow_safe(msk, subflow, tmp)
__mptcp_close_ssk(sk, mptcp_subflow_tcp_sock(subflow),
subflow, MPTCP_CF_FASTCLOSE);
Expand Down Expand Up @@ -2926,7 +2926,7 @@ static int mptcp_close_state(struct sock *sk)
int next = (int)new_state[sk->sk_state];
int ns = next & TCP_STATE_MASK;

inet_sk_state_store(sk, ns);
mptcp_set_state(sk, ns);

return next & TCP_ACTION_FIN;
}
Expand Down Expand Up @@ -3037,7 +3037,7 @@ bool __mptcp_close(struct sock *sk, long timeout)

if ((1 << sk->sk_state) & (TCPF_LISTEN | TCPF_CLOSE)) {
mptcp_check_listen_stop(sk);
inet_sk_state_store(sk, TCP_CLOSE);
mptcp_set_state(sk, TCP_CLOSE);
goto cleanup;
}

Expand Down Expand Up @@ -3080,7 +3080,7 @@ bool __mptcp_close(struct sock *sk, long timeout)
* state, let's not keep resources busy for no reasons
*/
if (subflows_alive == 0)
inet_sk_state_store(sk, TCP_CLOSE);
mptcp_set_state(sk, TCP_CLOSE);

sock_hold(sk);
pr_debug("msk=%p state=%d", sk, sk->sk_state);
Expand Down Expand Up @@ -3146,7 +3146,7 @@ static int mptcp_disconnect(struct sock *sk, int flags)
return -EBUSY;

mptcp_check_listen_stop(sk);
inet_sk_state_store(sk, TCP_CLOSE);
mptcp_set_state(sk, TCP_CLOSE);

mptcp_stop_rtx_timer(sk);
mptcp_stop_tout_timer(sk);
Expand Down Expand Up @@ -3234,7 +3234,7 @@ struct sock *mptcp_sk_clone_init(const struct sock *sk,
/* this can't race with mptcp_close(), as the msk is
* not yet exposted to user-space
*/
inet_sk_state_store(nsk, TCP_ESTABLISHED);
mptcp_set_state(nsk, TCP_ESTABLISHED);

/* The msk maintain a ref to each subflow in the connections list */
WRITE_ONCE(msk->first, ssk);
Expand Down Expand Up @@ -3693,7 +3693,7 @@ static int mptcp_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
if (IS_ERR(ssk))
return PTR_ERR(ssk);

inet_sk_state_store(sk, TCP_SYN_SENT);
mptcp_set_state(sk, TCP_SYN_SENT);
subflow = mptcp_subflow_ctx(ssk);
#ifdef CONFIG_TCP_MD5SIG
/* no MPTCP if MD5SIG is enabled on this socket or we may run out of
Expand Down Expand Up @@ -3743,7 +3743,7 @@ static int mptcp_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
if (unlikely(err)) {
/* avoid leaving a dangling token in an unconnected socket */
mptcp_token_destroy(msk);
inet_sk_state_store(sk, TCP_CLOSE);
mptcp_set_state(sk, TCP_CLOSE);
return err;
}

Expand Down Expand Up @@ -3833,13 +3833,13 @@ static int mptcp_listen(struct socket *sock, int backlog)
goto unlock;
}

inet_sk_state_store(sk, TCP_LISTEN);
mptcp_set_state(sk, TCP_LISTEN);
sock_set_flag(sk, SOCK_RCU_FREE);

lock_sock(ssk);
err = __inet_listen_sk(ssk, backlog);
release_sock(ssk);
inet_sk_state_store(sk, inet_sk_state_load(ssk));
mptcp_set_state(sk, inet_sk_state_load(ssk));

if (!err) {
sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1);
Expand Down Expand Up @@ -3899,7 +3899,7 @@ static int mptcp_stream_accept(struct socket *sock, struct socket *newsock,
__mptcp_close_ssk(newsk, msk->first,
mptcp_subflow_ctx(msk->first), 0);
if (unlikely(list_is_singular(&msk->conn_list)))
inet_sk_state_store(newsk, TCP_CLOSE);
mptcp_set_state(newsk, TCP_CLOSE);
}
}
release_sock(newsk);
Expand Down
2 changes: 1 addition & 1 deletion net/mptcp/subflow.c
Original file line number Diff line number Diff line change
Expand Up @@ -423,7 +423,7 @@ void __mptcp_set_connected(struct sock *sk)
{
__mptcp_propagate_sndbuf(sk, mptcp_sk(sk)->first);
if (sk->sk_state == TCP_SYN_SENT) {
inet_sk_state_store(sk, TCP_ESTABLISHED);
mptcp_set_state(sk, TCP_ESTABLISHED);
sk->sk_state_change(sk);
}
}
Expand Down

0 comments on commit a7efa06

Please sign in to comment.