On Mon, May 23, 2022 at 08:51:52PM -0700, Mat Martineau wrote:
On Mon, 23 May 2022, Greg Kroah-Hartman wrote:
From: Paolo Abeni pabeni@redhat.com
[ Upstream commit 4cf86ae84c718333928fd2d43168a1e359a28329 ]
The address ID selection for MPJ subflows created in response to incoming ADD_ADDR option is currently unreliable: it happens at MPJ socket creation time, when the local address could be unknown.
Additionally, if the no local endpoint is available for the local address, a new dummy endpoint is created, confusing the user-land.
This change refactor the code to move the address ID selection inside the rebuild_header() helper, when the local address eventually selected by the route lookup is finally known. If the address used is not mapped by any endpoint - and thus can't be advertised/removed pick the id 0 instead of allocate a new endpoint.
Signed-off-by: Paolo Abeni pabeni@redhat.com Signed-off-by: Mat Martineau mathew.j.martineau@linux.intel.com Signed-off-by: Jakub Kicinski kuba@kernel.org Signed-off-by: Sasha Levin sashal@kernel.org
net/mptcp/pm_netlink.c | 13 -------- net/mptcp/protocol.c | 3 ++ net/mptcp/protocol.h | 3 +- net/mptcp/subflow.c | 67 ++++++++++++++++++++++++++++++++++++------ 4 files changed, 63 insertions(+), 23 deletions(-)
Greg, Sasha -
Is it possible to drop this one patch? It makes one of the mptcp selftests fail (mptcp_join.sh, "single address, backup").
Does that mean the backport is incorrect, or that the selftest is wrong?
Looks like this patch has been included in stable because of this single hunk that helps "mptcp: Do TCP fallback on early DSS checksum failure" apply cleanly:
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index aec767ee047a..e4413b3e50c2 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -442,7 +442,8 @@ struct mptcp_subflow_context { rx_eof : 1, can_ack : 1, /* only after processing the remote a key */ disposable : 1, /* ctx can be free at ulp release time */
stale : 1; /* unable to snd/rcv data, do not use for xmit */
stale : 1, /* unable to snd/rcv data, do not use for xmit */
enum mptcp_data_avail data_avail; u32 remote_nonce; u64 thmac;local_id_valid : 1; /* local_id is correctly initialized */
"mptcp: Do TCP fallback on early DSS checksum failure" also adds a bit to that bitfield, but there is no functional dependency between the patches.
If you need to drop the "mptcp: Do TCP fallback..." patch too, I can send a backported version tomorrow that accounts for that bitfield change.
Yes, I had to drop that second patch because of this. Both are now dropped from 5.15 and 5.17, can you provide a working backport?
thanks,
greg k-h