Skip to content

Commit 28e5c13

Browse files
Paolo Abenidavem330
authored andcommitted
mptcp: annotate lockless accesses around read-mostly fields
The following MPTCP socket fields: - can_ack - fully_established - rcv_data_fin - snd_data_fin_enable - rcv_fastclose - use_64bit_ack are accessed without any lock, add the appropriate annotation. The schema is safe as each field can change its value at most once in the whole mptcp socket life cycle. Signed-off-by: Paolo Abeni <[email protected]> Reviewed-by: Mat Martineau <[email protected]> Signed-off-by: Matthieu Baerts (NGI0) <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent b9f4554 commit 28e5c13

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

net/mptcp/protocol.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3149,16 +3149,16 @@ static int mptcp_disconnect(struct sock *sk, int flags)
31493149
msk->cb_flags = 0;
31503150
msk->push_pending = 0;
31513151
msk->recovery = false;
3152-
msk->can_ack = false;
3153-
msk->fully_established = false;
3154-
msk->rcv_data_fin = false;
3155-
msk->snd_data_fin_enable = false;
3156-
msk->rcv_fastclose = false;
3157-
msk->use_64bit_ack = false;
3158-
msk->bytes_consumed = 0;
3152+
WRITE_ONCE(msk->can_ack, false);
3153+
WRITE_ONCE(msk->fully_established, false);
3154+
WRITE_ONCE(msk->rcv_data_fin, false);
3155+
WRITE_ONCE(msk->snd_data_fin_enable, false);
3156+
WRITE_ONCE(msk->rcv_fastclose, false);
3157+
WRITE_ONCE(msk->use_64bit_ack, false);
31593158
WRITE_ONCE(msk->csum_enabled, mptcp_is_checksum_enabled(sock_net(sk)));
31603159
mptcp_pm_data_reset(msk);
31613160
mptcp_ca_reset(sk);
3161+
msk->bytes_consumed = 0;
31623162
msk->bytes_acked = 0;
31633163
msk->bytes_received = 0;
31643164
msk->bytes_sent = 0;

net/mptcp/sockopt.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -942,7 +942,7 @@ void mptcp_diag_fill_info(struct mptcp_sock *msk, struct mptcp_info *info)
942942
mptcp_data_unlock(sk);
943943

944944
slow = lock_sock_fast(sk);
945-
info->mptcpi_csum_enabled = msk->csum_enabled;
945+
info->mptcpi_csum_enabled = READ_ONCE(msk->csum_enabled);
946946
info->mptcpi_token = msk->token;
947947
info->mptcpi_write_seq = msk->write_seq;
948948
info->mptcpi_retransmits = inet_csk(sk)->icsk_retransmits;

0 commit comments

Comments
 (0)