Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'mptcp-misc-fixes-for-v7-1-rc2'

Matthieu Baerts says:

====================
mptcp: misc fixes for v7.1-rc2

Here are various unrelated fixes:

- Patches 1-2: set timestamp flags on 'ssk', not 'sk' (typo); Plus do
that with sleepable lock_sock/release_sock. A fix for v5.14.

- Patch 3: respect SO_LINGER(1, 0) by sending MP_FASTCLOSE at close time
as expected. A fix for v6.1.

- Patch 4: reset fullmesh counter after a flush. A fix for v6.19.
====================

Link: https://patch.msgid.link/20260427-net-mptcp-misc-fixes-7-1-rc2-v1-0-7432b7f279fa@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+9 -7
+1
net/mptcp/pm_kernel.c
··· 1278 1278 WRITE_ONCE(pernet->endp_signal_max, 0); 1279 1279 WRITE_ONCE(pernet->endp_subflow_max, 0); 1280 1280 WRITE_ONCE(pernet->endp_laminar_max, 0); 1281 + WRITE_ONCE(pernet->endp_fullmesh_max, 0); 1281 1282 pernet->endpoints = 0; 1282 1283 } 1283 1284
+2 -1
net/mptcp/protocol.c
··· 3302 3302 goto cleanup; 3303 3303 } 3304 3304 3305 - if (mptcp_data_avail(msk) || timeout < 0) { 3305 + if (mptcp_data_avail(msk) || timeout < 0 || 3306 + (sock_flag(sk, SOCK_LINGER) && !sk->sk_lingertime)) { 3306 3307 /* If the msk has read data, or the caller explicitly ask it, 3307 3308 * do the MPTCP equivalent of TCP reset, aka MPTCP fastclose 3308 3309 */
+6 -6
net/mptcp/sockopt.c
··· 159 159 lock_sock(sk); 160 160 mptcp_for_each_subflow(msk, subflow) { 161 161 struct sock *ssk = mptcp_subflow_tcp_sock(subflow); 162 - bool slow = lock_sock_fast(ssk); 163 162 164 - sock_set_timestamp(sk, optname, !!val); 165 - unlock_sock_fast(ssk, slow); 163 + lock_sock(ssk); 164 + sock_set_timestamp(ssk, optname, !!val); 165 + release_sock(ssk); 166 166 } 167 167 168 168 release_sock(sk); ··· 235 235 236 236 mptcp_for_each_subflow(msk, subflow) { 237 237 struct sock *ssk = mptcp_subflow_tcp_sock(subflow); 238 - bool slow = lock_sock_fast(ssk); 239 238 240 - sock_set_timestamping(sk, optname, timestamping); 241 - unlock_sock_fast(ssk, slow); 239 + lock_sock(ssk); 240 + sock_set_timestamping(ssk, optname, timestamping); 241 + release_sock(ssk); 242 242 } 243 243 244 244 release_sock(sk);