This is a note to let you know that I've just added the patch titled selftests: mptcp: sockopt: relax expected returned size to the 6.3-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: selftests-mptcp-sockopt-relax-expected-returned-size.patch and it can be found in the queue-6.3 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 8dee6ca2ac1e5630a7bb6a98bc0b686916fc2000 Mon Sep 17 00:00:00 2001 From: Matthieu Baerts <matthieu.baerts@xxxxxxxxxxxx> Date: Thu, 8 Jun 2023 18:38:51 +0200 Subject: selftests: mptcp: sockopt: relax expected returned size From: Matthieu Baerts <matthieu.baerts@xxxxxxxxxxxx> commit 8dee6ca2ac1e5630a7bb6a98bc0b686916fc2000 upstream. Selftests are supposed to run on any kernels, including the old ones not supporting all MPTCP features. One of them is the getsockopt(SOL_MPTCP) to get info about the MPTCP connections introduced by commit 55c42fa7fa33 ("mptcp: add MPTCP_INFO getsockopt") and the following ones. We cannot guess in advance which sizes the kernel will returned: older kernel can returned smaller sizes, e.g. recently the tcp_info structure has been modified in commit 71fc704768f6 ("tcp: add rcv_wnd and plb_rehash to TCP_INFO") where a new field has been added. The userspace can also expect a smaller size if it is compiled with old uAPI kernel headers. So for these sizes, we can only check if they are above a certain threshold, 0 for the moment. We can also only compared sizes with the ones set by the kernel. Link: https://github.com/multipath-tcp/mptcp_net-next/issues/368 Fixes: ce9979129a0b ("selftests: mptcp: add mptcp getsockopt test cases") Cc: stable@xxxxxxxxxxxxxxx Signed-off-by: Matthieu Baerts <matthieu.baerts@xxxxxxxxxxxx> Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- tools/testing/selftests/net/mptcp/mptcp_sockopt.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) --- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.c +++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.c @@ -87,6 +87,10 @@ struct so_state { uint64_t tcpi_rcv_delta; }; +#ifndef MIN +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#endif + static void die_perror(const char *msg) { perror(msg); @@ -349,13 +353,14 @@ static void do_getsockopt_tcp_info(struc xerror("getsockopt MPTCP_TCPINFO (tries %d, %m)"); assert(olen <= sizeof(ti)); - assert(ti.d.size_user == ti.d.size_kernel); - assert(ti.d.size_user == sizeof(struct tcp_info)); + assert(ti.d.size_kernel > 0); + assert(ti.d.size_user == + MIN(ti.d.size_kernel, sizeof(struct tcp_info))); assert(ti.d.num_subflows == 1); assert(olen > (socklen_t)sizeof(struct mptcp_subflow_data)); olen -= sizeof(struct mptcp_subflow_data); - assert(olen == sizeof(struct tcp_info)); + assert(olen == ti.d.size_user); if (ti.ti[0].tcpi_bytes_sent == w && ti.ti[0].tcpi_bytes_received == r) @@ -401,13 +406,14 @@ static void do_getsockopt_subflow_addrs( die_perror("getsockopt MPTCP_SUBFLOW_ADDRS"); assert(olen <= sizeof(addrs)); - assert(addrs.d.size_user == addrs.d.size_kernel); - assert(addrs.d.size_user == sizeof(struct mptcp_subflow_addrs)); + assert(addrs.d.size_kernel > 0); + assert(addrs.d.size_user == + MIN(addrs.d.size_kernel, sizeof(struct mptcp_subflow_addrs))); assert(addrs.d.num_subflows == 1); assert(olen > (socklen_t)sizeof(struct mptcp_subflow_data)); olen -= sizeof(struct mptcp_subflow_data); - assert(olen == sizeof(struct mptcp_subflow_addrs)); + assert(olen == addrs.d.size_user); llen = sizeof(local); ret = getsockname(fd, (struct sockaddr *)&local, &llen); Patches currently in stable-queue which might be from matthieu.baerts@xxxxxxxxxxxx are queue-6.3/selftests-mptcp-join-fix-shellcheck-warnings.patch queue-6.3/selftests-mptcp-join-support-rm_addr-for-used-endpoints-or-not.patch queue-6.3/selftests-mptcp-pm-nl-skip-fullmesh-flag-checks-if-not-supported.patch queue-6.3/selftests-mptcp-lib-skip-if-missing-symbol.patch queue-6.3/selftests-mptcp-join-skip-fullmesh-flag-tests-if-not-supported.patch queue-6.3/selftests-mptcp-connect-skip-tfo-tests-if-not-supported.patch queue-6.3/selftests-mptcp-join-skip-fastclose-tests-if-not-supported.patch queue-6.3/selftests-mptcp-remove-duplicated-entries-in-usage.patch queue-6.3/selftests-mptcp-sockopt-skip-getsockopt-checks-if-not-supported.patch queue-6.3/selftests-mptcp-join-skip-backup-if-set-flag-on-id-not-supported.patch queue-6.3/selftests-mptcp-join-skip-mixed-tests-if-not-supported.patch queue-6.3/selftests-mptcp-userspace-pm-skip-if-ip-tool-is-unavailable.patch queue-6.3/selftests-mptcp-join-helpers-to-skip-tests.patch queue-6.3/selftests-mptcp-lib-skip-if-not-below-kernel-version.patch queue-6.3/selftests-mptcp-userspace-pm-skip-if-not-supported.patch queue-6.3/selftests-mptcp-join-uniform-listener-tests.patch queue-6.3/selftests-mptcp-diag-skip-listen-tests-if-not-supported.patch queue-6.3/selftests-mptcp-sockopt-skip-tcp_inq-checks-if-not-supported.patch queue-6.3/selftests-mptcp-join-skip-test-if-iptables-tc-cmds-fail.patch queue-6.3/selftests-mptcp-join-skip-implicit-tests-if-not-supported.patch queue-6.3/selftests-mptcp-userspace-pm-skip-pm-listener-events-tests-if-unavailable.patch queue-6.3/selftests-mptcp-join-skip-fail-tests-if-not-supported.patch queue-6.3/selftests-mptcp-sockopt-relax-expected-returned-size.patch queue-6.3/selftests-mptcp-pm-nl-remove-hardcoded-default-limits.patch queue-6.3/selftests-mptcp-join-skip-check-if-mib-counter-not-supported.patch queue-6.3/selftests-mptcp-diag-skip-inuse-tests-if-not-supported.patch queue-6.3/selftests-mptcp-join-use-iptables-legacy-if-available.patch queue-6.3/selftests-mptcp-join-support-local-endpoint-being-tracked-or-not.patch queue-6.3/selftests-mptcp-join-skip-userspace-pm-tests-if-not-supported.patch queue-6.3/selftests-mptcp-connect-skip-transp-tests-if-not-supported.patch queue-6.3/selftests-mptcp-join-skip-mpc-backups-tests-if-not-supported.patch queue-6.3/selftests-mptcp-join-skip-pm-listener-tests-if-not-supported.patch queue-6.3/selftests-mptcp-connect-skip-disconnect-tests-if-not-supported.patch