From: Greg Kroah-Hartman Date: Thu, 22 Jun 2023 08:02:42 +0000 (+0200) Subject: 5.10-stable patches X-Git-Tag: v4.14.320~62 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c067a1835f2de3393c27a98fa86039e75cf41239;p=thirdparty%2Fkernel%2Fstable-queue.git 5.10-stable patches added patches: selftests-mptcp-lib-skip-if-missing-symbol.patch selftests-mptcp-lib-skip-if-not-below-kernel-version.patch --- diff --git a/queue-5.10/selftests-mptcp-lib-skip-if-missing-symbol.patch b/queue-5.10/selftests-mptcp-lib-skip-if-missing-symbol.patch new file mode 100644 index 00000000000..e055c412bcc --- /dev/null +++ b/queue-5.10/selftests-mptcp-lib-skip-if-missing-symbol.patch @@ -0,0 +1,83 @@ +From 673004821ab98c6645bd21af56a290854e88f533 Mon Sep 17 00:00:00 2001 +From: Matthieu Baerts +Date: Thu, 8 Jun 2023 18:38:43 +0200 +Subject: selftests: mptcp: lib: skip if missing symbol + +From: Matthieu Baerts + +commit 673004821ab98c6645bd21af56a290854e88f533 upstream. + +Selftests are supposed to run on any kernels, including the old ones not +supporting all MPTCP features. + +New functions are now available to easily detect if a certain feature is +missing by looking at kallsyms. + +These new helpers are 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@vger.kernel.org +Signed-off-by: Matthieu Baerts +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/net/mptcp/config | 1 + tools/testing/selftests/net/mptcp/mptcp_lib.sh | 38 +++++++++++++++++++++++++ + 2 files changed, 39 insertions(+) + +--- a/tools/testing/selftests/net/mptcp/config ++++ b/tools/testing/selftests/net/mptcp/config +@@ -1,3 +1,4 @@ ++CONFIG_KALLSYMS=y + CONFIG_MPTCP=y + CONFIG_IPV6=y + CONFIG_MPTCP_IPV6=y +--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh ++++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh +@@ -38,3 +38,41 @@ mptcp_lib_check_mptcp() { + exit ${KSFT_SKIP} + fi + } ++ ++mptcp_lib_check_kallsyms() { ++ if ! mptcp_lib_has_file "/proc/kallsyms"; then ++ echo "SKIP: CONFIG_KALLSYMS is missing" ++ exit ${KSFT_SKIP} ++ fi ++} ++ ++# Internal: use mptcp_lib_kallsyms_has() instead ++__mptcp_lib_kallsyms_has() { ++ local sym="${1}" ++ ++ mptcp_lib_check_kallsyms ++ ++ grep -q " ${sym}" /proc/kallsyms ++} ++ ++# $1: part of a symbol to look at, add '$' at the end for full name ++mptcp_lib_kallsyms_has() { ++ local sym="${1}" ++ ++ if __mptcp_lib_kallsyms_has "${sym}"; then ++ return 0 ++ fi ++ ++ mptcp_lib_fail_if_expected_feature "${sym} symbol not found" ++} ++ ++# $1: part of a symbol to look at, add '$' at the end for full name ++mptcp_lib_kallsyms_doesnt_have() { ++ local sym="${1}" ++ ++ if ! __mptcp_lib_kallsyms_has "${sym}"; then ++ return 0 ++ fi ++ ++ mptcp_lib_fail_if_expected_feature "${sym} symbol has been found" ++} diff --git a/queue-5.10/selftests-mptcp-lib-skip-if-not-below-kernel-version.patch b/queue-5.10/selftests-mptcp-lib-skip-if-not-below-kernel-version.patch new file mode 100644 index 00000000000..fedb938b11f --- /dev/null +++ b/queue-5.10/selftests-mptcp-lib-skip-if-not-below-kernel-version.patch @@ -0,0 +1,81 @@ +From b1a6a38ab8a633546cefae890da842f19e006c74 Mon Sep 17 00:00:00 2001 +From: Matthieu Baerts +Date: Sat, 10 Jun 2023 18:11:36 +0200 +Subject: selftests: mptcp: lib: skip if not below kernel version + +From: Matthieu Baerts + +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@vger.kernel.org +Signed-off-by: Matthieu Baerts +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + .../testing/selftests/net/mptcp/mptcp_lib.sh | 26 +++++++++++++++++++ + 1 file changed, 26 insertions(+) + +diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh +index 29b65f4b73b2..f32045b23b89 100644 +--- 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}" ++} +-- +2.41.0 + diff --git a/queue-5.10/series b/queue-5.10/series index 8f788538fc5..87b32da98ad 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -2,3 +2,5 @@ drm-amd-display-fix-the-system-hang-while-disable-ps.patch net-sched-refactor-qdisc_graft-for-ingress-and-clsac.patch tracing-add-tracing_reset_all_online_cpus_unlocked-function.patch tick-common-align-tick-period-during-sched_timer-setup.patch +selftests-mptcp-lib-skip-if-missing-symbol.patch +selftests-mptcp-lib-skip-if-not-below-kernel-version.patch