From: Geliang Tang <geliang@kernel.org>
To: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>,
MPTCP Linux <mptcp@lists.linux.dev>
Subject: Re: [PATCH next mptcp-net 3/3] mptcp: remove thmac from subflow ctx
Date: Wed, 19 Aug 2026 17:56:43 +0800 [thread overview]
Message-ID: <b38f34dda21fcfe46b1ecf493c268ca393a8e570.camel@kernel.org> (raw)
In-Reply-To: <20260818-mptcp-cook-reqb-v1-3-052dea9a7f20@kernel.org>
Hi Matt,
On Tue, 2026-08-18 at 19:55 +0200, Matthieu Baerts (NGI0) wrote:
> This entry is only used in subflow_finish_connect().
>
> Instead, use the original value from mp_opt, and pass it to
> subflow_thmac_valid() to do the validation with the given truncated
> hmac.
>
> While at it, rename the variables in subflow_thmac_valid() to avoid
> confusions about the received one vs the expected one.
>
> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
> ---
> net/mptcp/protocol.h | 1 -
> net/mptcp/subflow.c | 18 +++++++++---------
> 2 files changed, 9 insertions(+), 10 deletions(-)
>
> diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
> index 7e168e450fb0..d414065d1966 100644
> --- a/net/mptcp/protocol.h
> +++ b/net/mptcp/protocol.h
> @@ -592,7 +592,6 @@ struct mptcp_subflow_context {
> bool fully_established; /* path validated */
> u32 lent_mem_frag;
> u32 remote_nonce;
> - u64 thmac;
> u32 local_nonce;
> u32 remote_token;
> union {
> diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
> index 01db7edce18a..2d7ccb01d234 100644
> --- a/net/mptcp/subflow.c
> +++ b/net/mptcp/subflow.c
> @@ -408,20 +408,21 @@ static struct dst_entry
> *subflow_v6_route_req(const struct sock *sk,
> #endif
>
> /* validate received truncated hmac and create hmac for third ACK */
> -static bool subflow_thmac_valid(struct mptcp_subflow_context
> *subflow)
> +static bool subflow_thmac_valid(struct mptcp_subflow_context
> *subflow,
> + u64 thmac)
Perhaps we could rename this parameter, say to "subflow_thmac", so that
we don't need to rename the local variable "thmac" to "expected_thmac".
What do you think?
Thanks,
-Geliang
> {
> u8 hmac[SHA256_DIGEST_SIZE];
> - u64 thmac;
> + u64 expected_thmac;
>
> subflow_generate_hmac(subflow->remote_key, subflow-
> >local_key,
> subflow->remote_nonce, subflow-
> >local_nonce,
> hmac);
>
> - thmac = get_unaligned_be64(hmac);
> - pr_debug("subflow=%p, token=%u, thmac=%llu, subflow-
> >thmac=%llu\n",
> - subflow, subflow->token, thmac, subflow->thmac);
> + expected_thmac = get_unaligned_be64(hmac);
> + pr_debug("subflow=%p, token=%u, expected_thmac=%llu,
> thmac=%llu\n",
> + subflow, subflow->token, expected_thmac, thmac);
>
> - return thmac == subflow->thmac;
> + return expected_thmac == thmac;
> }
>
> void mptcp_subflow_reset(struct sock *ssk)
> @@ -571,14 +572,13 @@ static void subflow_finish_connect(struct sock
> *sk, const struct sk_buff *skb)
> }
>
> subflow->backup = mp_opt.backup;
> - subflow->thmac = mp_opt.thmac;
> subflow->remote_nonce = mp_opt.nonce;
> WRITE_ONCE(subflow->remote_id, mp_opt.join_id);
> pr_debug("subflow=%p, thmac=%llu, remote_nonce=%u
> backup=%d\n",
> - subflow, subflow->thmac, subflow-
> >remote_nonce,
> + subflow, mp_opt.thmac, subflow-
> >remote_nonce,
> subflow->backup);
>
> - if (!subflow_thmac_valid(subflow)) {
> + if (!subflow_thmac_valid(subflow, mp_opt.thmac)) {
> MPTCP_INC_STATS(sock_net(sk),
> MPTCP_MIB_JOINSYNACKMAC);
> subflow->reset_reason = MPTCP_RST_EMPTCP;
> goto do_reset;
next prev parent reply other threads:[~2026-08-19 9:56 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-18 17:55 [PATCH mptcp-net 0/3] mptcp: avoid uninitialised read with MPJ with SYN cookies Matthieu Baerts (NGI0)
2026-08-18 17:55 ` [PATCH mptcp-net 1/3] mptcp: syncookies: remember the request backup flag Matthieu Baerts (NGI0)
2026-08-18 17:55 ` [PATCH mptcp-net 2/3] mptcp: subflow: no need to copy thmac during ulp_clone Matthieu Baerts (NGI0)
2026-08-18 17:55 ` [PATCH next mptcp-net 3/3] mptcp: remove thmac from subflow ctx Matthieu Baerts (NGI0)
2026-08-19 9:56 ` Geliang Tang [this message]
2026-08-19 10:02 ` Matthieu Baerts
2026-08-18 19:20 ` [PATCH mptcp-net 0/3] mptcp: avoid uninitialised read with MPJ with SYN cookies MPTCP CI
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b38f34dda21fcfe46b1ecf493c268ca393a8e570.camel@kernel.org \
--to=geliang@kernel.org \
--cc=matttbe@kernel.org \
--cc=mptcp@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.