Commit dccf46179ddd for kernel

commit dccf46179ddd6c04c14be8ed584dc54665f53f0e
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Tue Jan 27 20:27:25 2026 +0100

    mptcp: only reset subflow errors when propagated

    Some subflow socket errors need to be reported to the MPTCP socket: the
    initial subflow connect (MP_CAPABLE), and the ones from the fallback
    sockets. The others are not propagated.

    The issue is that sock_error() was used to retrieve the error, which was
    also resetting the sk_err field. Because of that, when notifying the
    userspace about subflow close events later on from the MPTCP worker, the
    ssk->sk_err field was always 0.

    Now, the error (sk_err) is only reset when propagating it to the msk.

    Fixes: 15cc10453398 ("mptcp: deliver ssk errors to msk")
    Cc: stable@vger.kernel.org
    Reviewed-by: Geliang Tang <geliang@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20260127-net-mptcp-dup-nl-events-v1-3-7f71e1bc4feb@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>

diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index e32ae594b4ef..8d3233667418 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -821,11 +821,8 @@ static bool __mptcp_ofo_queue(struct mptcp_sock *msk)

 static bool __mptcp_subflow_error_report(struct sock *sk, struct sock *ssk)
 {
-	int err = sock_error(ssk);
 	int ssk_state;
-
-	if (!err)
-		return false;
+	int err;

 	/* only propagate errors on fallen-back sockets or
 	 * on MPC connect
@@ -833,6 +830,10 @@ static bool __mptcp_subflow_error_report(struct sock *sk, struct sock *ssk)
 	if (sk->sk_state != TCP_SYN_SENT && !__mptcp_check_fallback(mptcp_sk(sk)))
 		return false;

+	err = sock_error(ssk);
+	if (!err)
+		return false;
+
 	/* We need to propagate only transition to CLOSE state.
 	 * Orphaned socket will see such state change via
 	 * subflow_sched_work_if_closed() and that path will properly