Re: [PATCH mptcp] mptcp: fix uninitialized local_id in syncookie MP_JOIN reconstruction

Harshit Varu <[email protected]>
Newsgroups dev.linux.lists.sashiko-reviews
Message-ID <CANQf2B1ZSm8uC-c1s91EV6KF5i+eSSAZF+RUZieFDw-k2XZuXA@mail.gmail.com>
Good catch — request_bkup and thmac are indeed read uninitialized in
subflow_ulp_clone() on the syncookie path (not stored in join_entry, not
restored). I've expanded the fix (v2) to save and restore both, completing the
state restore alongside local_id. v2 also updates the commit message
accordingly.

On Wed, Aug 12, 2026 at 3:38 AM <[email protected]> wrote:
>
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
>
> Pre-existing issues:
> - [Medium] The `request_bkup` and `thmac` fields in `mptcp_subflow_request_sock` remain uninitialized when processing MP_JOIN SYN cookies, leading to state corruption and KMSAN violations.
> --
>
> --- Patch [1]: [PATCH mptcp] mptcp: fix uninitialized local_id in syncookie MP_JOIN reconstruction ---
> commit 0b8fe993e0c1f5676def1ed9e644c11a85aca0ae
> Author: Harshit Varu <[email protected]>
>
> mptcp: fix uninitialized local_id in syncookie MP_JOIN reconstruction
>
> This commit fixes an issue in MP_JOIN SYN cookie processing where the
> local_id was not restored from the saved cookie entry. By restoring
> subflow_req->local_id, it prevents the use of stale memory from previously
> freed request sockets.
>
> > diff --git a/net/mptcp/syncookies.c b/net/mptcp/syncookies.c
> > index 7f22526346a7e..b5cac57011221 100644
> > --- a/net/mptcp/syncookies.c
> > +++ b/net/mptcp/syncookies.c
> > @@ -118,6 +118,7 @@ bool mptcp_token_join_cookie_init_state(struct mptcp_subflow_request_sock *subfl
> >       subflow_req->local_nonce = e->local_nonce;
> >       subflow_req->backup = e->backup;
> >       subflow_req->remote_id = e->join_id;
> > +     subflow_req->local_id = e->local_id;
>
> [Severity: Medium]
> This is a pre-existing issue, but do we also need to initialize request_bkup
> and thmac here to prevent similar stale memory leaks?
>
> It looks like these fields are not stored in the join_entry struct during
> mptcp_join_store_state(), and therefore remain uninitialized in
> mptcp_token_join_cookie_init_state().
>
> Since the request socket slab is SLAB_TYPESAFE_BY_RCU and not zeroed, does
> this cause uninitialized stale data to be copied into the new subflow context
> when the child socket is cloned?
>
> net/mptcp/subflow.c:subflow_ulp_clone() {
>     ...
>     new_ctx->backup = subflow_req->backup;
>     new_ctx->request_bkup = subflow_req->request_bkup;
>     WRITE_ONCE(new_ctx->remote_id, subflow_req->remote_id);
>     new_ctx->token = subflow_req->token;
>     new_ctx->thmac = subflow_req->thmac;
>     ...
> }
>
> Could this lead to state corruption for the path priority or uninitialized
> memory access warnings if those fields are accessed later during packet
> scheduling?
>
> >       subflow_req->token = e->token;
> >       subflow_req->msk = msk;
> >       spin_unlock_bh(&join_entry_locks[i]);
>
> --
> Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.