* [PATCH net v2 00/11] mptcp: misc fixes for v7.1-rc7
@ 2026-06-02 12:14 Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 01/11] mptcp: fix missing wakeups in edge scenarios Matthieu Baerts (NGI0)
` (11 more replies)
0 siblings, 12 replies; 13+ messages in thread
From: Matthieu Baerts (NGI0) @ 2026-06-02 12:14 UTC (permalink / raw)
To: Mat Martineau, Geliang Tang, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, Florian Westphal
Cc: netdev, mptcp, linux-kernel, linux-kselftest,
Matthieu Baerts (NGI0),
stable, Tao Cui, Shuah Khan, Willem de Bruijn, Gang Yan,
syzbot+ff020673c5e3d94d9478
Here are various unrelated fixes:
- Patch 1: fix missing wakeups when multiple threads are reading from
the same fd. A fix for v5.7.
- Patch 2: fix retransmission loop when MPTCP checksum is enabled. A fix
for v5.14.
- Patch 3: fix a TOCTOU race while computing rcv_wnd. A fix for v5.11.
- Patch 4: allow subflows receive window to shrink if needed. A fix for
v5.19.
- Patches 5-6: avoid 'extra_subflows' to underflow with the userspace
PM. A fix for v5.19.
- Patch 7: report errors if one subflow cannot set SO_TIMESTAMPING. A
fix for v5.14.
- Patch 8: try to set TCP_MAXSEG on all subflows, before reporting
errors, if any. A fix for v6.17.
- Patch 9: check desc->count in read_sock, to act as expected. A fix
for v7.0.
- Patch 10: fix an uninit value in mptcp_established_options, reported
by syzbot. A fix for v7.1-rc1.
- Patch 11: fix a similar issue than the previous patch, exposed by the
same modification from v7.1-rc1, but was already causing issues since
v5.15.
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
Changes in v2:
- Drop former patch 9
- Patch 3: add a missing 's' in a comment (NIPA AI)
- Patches 10-11: new
- Link to v1: https://patch.msgid.link/20260601-net-mptcp-misc-fixes-7-1-rc7-v1-0-a5ae7791754b@kernel.org
---
Gang Yan (1):
mptcp: check desc->count in read_sock
Matthieu Baerts (NGI0) (3):
mptcp: sockopt: check timestamping ret value
mptcp: sockopt: set sockopt on all subflows
mptcp: add-addr: always drop other suboptions
Paolo Abeni (5):
mptcp: fix missing wakeups in edge scenarios
mptcp: fix retransmission loop when csum is enabled
mptcp: close TOCTOU race while computing rcv_wnd
mptcp: allow subflow rcv wnd to shrink
mptcp: fix uninit-value in mptcp_established_options
Tao Cui (2):
mptcp: pm: fix extra_subflows underflow on userspace PM subflow creation
selftests: mptcp: add test for extra_subflows underflow on userspace PM
include/net/mptcp.h | 7 ++-
net/mptcp/options.c | 79 ++++++++++++-------------
net/mptcp/pm.c | 15 ++---
net/mptcp/pm_userspace.c | 14 +++--
net/mptcp/protocol.c | 10 ++++
net/mptcp/protocol.h | 7 +--
net/mptcp/sockopt.c | 15 +++--
tools/testing/selftests/net/mptcp/mptcp_join.sh | 4 ++
8 files changed, 81 insertions(+), 70 deletions(-)
---
base-commit: 3522b21fd7e1863d0734537737bd59f1b90d0190
change-id: 20260531-net-mptcp-misc-fixes-7-1-rc7-34884c9b246d
Best regards,
--
Matthieu Baerts (NGI0) <matttbe@kernel.org>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH net v2 01/11] mptcp: fix missing wakeups in edge scenarios
2026-06-02 12:14 [PATCH net v2 00/11] mptcp: misc fixes for v7.1-rc7 Matthieu Baerts (NGI0)
@ 2026-06-02 12:14 ` Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 02/11] mptcp: fix retransmission loop when csum is enabled Matthieu Baerts (NGI0)
` (10 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Matthieu Baerts (NGI0) @ 2026-06-02 12:14 UTC (permalink / raw)
To: Mat Martineau, Geliang Tang, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, Florian Westphal
Cc: netdev, mptcp, linux-kernel, linux-kselftest,
Matthieu Baerts (NGI0),
stable
From: Paolo Abeni <pabeni@redhat.com>
The mptcp_recvmsg() can fill MPTCP socket receive queue via
mptcp_move_skbs(), but currently does not try to wakeup any listener,
because the same process is going to check the receive queue soon.
When multiple threads are reading from the same fd, the above can
cause stall. Add the missing wakeup.
Fixes: 6771bfd9ee24 ("mptcp: update mptcp ack sequence from work queue")
Cc: stable@vger.kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
net/mptcp/protocol.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index a72a6ad6ee8b..5a20ab2789ae 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -2276,6 +2276,10 @@ static bool mptcp_move_skbs(struct sock *sk)
mptcp_backlog_spooled(sk, moved, &skbs);
}
mptcp_data_unlock(sk);
+
+ if (enqueued && mptcp_epollin_ready(sk))
+ sk->sk_data_ready(sk);
+
return enqueued;
}
--
2.53.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH net v2 02/11] mptcp: fix retransmission loop when csum is enabled
2026-06-02 12:14 [PATCH net v2 00/11] mptcp: misc fixes for v7.1-rc7 Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 01/11] mptcp: fix missing wakeups in edge scenarios Matthieu Baerts (NGI0)
@ 2026-06-02 12:14 ` Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 03/11] mptcp: close TOCTOU race while computing rcv_wnd Matthieu Baerts (NGI0)
` (9 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Matthieu Baerts (NGI0) @ 2026-06-02 12:14 UTC (permalink / raw)
To: Mat Martineau, Geliang Tang, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, Florian Westphal
Cc: netdev, mptcp, linux-kernel, linux-kselftest,
Matthieu Baerts (NGI0),
stable
From: Paolo Abeni <pabeni@redhat.com>
Sashiko noted that retransmission with csum enabled can actually
transmit new data, but currently the relevant code does not update
accordingly snd_nxt.
The may cause incoming ack drop and an endless retransmission loop.
Address the issue incrementing snd_nxt as needed.
Fixes: 4e14867d5e91 ("mptcp: tune re-injections for csum enabled mode")
Cc: stable@vger.kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
net/mptcp/protocol.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 5a20ab2789ae..7fac5fac2097 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -2869,6 +2869,10 @@ static void __mptcp_retrans(struct sock *sk)
msk->bytes_retrans += len;
dfrag->already_sent = max(dfrag->already_sent, len);
+ /* With csum enabled retransmission can send new data. */
+ if (after64(dfrag->already_sent + dfrag->data_seq, msk->snd_nxt))
+ WRITE_ONCE(msk->snd_nxt, dfrag->already_sent + dfrag->data_seq);
+
reset_timer:
mptcp_check_and_set_pending(sk);
--
2.53.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH net v2 03/11] mptcp: close TOCTOU race while computing rcv_wnd
2026-06-02 12:14 [PATCH net v2 00/11] mptcp: misc fixes for v7.1-rc7 Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 01/11] mptcp: fix missing wakeups in edge scenarios Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 02/11] mptcp: fix retransmission loop when csum is enabled Matthieu Baerts (NGI0)
@ 2026-06-02 12:14 ` Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 04/11] mptcp: allow subflow rcv wnd to shrink Matthieu Baerts (NGI0)
` (8 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Matthieu Baerts (NGI0) @ 2026-06-02 12:14 UTC (permalink / raw)
To: Mat Martineau, Geliang Tang, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, Florian Westphal
Cc: netdev, mptcp, linux-kernel, linux-kselftest,
Matthieu Baerts (NGI0),
stable
From: Paolo Abeni <pabeni@redhat.com>
The MPTCP output path access locklessly the MPTCP-level ack_seq
in multiple times, using possibly different values for the data_ack
in the DSS option and to compute the announced rcv wnd for the same
packet.
Refactor the cote to avoid inconsistencies which may confuse the
peer. Also ensure that the MPTCP level rcv wnd is updated only when
the egress packet actually contains a DSS ack.
Fixes: fa3fe2b15031 ("mptcp: track window announced to peer")
Cc: stable@vger.kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
net/mptcp/options.c | 36 ++++++++++++++++++------------------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index 8a1c5698983c..2d25f319f328 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -570,7 +570,6 @@ static bool mptcp_established_options_dss(struct sock *sk, struct sk_buff *skb,
struct mptcp_ext *mpext;
unsigned int ack_size;
bool ret = false;
- u64 ack_seq;
opts->csum_reqd = READ_ONCE(msk->csum_enabled);
mpext = skb ? mptcp_get_ext(skb) : NULL;
@@ -601,14 +600,11 @@ static bool mptcp_established_options_dss(struct sock *sk, struct sk_buff *skb,
return ret;
}
- ack_seq = READ_ONCE(msk->ack_seq);
if (READ_ONCE(msk->use_64bit_ack)) {
ack_size = TCPOLEN_MPTCP_DSS_ACK64;
- opts->ext_copy.data_ack = ack_seq;
opts->ext_copy.ack64 = 1;
} else {
ack_size = TCPOLEN_MPTCP_DSS_ACK32;
- opts->ext_copy.data_ack32 = (uint32_t)ack_seq;
opts->ext_copy.ack64 = 0;
}
opts->ext_copy.use_ack = 1;
@@ -1297,19 +1293,14 @@ bool mptcp_incoming_options(struct sock *sk, struct sk_buff *skb)
return true;
}
-static void mptcp_set_rwin(struct tcp_sock *tp, struct tcphdr *th)
+static u64 mptcp_set_rwin(struct mptcp_sock *msk, struct tcp_sock *tp,
+ struct tcphdr *th, u64 ack_seq)
{
const struct sock *ssk = (const struct sock *)tp;
- struct mptcp_subflow_context *subflow;
- u64 ack_seq, rcv_wnd_old, rcv_wnd_new;
- struct mptcp_sock *msk;
+ u64 rcv_wnd_old, rcv_wnd_new;
u32 new_win;
u64 win;
- subflow = mptcp_subflow_ctx(ssk);
- msk = mptcp_sk(subflow->conn);
-
- ack_seq = READ_ONCE(msk->ack_seq);
rcv_wnd_new = ack_seq + tp->rcv_wnd;
rcv_wnd_old = atomic64_read(&msk->rcv_wnd_sent);
@@ -1362,7 +1353,7 @@ static void mptcp_set_rwin(struct tcp_sock *tp, struct tcphdr *th)
update_wspace:
WRITE_ONCE(msk->old_wspace, tp->rcv_wnd);
- subflow->rcv_wnd_sent = rcv_wnd_new;
+ return rcv_wnd_new;
}
static void mptcp_track_rwin(struct tcp_sock *tp)
@@ -1474,13 +1465,25 @@ void mptcp_write_options(struct tcphdr *th, __be32 *ptr, struct tcp_sock *tp,
*ptr++ = mptcp_option(MPTCPOPT_DSS, len, 0, flags);
if (mpext->use_ack) {
+ struct mptcp_sock *msk;
+ u64 ack_seq;
+
+ /* DSS option is set only by mptcp_established_options,
+ * the caller is __tcp_transmit_skb() and ssk is always
+ * not NULL.
+ */
+ subflow = mptcp_subflow_ctx(ssk);
+ msk = mptcp_sk(subflow->conn);
+ ack_seq = READ_ONCE(msk->ack_seq);
if (mpext->ack64) {
- put_unaligned_be64(mpext->data_ack, ptr);
+ put_unaligned_be64(ack_seq, ptr);
ptr += 2;
} else {
- put_unaligned_be32(mpext->data_ack32, ptr);
+ put_unaligned_be32(ack_seq, ptr);
ptr += 1;
}
+ subflow->rcv_wnd_sent = mptcp_set_rwin(msk, tp, th,
+ ack_seq);
}
if (mpext->use_map) {
@@ -1708,9 +1711,6 @@ void mptcp_write_options(struct tcphdr *th, __be32 *ptr, struct tcp_sock *tp,
i += 4;
}
}
-
- if (tp)
- mptcp_set_rwin(tp, th);
}
__be32 mptcp_get_reset_option(const struct sk_buff *skb)
--
2.53.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH net v2 04/11] mptcp: allow subflow rcv wnd to shrink
2026-06-02 12:14 [PATCH net v2 00/11] mptcp: misc fixes for v7.1-rc7 Matthieu Baerts (NGI0)
` (2 preceding siblings ...)
2026-06-02 12:14 ` [PATCH net v2 03/11] mptcp: close TOCTOU race while computing rcv_wnd Matthieu Baerts (NGI0)
@ 2026-06-02 12:14 ` Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 05/11] mptcp: pm: fix extra_subflows underflow on userspace PM subflow creation Matthieu Baerts (NGI0)
` (7 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Matthieu Baerts (NGI0) @ 2026-06-02 12:14 UTC (permalink / raw)
To: Mat Martineau, Geliang Tang, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, Florian Westphal
Cc: netdev, mptcp, linux-kernel, linux-kselftest,
Matthieu Baerts (NGI0),
stable
From: Paolo Abeni <pabeni@redhat.com>
In MPTCP connection, the `window` field in the TCP header refers to the
MPTCP-level rcv_nxt and it's right edge should not move backward. Such
constraint is enforced at DSS option generation time.
At the same time, the TCP stack ensures independently that the TCP-level
rcv wnd right's edge does not move backward. That in turn causes artificial
inflating of the MPTCP rcv window when the incoming data is acked at the
TCP level and is OoO in the MPTCP sequence space (or lands in the backlog).
As a consequence, the incoming traffic can exceed the receiver rcvbuf size
even when the sender is not misbehaving.
Prevent such scenario forcibly allowing the TCP subflow to shrink the
TCP-level rcv wnd regardless of the current netns setting.
Fixes: f3589be0c420 ("mptcp: never shrink offered window")
Cc: stable@vger.kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
net/mptcp/options.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index 2d25f319f328..51ca334678b4 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -566,6 +566,7 @@ static bool mptcp_established_options_dss(struct sock *sk, struct sk_buff *skb,
{
struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk);
struct mptcp_sock *msk = mptcp_sk(subflow->conn);
+ struct tcp_sock *tp = tcp_sk(sk);
unsigned int dss_size = 0;
struct mptcp_ext *mpext;
unsigned int ack_size;
@@ -614,6 +615,12 @@ static bool mptcp_established_options_dss(struct sock *sk, struct sk_buff *skb,
if (dss_size == 0)
ack_size += TCPOLEN_MPTCP_DSS_BASE;
+ /* The caller is __tcp_transmit_skb(), and will compute the new rcv
+ * wnd soon: ensure that the window can shrink.
+ */
+ if (skb)
+ tp->rcv_wnd = tp->rcv_nxt - tp->rcv_wup;
+
dss_size += ack_size;
*size = ALIGN(dss_size, 4);
--
2.53.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH net v2 05/11] mptcp: pm: fix extra_subflows underflow on userspace PM subflow creation
2026-06-02 12:14 [PATCH net v2 00/11] mptcp: misc fixes for v7.1-rc7 Matthieu Baerts (NGI0)
` (3 preceding siblings ...)
2026-06-02 12:14 ` [PATCH net v2 04/11] mptcp: allow subflow rcv wnd to shrink Matthieu Baerts (NGI0)
@ 2026-06-02 12:14 ` Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 06/11] selftests: mptcp: add test for extra_subflows underflow on userspace PM Matthieu Baerts (NGI0)
` (6 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Matthieu Baerts (NGI0) @ 2026-06-02 12:14 UTC (permalink / raw)
To: Mat Martineau, Geliang Tang, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, Florian Westphal
Cc: netdev, mptcp, linux-kernel, linux-kselftest,
Matthieu Baerts (NGI0),
Tao Cui, stable
From: Tao Cui <cuitao@kylinos.cn>
The userspace PM increments extra_subflows after __mptcp_subflow_connect()
succeeds, but __mptcp_subflow_connect() calls mptcp_pm_close_subflow()
on failure to roll back the pre-increment done by the kernel PM's fill_*()
helpers. Because the userspace PM hasn't incremented yet at that point,
this decrement is spurious and causes extra_subflows to underflow.
Fix it by aligning the userspace PM with the kernel PM: increment
extra_subflows before calling __mptcp_subflow_connect(), so the existing
error path in subflow.c correctly rolls it back on failure. Also simplify
the error handling by taking pm.lock only when needed for cleanup.
Fixes: 77e4b94a3de6 ("mptcp: update userspace pm infos")
Cc: stable@vger.kernel.org
Signed-off-by: Tao Cui <cuitao@kylinos.cn>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
net/mptcp/pm_userspace.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index 8cbc1920afb4..0d3a95e676f1 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -408,19 +408,21 @@ int mptcp_pm_nl_subflow_create_doit(struct sk_buff *skb, struct genl_info *info)
local.flags = entry.flags;
local.ifindex = entry.ifindex;
+ spin_lock_bh(&msk->pm.lock);
+ msk->pm.extra_subflows++;
+ spin_unlock_bh(&msk->pm.lock);
+
lock_sock(sk);
err = __mptcp_subflow_connect(sk, &local, &addr_r);
release_sock(sk);
- if (err)
+ if (err) {
GENL_SET_ERR_MSG_FMT(info, "connect error: %d", err);
- spin_lock_bh(&msk->pm.lock);
- if (err)
+ spin_lock_bh(&msk->pm.lock);
mptcp_userspace_pm_delete_local_addr(msk, &entry);
- else
- msk->pm.extra_subflows++;
- spin_unlock_bh(&msk->pm.lock);
+ spin_unlock_bh(&msk->pm.lock);
+ }
create_err:
sock_put(sk);
--
2.53.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH net v2 06/11] selftests: mptcp: add test for extra_subflows underflow on userspace PM
2026-06-02 12:14 [PATCH net v2 00/11] mptcp: misc fixes for v7.1-rc7 Matthieu Baerts (NGI0)
` (4 preceding siblings ...)
2026-06-02 12:14 ` [PATCH net v2 05/11] mptcp: pm: fix extra_subflows underflow on userspace PM subflow creation Matthieu Baerts (NGI0)
@ 2026-06-02 12:14 ` Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 07/11] mptcp: sockopt: check timestamping ret value Matthieu Baerts (NGI0)
` (5 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Matthieu Baerts (NGI0) @ 2026-06-02 12:14 UTC (permalink / raw)
To: Mat Martineau, Geliang Tang, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, Florian Westphal
Cc: netdev, mptcp, linux-kernel, linux-kselftest,
Matthieu Baerts (NGI0),
Tao Cui, stable, Shuah Khan
From: Tao Cui <cuitao@kylinos.cn>
Add a test to verify that when userspace PM fails to create a subflow
(e.g. using an unreachable address), the extra_subflows counter is not
decremented below zero.
Fixes: 77e4b94a3de6 ("mptcp: update userspace pm infos")
Cc: stable@vger.kernel.org
Signed-off-by: Tao Cui <cuitao@kylinos.cn>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
To: Shuah Khan <shuah@kernel.org>
Cc: linux-kselftest@vger.kernel.org
---
tools/testing/selftests/net/mptcp/mptcp_join.sh | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 5acd12021e6e..4b3f71e66609 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -4100,6 +4100,10 @@ userspace_tests()
chk_rm_nr 0 1
chk_mptcp_info subflows 0 subflows 0
chk_subflows_total 1 1
+ # check counters are not affected by errors at creation time
+ userspace_pm_add_sf $ns2 10.0.12.2 10 2>/dev/null
+ chk_mptcp_info subflows 0 subflows 0
+ chk_subflows_total 1 1
kill_events_pids
mptcp_lib_kill_group_wait $tests_pid
fi
--
2.53.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH net v2 07/11] mptcp: sockopt: check timestamping ret value
2026-06-02 12:14 [PATCH net v2 00/11] mptcp: misc fixes for v7.1-rc7 Matthieu Baerts (NGI0)
` (5 preceding siblings ...)
2026-06-02 12:14 ` [PATCH net v2 06/11] selftests: mptcp: add test for extra_subflows underflow on userspace PM Matthieu Baerts (NGI0)
@ 2026-06-02 12:14 ` Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 08/11] mptcp: sockopt: set sockopt on all subflows Matthieu Baerts (NGI0)
` (4 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Matthieu Baerts (NGI0) @ 2026-06-02 12:14 UTC (permalink / raw)
To: Mat Martineau, Geliang Tang, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, Florian Westphal
Cc: netdev, mptcp, linux-kernel, linux-kselftest,
Matthieu Baerts (NGI0),
stable, Willem de Bruijn
sock_set_timestamping() can fail for different reasons. The returned
value should then be checked.
If sock_set_timestamping() fails for at least one subflow, the first
error is now reported to the userspace, similar to what is done with
other socket options.
Fixes: 9061f24bf82e ("mptcp: sockopt: propagate timestamp request to subflows")
Cc: stable@vger.kernel.org
Reported-by: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
Closes: https://lore.kernel.org/willemdebruijn.kernel.178a41a53d041@gmail.com
Reviewed-by: Mat Martineau <martineau@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
net/mptcp/sockopt.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c
index 87b5796d0135..91aa57f1d0fd 100644
--- a/net/mptcp/sockopt.c
+++ b/net/mptcp/sockopt.c
@@ -241,15 +241,19 @@ static int mptcp_setsockopt_sol_socket_timestamping(struct mptcp_sock *msk,
mptcp_for_each_subflow(msk, subflow) {
struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
+ int err;
lock_sock(ssk);
- sock_set_timestamping(ssk, optname, timestamping);
+ err = sock_set_timestamping(ssk, optname, timestamping);
release_sock(ssk);
+
+ if (err < 0 && ret == 0)
+ ret = err;
}
release_sock(sk);
- return 0;
+ return ret;
}
static int mptcp_setsockopt_sol_socket_linger(struct mptcp_sock *msk, sockptr_t optval,
--
2.53.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH net v2 08/11] mptcp: sockopt: set sockopt on all subflows
2026-06-02 12:14 [PATCH net v2 00/11] mptcp: misc fixes for v7.1-rc7 Matthieu Baerts (NGI0)
` (6 preceding siblings ...)
2026-06-02 12:14 ` [PATCH net v2 07/11] mptcp: sockopt: check timestamping ret value Matthieu Baerts (NGI0)
@ 2026-06-02 12:14 ` Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 09/11] mptcp: check desc->count in read_sock Matthieu Baerts (NGI0)
` (3 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Matthieu Baerts (NGI0) @ 2026-06-02 12:14 UTC (permalink / raw)
To: Mat Martineau, Geliang Tang, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, Florian Westphal
Cc: netdev, mptcp, linux-kernel, linux-kselftest,
Matthieu Baerts (NGI0),
stable
The mptcp_setsockopt_all_sf(), currently used only with TCP_MAXSEG,
stopped when one subflow returned an error.
Even if it is not wrong, this is different from the other helpers trying
to set the option on all subflows, and then returning an error if at
least one of them had an issue.
Follow this behaviour, for a question of uniformity.
Fixes: 51c5fd09e1b4 ("mptcp: add TCP_MAXSEG sockopt support")
Cc: stable@vger.kernel.org
Reviewed-by: Mat Martineau <martineau@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
net/mptcp/sockopt.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c
index 91aa57f1d0fd..fcf6feb2a9eb 100644
--- a/net/mptcp/sockopt.c
+++ b/net/mptcp/sockopt.c
@@ -817,10 +817,11 @@ static int mptcp_setsockopt_all_sf(struct mptcp_sock *msk, int level,
mptcp_for_each_subflow(msk, subflow) {
struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
+ int err;
- ret = tcp_setsockopt(ssk, level, optname, optval, optlen);
- if (ret)
- break;
+ err = tcp_setsockopt(ssk, level, optname, optval, optlen);
+ if (err < 0 && ret == 0)
+ ret = err;
}
if (!ret)
--
2.53.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH net v2 09/11] mptcp: check desc->count in read_sock
2026-06-02 12:14 [PATCH net v2 00/11] mptcp: misc fixes for v7.1-rc7 Matthieu Baerts (NGI0)
` (7 preceding siblings ...)
2026-06-02 12:14 ` [PATCH net v2 08/11] mptcp: sockopt: set sockopt on all subflows Matthieu Baerts (NGI0)
@ 2026-06-02 12:14 ` Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 10/11] mptcp: fix uninit-value in mptcp_established_options Matthieu Baerts (NGI0)
` (2 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Matthieu Baerts (NGI0) @ 2026-06-02 12:14 UTC (permalink / raw)
To: Mat Martineau, Geliang Tang, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, Florian Westphal
Cc: netdev, mptcp, linux-kernel, linux-kselftest,
Matthieu Baerts (NGI0),
Gang Yan, stable
From: Gang Yan <yangang@kylinos.cn>
__tcp_read_sock() checks desc->count after each skb is consumed and
breaks the loop when it reaches 0. The MPTCP variant lacks this check.
This is a functional bug, other subsystems also rely on this check:
TLS strparser sets desc->count to 0 once a full TLS record is assembled
and depends on this break to stop reading.
Add the same desc->count check to __mptcp_read_sock(), mirroring
__tcp_read_sock().
Fixes: 250d9766a984 ("mptcp: implement .read_sock")
Cc: stable@vger.kernel.org
Co-developed-by: Geliang Tang <geliang@kernel.org>
Signed-off-by: Geliang Tang <geliang@kernel.org>
Signed-off-by: Gang Yan <yangang@kylinos.cn>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
net/mptcp/protocol.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 7fac5fac2097..cb9515f505aa 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -4428,6 +4428,8 @@ static int __mptcp_read_sock(struct sock *sk, read_descriptor_t *desc,
}
mptcp_eat_recv_skb(sk, skb);
+ if (!desc->count)
+ break;
}
if (noack)
--
2.53.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH net v2 10/11] mptcp: fix uninit-value in mptcp_established_options
2026-06-02 12:14 [PATCH net v2 00/11] mptcp: misc fixes for v7.1-rc7 Matthieu Baerts (NGI0)
` (8 preceding siblings ...)
2026-06-02 12:14 ` [PATCH net v2 09/11] mptcp: check desc->count in read_sock Matthieu Baerts (NGI0)
@ 2026-06-02 12:14 ` Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 11/11] mptcp: add-addr: always drop other suboptions Matthieu Baerts (NGI0)
2026-06-04 2:10 ` [PATCH net v2 00/11] mptcp: misc fixes for v7.1-rc7 patchwork-bot+netdevbpf
11 siblings, 0 replies; 13+ messages in thread
From: Matthieu Baerts (NGI0) @ 2026-06-02 12:14 UTC (permalink / raw)
To: Mat Martineau, Geliang Tang, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, Florian Westphal
Cc: netdev, mptcp, linux-kernel, linux-kselftest,
Matthieu Baerts (NGI0),
stable, syzbot+ff020673c5e3d94d9478
From: Paolo Abeni <pabeni@redhat.com>
syzbot reported the following uninit splat:
BUG: KMSAN: uninit-value in mptcp_write_data_fin net/mptcp/options.c:542 [inline]
BUG: KMSAN: uninit-value in mptcp_established_options_dss net/mptcp/options.c:590 [inline]
BUG: KMSAN: uninit-value in mptcp_established_options+0x112f/0x3530 net/mptcp/options.c:874
mptcp_write_data_fin net/mptcp/options.c:542 [inline]
mptcp_established_options_dss net/mptcp/options.c:590 [inline]
mptcp_established_options+0x112f/0x3530 net/mptcp/options.c:874
tcp_established_options+0x312/0xcc0 net/ipv4/tcp_output.c:1192
__tcp_transmit_skb+0x5dc/0x5fe0 net/ipv4/tcp_output.c:1575
__tcp_send_ack+0x967/0xad0 net/ipv4/tcp_output.c:4499
tcp_send_ack+0x3d/0x60 net/ipv4/tcp_output.c:4505
mptcp_subflow_shutdown+0x164/0x690 net/mptcp/protocol.c:3137
mptcp_check_send_data_fin+0x31b/0x3d0 net/mptcp/protocol.c:3218
__mptcp_wr_shutdown net/mptcp/protocol.c:3234 [inline]
__mptcp_close+0x860/0x1360 net/mptcp/protocol.c:3313
mptcp_close+0x42/0x260 net/mptcp/protocol.c:3367
inet_release+0x1ee/0x2a0 net/ipv4/af_inet.c:442
__sock_release net/socket.c:722 [inline]
sock_close+0xd6/0x2f0 net/socket.c:1514
__fput+0x60e/0x1010 fs/file_table.c:510
____fput+0x25/0x30 fs/file_table.c:538
task_work_run+0x208/0x2b0 kernel/task_work.c:233
resume_user_mode_work include/linux/resume_user_mode.h:50 [inline]
__exit_to_user_mode_loop kernel/entry/common.c:67 [inline]
exit_to_user_mode_loop+0x306/0x1b60 kernel/entry/common.c:98
__exit_to_user_mode_prepare include/linux/irq-entry-common.h:207 [inline]
syscall_exit_to_user_mode_prepare include/linux/irq-entry-common.h:238 [inline]
syscall_exit_to_user_mode include/linux/entry-common.h:318 [inline]
__do_fast_syscall_32+0x2c7/0x460 arch/x86/entry/syscall_32.c:310
do_fast_syscall_32+0x37/0x80 arch/x86/entry/syscall_32.c:332
do_SYSENTER_32+0x1f/0x30 arch/x86/entry/syscall_32.c:370
entry_SYSENTER_compat_after_hwframe+0x84/0x8e
Local variable opts created at:
__tcp_transmit_skb+0x4d/0x5fe0 net/ipv4/tcp_output.c:1536
__tcp_send_ack+0x967/0xad0 net/ipv4/tcp_output.c:4499
The output path currently omits initializing the mptcp extension
`use_map` flag in a few corner cases.
Address the issue always zeroing all the extensions flags before
eventually initializing the individual bits. To that extent, introduce
and use a struct_group to avoid multiple bitwise operations.
Fixes: cfcceb7a39fc ("tcp: shrink per-packet memset in __tcp_transmit_skb()")
Cc: stable@vger.kernel.org
Reported-by: syzbot+ff020673c5e3d94d9478@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=ff020673c5e3d94d9478
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
include/net/mptcp.h | 7 +++++--
net/mptcp/options.c | 6 +++++-
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/include/net/mptcp.h b/include/net/mptcp.h
index f7263fe2a2e4..ee70f597a4de 100644
--- a/include/net/mptcp.h
+++ b/include/net/mptcp.h
@@ -27,7 +27,9 @@ struct mptcp_ext {
u32 subflow_seq;
u16 data_len;
__sum16 csum;
- u8 use_map:1,
+
+ struct_group(flags,
+ u8 use_map:1,
dsn64:1,
data_fin:1,
use_ack:1,
@@ -35,9 +37,10 @@ struct mptcp_ext {
mpc_map:1,
frozen:1,
reset_transient:1;
- u8 reset_reason:4,
+ u8 reset_reason:4,
csum_reqd:1,
infinite_map:1;
+ ); /* end of flags group */
};
#define MPTCPOPT_HMAC_LEN 20
diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index 51ca334678b4..f9f587203c35 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -572,6 +572,11 @@ static bool mptcp_established_options_dss(struct sock *sk, struct sk_buff *skb,
unsigned int ack_size;
bool ret = false;
+ /* Zero `use_ack` and `use_map` flags with one shot. */
+ BUILD_BUG_ON(sizeof_field(struct mptcp_ext, flags) != sizeof(u16));
+ BUILD_BUG_ON(!IS_ALIGNED(offsetof(struct mptcp_ext, flags),
+ sizeof(u16)));
+ *(u16 *)&opts->ext_copy.flags = 0;
opts->csum_reqd = READ_ONCE(msk->csum_enabled);
mpext = skb ? mptcp_get_ext(skb) : NULL;
@@ -595,7 +600,6 @@ static bool mptcp_established_options_dss(struct sock *sk, struct sk_buff *skb,
/* passive sockets msk will set the 'can_ack' after accept(), even
* if the first subflow may have the already the remote key handy
*/
- opts->ext_copy.use_ack = 0;
if (!READ_ONCE(msk->can_ack)) {
*size = ALIGN(dss_size, 4);
return ret;
--
2.53.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH net v2 11/11] mptcp: add-addr: always drop other suboptions
2026-06-02 12:14 [PATCH net v2 00/11] mptcp: misc fixes for v7.1-rc7 Matthieu Baerts (NGI0)
` (9 preceding siblings ...)
2026-06-02 12:14 ` [PATCH net v2 10/11] mptcp: fix uninit-value in mptcp_established_options Matthieu Baerts (NGI0)
@ 2026-06-02 12:14 ` Matthieu Baerts (NGI0)
2026-06-04 2:10 ` [PATCH net v2 00/11] mptcp: misc fixes for v7.1-rc7 patchwork-bot+netdevbpf
11 siblings, 0 replies; 13+ messages in thread
From: Matthieu Baerts (NGI0) @ 2026-06-02 12:14 UTC (permalink / raw)
To: Mat Martineau, Geliang Tang, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, Florian Westphal
Cc: netdev, mptcp, linux-kernel, linux-kselftest,
Matthieu Baerts (NGI0),
stable
When an ADD_ADDR needs to be sent, it could be prepared if there is
enough remaining space and even if the packet is not a pure ACK. But it
would be dropped soon after.
Indeed, in mptcp_pm_add_addr_signal(), there is enough space to fit a
DSS of 20 octets and an ADD_ADDR echo containing an IPv4 address on 8
octets for example. In this case, the packet would be prepared, the
MPTCP_ADD_ADDR_ECHO bit would be removed from pm->addr_signal, but the
option would be silently dropped in mptcp_established_options_add_addr()
not to override DSS info in the union from 'struct mptcp_out_options',
and also because mptcp_write_options() will enforce mutually exclusion
with DSS.
Instead, don't even try to send an ADD_ADDR if it is not a pure ACK.
Retry for each new packet until a pure-ACK is emitted. That's fine to do
that, because each time an ADD_ADDR (echo) is scheduled, a pure ACK is
queued.
This also simplifies the code, and the skb checks can be done earlier,
before the lock.
Note: also, since commit 6d0060f600ad ("mptcp: Write MPTCP DSS headers
to outgoing data packets"), opts->ahmac would not have been set to 0
when other suboptions were not dropped, and when sending an ADD_ADDR
echo. That would have resulted in sending an ADD_ADDR using garbage
info, where there was not enough space, instead of an echo one without
the ADD_ADDR HMAC.
Fixes: 1bff1e43a30e ("mptcp: optimize out option generation")
Cc: stable@vger.kernel.org
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
net/mptcp/options.c | 30 +++++++-----------------------
net/mptcp/pm.c | 15 ++++-----------
net/mptcp/protocol.h | 7 +++----
3 files changed, 14 insertions(+), 38 deletions(-)
diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index f9f587203c35..b3ea7854818f 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -665,7 +665,6 @@ static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff *
{
struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk);
struct mptcp_sock *msk = mptcp_sk(subflow->conn);
- bool drop_other_suboptions = false;
unsigned int opt_size = *size;
struct mptcp_addr_info addr;
bool echo;
@@ -676,36 +675,20 @@ static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff *
*/
if (!mptcp_pm_should_add_signal(msk) ||
(opts->suboptions & (OPTION_MPTCP_MPJ_ACK | OPTION_MPTCP_MPC_ACK)) ||
- !mptcp_pm_add_addr_signal(msk, skb, opt_size, remaining, &addr,
- &echo, &drop_other_suboptions))
+ !skb || !skb_is_tcp_pure_ack(skb) ||
+ !mptcp_pm_add_addr_signal(msk, opt_size, remaining, &addr, &echo))
return false;
- /*
- * Later on, mptcp_write_options() will enforce mutually exclusion with
- * DSS, bail out if such option is set and we can't drop it.
- */
- if (drop_other_suboptions)
- remaining += opt_size;
- else if (opts->suboptions & OPTION_MPTCP_DSS)
- return false;
+ remaining += opt_size;
len = mptcp_add_addr_len(addr.family, echo, !!addr.port);
if (remaining < len)
return false;
*size = len;
- if (drop_other_suboptions) {
- pr_debug("drop other suboptions\n");
- opts->suboptions = 0;
-
- /* note that e.g. DSS could have written into the memory
- * aliased by ahmac, we must reset the field here
- * to avoid appending the hmac even for ADD_ADDR echo
- * options
- */
- opts->ahmac = 0;
- *size -= opt_size;
- }
+ pr_debug("drop other suboptions\n");
+ opts->suboptions = 0;
+ *size -= opt_size;
opts->addr = addr;
opts->suboptions |= OPTION_MPTCP_ADD_ADDR;
if (!echo) {
@@ -715,6 +698,7 @@ static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff *
&opts->addr);
} else {
MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_ECHOADDTX);
+ opts->ahmac = 0;
}
pr_debug("addr_id=%d, ahmac=%llu, echo=%d, port=%d\n",
opts->addr.id, opts->ahmac, echo, ntohs(opts->addr.port));
diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
index 3e770c7407e1..470501470fe5 100644
--- a/net/mptcp/pm.c
+++ b/net/mptcp/pm.c
@@ -887,10 +887,9 @@ void mptcp_pm_mp_fail_received(struct sock *sk, u64 fail_seq)
}
}
-bool mptcp_pm_add_addr_signal(struct mptcp_sock *msk, const struct sk_buff *skb,
- unsigned int opt_size, unsigned int remaining,
- struct mptcp_addr_info *addr, bool *echo,
- bool *drop_other_suboptions)
+bool mptcp_pm_add_addr_signal(struct mptcp_sock *msk, unsigned int opt_size,
+ unsigned int remaining,
+ struct mptcp_addr_info *addr, bool *echo)
{
bool skip_add_addr = false;
int ret = false;
@@ -908,10 +907,7 @@ bool mptcp_pm_add_addr_signal(struct mptcp_sock *msk, const struct sk_buff *skb,
* plain dup-ack from TCP perspective. The other MPTCP-relevant info,
* if any, will be carried by the 'original' TCP ack
*/
- if (skb && skb_is_tcp_pure_ack(skb)) {
- remaining += opt_size;
- *drop_other_suboptions = true;
- }
+ remaining += opt_size;
*echo = mptcp_pm_should_add_signal_echo(msk);
if (*echo) {
@@ -929,9 +925,6 @@ bool mptcp_pm_add_addr_signal(struct mptcp_sock *msk, const struct sk_buff *skb,
if (remaining < mptcp_add_addr_len(family, *echo, port)) {
struct net *net = sock_net((struct sock *)msk);
- if (!*drop_other_suboptions)
- goto out_unlock;
-
if (*echo) {
MPTCP_INC_STATS(net, MPTCP_MIB_ECHOADDTXDROP);
} else {
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index e4f5aba24da7..b93b878478d2 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -1229,10 +1229,9 @@ static inline int mptcp_rm_addr_len(const struct mptcp_rm_list *rm_list)
return TCPOLEN_MPTCP_RM_ADDR_BASE + roundup(rm_list->nr - 1, 4) + 1;
}
-bool mptcp_pm_add_addr_signal(struct mptcp_sock *msk, const struct sk_buff *skb,
- unsigned int opt_size, unsigned int remaining,
- struct mptcp_addr_info *addr, bool *echo,
- bool *drop_other_suboptions);
+bool mptcp_pm_add_addr_signal(struct mptcp_sock *msk, unsigned int opt_size,
+ unsigned int remaining,
+ struct mptcp_addr_info *addr, bool *echo);
bool mptcp_pm_rm_addr_signal(struct mptcp_sock *msk, unsigned int remaining,
struct mptcp_rm_list *rm_list);
int mptcp_pm_get_local_id(struct mptcp_sock *msk, struct sock_common *skc);
--
2.53.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH net v2 00/11] mptcp: misc fixes for v7.1-rc7
2026-06-02 12:14 [PATCH net v2 00/11] mptcp: misc fixes for v7.1-rc7 Matthieu Baerts (NGI0)
` (10 preceding siblings ...)
2026-06-02 12:14 ` [PATCH net v2 11/11] mptcp: add-addr: always drop other suboptions Matthieu Baerts (NGI0)
@ 2026-06-04 2:10 ` patchwork-bot+netdevbpf
11 siblings, 0 replies; 13+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-06-04 2:10 UTC (permalink / raw)
To: Matthieu Baerts
Cc: martineau, geliang, davem, edumazet, kuba, pabeni, horms, fw,
netdev, mptcp, linux-kernel, linux-kselftest, stable, cuitao,
shuah, willemdebruijn.kernel, yangang,
syzbot+ff020673c5e3d94d9478
Hello:
This series was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Tue, 02 Jun 2026 22:14:07 +1000 you wrote:
> Here are various unrelated fixes:
>
> - Patch 1: fix missing wakeups when multiple threads are reading from
> the same fd. A fix for v5.7.
>
> - Patch 2: fix retransmission loop when MPTCP checksum is enabled. A fix
> for v5.14.
>
> [...]
Here is the summary with links:
- [net,v2,01/11] mptcp: fix missing wakeups in edge scenarios
https://git.kernel.org/netdev/net/c/9d8d28738f24
- [net,v2,02/11] mptcp: fix retransmission loop when csum is enabled
https://git.kernel.org/netdev/net/c/d1918b36edca
- [net,v2,03/11] mptcp: close TOCTOU race while computing rcv_wnd
https://git.kernel.org/netdev/net/c/8ab24fdebc36
- [net,v2,04/11] mptcp: allow subflow rcv wnd to shrink
https://git.kernel.org/netdev/net/c/da23be77e129
- [net,v2,05/11] mptcp: pm: fix extra_subflows underflow on userspace PM subflow creation
https://git.kernel.org/netdev/net/c/14e9fea30b68
- [net,v2,06/11] selftests: mptcp: add test for extra_subflows underflow on userspace PM
https://git.kernel.org/netdev/net/c/06fd2bec7aeb
- [net,v2,07/11] mptcp: sockopt: check timestamping ret value
https://git.kernel.org/netdev/net/c/57132affbc89
- [net,v2,08/11] mptcp: sockopt: set sockopt on all subflows
https://git.kernel.org/netdev/net/c/7690137e70ab
- [net,v2,09/11] mptcp: check desc->count in read_sock
https://git.kernel.org/netdev/net/c/c378b1a6f8dd
- [net,v2,10/11] mptcp: fix uninit-value in mptcp_established_options
https://git.kernel.org/netdev/net/c/5e939544f9d2
- [net,v2,11/11] mptcp: add-addr: always drop other suboptions
https://git.kernel.org/netdev/net/c/bd34fa025726
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2026-06-04 2:10 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-02 12:14 [PATCH net v2 00/11] mptcp: misc fixes for v7.1-rc7 Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 01/11] mptcp: fix missing wakeups in edge scenarios Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 02/11] mptcp: fix retransmission loop when csum is enabled Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 03/11] mptcp: close TOCTOU race while computing rcv_wnd Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 04/11] mptcp: allow subflow rcv wnd to shrink Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 05/11] mptcp: pm: fix extra_subflows underflow on userspace PM subflow creation Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 06/11] selftests: mptcp: add test for extra_subflows underflow on userspace PM Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 07/11] mptcp: sockopt: check timestamping ret value Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 08/11] mptcp: sockopt: set sockopt on all subflows Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 09/11] mptcp: check desc->count in read_sock Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 10/11] mptcp: fix uninit-value in mptcp_established_options Matthieu Baerts (NGI0)
2026-06-02 12:14 ` [PATCH net v2 11/11] mptcp: add-addr: always drop other suboptions Matthieu Baerts (NGI0)
2026-06-04 2:10 ` [PATCH net v2 00/11] mptcp: misc fixes for v7.1-rc7 patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome