mptcp: corner case locking for rx path fields initialization
authorPaolo Abeni <pabeni@redhat.com>
Thu, 8 Feb 2024 18:03:52 +0000 (19:03 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 12 Feb 2024 10:08:13 +0000 (10:08 +0000)
commite4a0fa47e816e186f6b4c0055d07eeec42d11871
tree4a4113cab6f7e706de9a9355ea85bbca245d6bef
parent3f83d8a77eeeb47011b990fd766a421ee64f1d73
mptcp: corner case locking for rx path fields initialization

Most MPTCP-level related fields are under the mptcp data lock
protection, but are written one-off without such lock at MPC
complete time, both for the client and the server

Leverage the mptcp_propagate_state() infrastructure to move such
initialization under the proper lock client-wise.

The server side critical init steps are done by
mptcp_subflow_fully_established(): ensure the caller properly held the
relevant lock, and avoid acquiring the same lock in the nested scopes.

There are no real potential races, as write access to such fields
is implicitly serialized by the MPTCP state machine; the primary
goal is consistency.

Fixes: d22f4988ffec ("mptcp: process MP_CAPABLE data option")
Cc: stable@vger.kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Mat Martineau <martineau@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/mptcp/fastopen.c
net/mptcp/options.c
net/mptcp/protocol.c
net/mptcp/protocol.h
net/mptcp/subflow.c