This is a note to let you know that I've just added the patch titled selftests: mptcp: lib: skip if not below kernel version to the 6.1-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-lib-skip-if-not-below-kernel-version.patch and it can be found in the queue-6.1 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From b1a6a38ab8a633546cefae890da842f19e006c74 Mon Sep 17 00:00:00 2001 From: Matthieu Baerts <matthieu.baerts@xxxxxxxxxxxx> Date: Sat, 10 Jun 2023 18:11:36 +0200 Subject: selftests: mptcp: lib: skip if not below kernel version From: Matthieu Baerts <matthieu.baerts@xxxxxxxxxxxx> commit b1a6a38ab8a633546cefae890da842f19e006c74 upstream. Selftests are supposed to run on any kernels, including the old ones not supporting all MPTCP features. A new function is now available to easily detect if a feature is missing by looking at the kernel version. That's clearly not ideal and this kind of check should be avoided as soon as possible. But sometimes, there are no external sign that a "feature" is available or not: internal behaviours can change without modifying the uAPI and these selftests are verifying the internal behaviours. Sometimes, the only (easy) way to verify if the feature is present is to run the test but then the validation cannot determine if there is a failure with the feature or if the feature is missing. Then it looks better to check the kernel version instead of having tests that can never fail. In any case, we need a solution not to have a whole selftest being marked as failed just because one sub-test has failed. Note that this env var car be set to 1 not to do such check and run the linked sub-test: SELFTESTS_MPTCP_LIB_NO_KVERSION_CHECK. This new helper is going to be used in the following commits. In order to ease the backport of such future patches, it would be good if this patch is backported up to the introduction of MPTCP selftests, hence the Fixes tag below: this type of check was supposed to be done from the beginning. Link: https://github.com/multipath-tcp/mptcp_net-next/issues/368 Fixes: 048d19d444be ("mptcp: add basic kselftest for mptcp") 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_lib.sh | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) --- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh @@ -76,3 +76,29 @@ mptcp_lib_kallsyms_doesnt_have() { mptcp_lib_fail_if_expected_feature "${sym} symbol has been found" } + +# !!!AVOID USING THIS!!! +# Features might not land in the expected version and features can be backported +# +# $1: kernel version, e.g. 6.3 +mptcp_lib_kversion_ge() { + local exp_maj="${1%.*}" + local exp_min="${1#*.}" + local v maj min + + # If the kernel has backported features, set this env var to 1: + if [ "${SELFTESTS_MPTCP_LIB_NO_KVERSION_CHECK:-}" = "1" ]; then + return 0 + fi + + v=$(uname -r | cut -d'.' -f1,2) + maj=${v%.*} + min=${v#*.} + + if [ "${maj}" -gt "${exp_maj}" ] || + { [ "${maj}" -eq "${exp_maj}" ] && [ "${min}" -ge "${exp_min}" ]; }; then + return 0 + fi + + mptcp_lib_fail_if_expected_feature "kernel version ${1} lower than ${v}" +} Patches currently in stable-queue which might be from matthieu.baerts@xxxxxxxxxxxx are queue-6.1/selftests-mptcp-join-fix-shellcheck-warnings.patch queue-6.1/selftests-mptcp-join-support-rm_addr-for-used-endpoints-or-not.patch queue-6.1/selftests-mptcp-pm-nl-skip-fullmesh-flag-checks-if-not-supported.patch queue-6.1/selftests-mptcp-lib-skip-if-missing-symbol.patch queue-6.1/selftests-mptcp-join-skip-fullmesh-flag-tests-if-not-supported.patch queue-6.1/selftests-mptcp-join-skip-fastclose-tests-if-not-supported.patch queue-6.1/selftests-mptcp-remove-duplicated-entries-in-usage.patch queue-6.1/selftests-mptcp-sockopt-skip-getsockopt-checks-if-not-supported.patch queue-6.1/selftests-mptcp-join-skip-backup-if-set-flag-on-id-not-supported.patch queue-6.1/selftests-mptcp-userspace-pm-skip-if-ip-tool-is-unavailable.patch queue-6.1/selftests-mptcp-join-helpers-to-skip-tests.patch queue-6.1/selftests-mptcp-lib-skip-if-not-below-kernel-version.patch queue-6.1/selftests-mptcp-userspace-pm-skip-if-not-supported.patch queue-6.1/selftests-mptcp-join-skip-implicit-tests-if-not-supported.patch queue-6.1/selftests-mptcp-sockopt-relax-expected-returned-size.patch queue-6.1/selftests-mptcp-pm-nl-remove-hardcoded-default-limits.patch queue-6.1/selftests-mptcp-join-skip-check-if-mib-counter-not-supported.patch queue-6.1/selftests-mptcp-join-use-iptables-legacy-if-available.patch queue-6.1/selftests-mptcp-join-support-local-endpoint-being-tracked-or-not.patch queue-6.1/selftests-mptcp-connect-skip-transp-tests-if-not-supported.patch queue-6.1/selftests-mptcp-join-skip-mpc-backups-tests-if-not-supported.patch queue-6.1/selftests-mptcp-connect-skip-disconnect-tests-if-not-supported.patch