From: Greg Kroah-Hartman Date: Wed, 19 Jun 2024 10:58:08 +0000 (+0200) Subject: 6.6-stable patches X-Git-Tag: v6.1.95~33 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=389c88e8610f5d7ebada6a0b50083567776fa865;p=thirdparty%2Fkernel%2Fstable-queue.git 6.6-stable patches added patches: revert-fork-defer-linking-file-vma-until-vma-is-fully-initialized.patch selftests-forwarding-avoid-failures-to-source-net-lib.sh.patch selftests-net-add-lib.sh.patch selftests-net-add-variable-ns_list-for-lib.sh.patch --- diff --git a/queue-6.6/netfilter-use-flowlabel-flow-key-when-re-routing-man.patch b/queue-6.6/netfilter-use-flowlabel-flow-key-when-re-routing-man.patch deleted file mode 100644 index e290cf06e02..00000000000 --- a/queue-6.6/netfilter-use-flowlabel-flow-key-when-re-routing-man.patch +++ /dev/null @@ -1,41 +0,0 @@ -From b56061547b2a20efecb96084e4b6e7f33ecf28bc Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 6 Jun 2024 12:23:31 +0200 -Subject: netfilter: Use flowlabel flow key when re-routing mangled packets - -From: Florian Westphal - -[ Upstream commit 6f8f132cc7bac2ac76911e47d5baa378aafda4cb ] - -'ip6 dscp set $v' in an nftables outpute route chain has no effect. -While nftables does detect the dscp change and calls the reroute hook. -But ip6_route_me_harder never sets the dscp/flowlabel: -flowlabel/dsfield routing rules are ignored and no reroute takes place. - -Thanks to Yi Chen for an excellent reproducer script that I used -to validate this change. - -Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") -Reported-by: Yi Chen -Signed-off-by: Florian Westphal -Signed-off-by: Pablo Neira Ayuso -Signed-off-by: Sasha Levin ---- - net/ipv6/netfilter.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/net/ipv6/netfilter.c b/net/ipv6/netfilter.c -index 857713d7a38a5..1df23cd31b767 100644 ---- a/net/ipv6/netfilter.c -+++ b/net/ipv6/netfilter.c -@@ -36,6 +36,7 @@ int ip6_route_me_harder(struct net *net, struct sock *sk_partial, struct sk_buff - .flowi6_uid = sock_net_uid(net, sk), - .daddr = iph->daddr, - .saddr = iph->saddr, -+ .flowlabel = ip6_flowinfo(iph), - }; - int err; - --- -2.43.0 - diff --git a/queue-6.6/revert-fork-defer-linking-file-vma-until-vma-is-fully-initialized.patch b/queue-6.6/revert-fork-defer-linking-file-vma-until-vma-is-fully-initialized.patch new file mode 100644 index 00000000000..bea7f8fd118 --- /dev/null +++ b/queue-6.6/revert-fork-defer-linking-file-vma-until-vma-is-fully-initialized.patch @@ -0,0 +1,66 @@ +From sam@gentoo.org Wed Jun 19 12:52:04 2024 +From: Sam James +Date: Fri, 14 Jun 2024 09:50:59 +0100 +Subject: Revert "fork: defer linking file vma until vma is fully initialized" +To: stable@vger.kernel.org +Cc: Greg KH , leah.rumancik@gmail.com, Miaohe Lin , Sam James +Message-ID: <20240614085102.3198934-1-sam@gentoo.org> + +From: Sam James + +This reverts commit cec11fa2eb512ebe3a459c185f4aca1d44059bbf which is commit +35e351780fa9d8240dd6f7e4f245f9ea37e96c19 upstream. + +The backport is incomplete and causes xfstests failures. The consequences +of the incomplete backport seem worse than the original issue, so pick +the lesser evil and revert until a full backport is ready. + +Link: https://lore.kernel.org/stable/20240604004751.3883227-1-leah.rumancik@gmail.com/ +Reported-by: Leah Rumancik +Signed-off-by: Sam James +Signed-off-by: Greg Kroah-Hartman +--- + kernel/fork.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -727,15 +727,6 @@ static __latent_entropy int dup_mmap(str + } else if (anon_vma_fork(tmp, mpnt)) + goto fail_nomem_anon_vma_fork; + vm_flags_clear(tmp, VM_LOCKED_MASK); +- /* +- * Copy/update hugetlb private vma information. +- */ +- if (is_vm_hugetlb_page(tmp)) +- hugetlb_dup_vma_private(tmp); +- +- if (tmp->vm_ops && tmp->vm_ops->open) +- tmp->vm_ops->open(tmp); +- + file = tmp->vm_file; + if (file) { + struct address_space *mapping = file->f_mapping; +@@ -752,6 +743,12 @@ static __latent_entropy int dup_mmap(str + i_mmap_unlock_write(mapping); + } + ++ /* ++ * Copy/update hugetlb private vma information. ++ */ ++ if (is_vm_hugetlb_page(tmp)) ++ hugetlb_dup_vma_private(tmp); ++ + /* Link the vma into the MT */ + if (vma_iter_bulk_store(&vmi, tmp)) + goto fail_nomem_vmi_store; +@@ -760,6 +757,9 @@ static __latent_entropy int dup_mmap(str + if (!(tmp->vm_flags & VM_WIPEONFORK)) + retval = copy_page_range(tmp, mpnt); + ++ if (tmp->vm_ops && tmp->vm_ops->open) ++ tmp->vm_ops->open(tmp); ++ + if (retval) + goto loop_out; + } diff --git a/queue-6.6/selftests-forwarding-avoid-failures-to-source-net-lib.sh.patch b/queue-6.6/selftests-forwarding-avoid-failures-to-source-net-lib.sh.patch new file mode 100644 index 00000000000..22eba225d39 --- /dev/null +++ b/queue-6.6/selftests-forwarding-avoid-failures-to-source-net-lib.sh.patch @@ -0,0 +1,126 @@ +From po-hsu.lin@canonical.com Wed Jun 19 11:40:09 2024 +From: Po-Hsu Lin +Date: Wed, 19 Jun 2024 17:39:24 +0800 +Subject: selftests: forwarding: Avoid failures to source net/lib.sh +To: stable@vger.kernel.org +Cc: po-hsu.lin@canonical.com, gregkh@linuxfoundation.org, petrm@nvidia.com, liuhangbin@gmail.com, pabeni@redhat.com, kuba@kernel.org, bpoirier@nvidia.com, idosch@nvidia.com +Message-ID: <20240619093924.1291623-4-po-hsu.lin@canonical.com> + +From: Benjamin Poirier + +commit 2114e83381d3289a88378850f43069e79f848083 upstream. + +The expression "source ../lib.sh" added to net/forwarding/lib.sh in commit +25ae948b4478 ("selftests/net: add lib.sh") does not work for tests outside +net/forwarding which source net/forwarding/lib.sh (1). It also does not +work in some cases where only a subset of tests are exported (2). + +Avoid the problems mentioned above by replacing the faulty expression with +a copy of the content from net/lib.sh which is used by files under +net/forwarding. + +A more thorough solution which avoids duplicating content between +net/lib.sh and net/forwarding/lib.sh has been posted here: +https://lore.kernel.org/netdev/20231222135836.992841-1-bpoirier@nvidia.com/ + +The approach in the current patch is a stopgap solution to avoid submitting +large changes at the eleventh hour of this development cycle. + +Example of problem 1) + +tools/testing/selftests/drivers/net/bonding$ ./dev_addr_lists.sh +./net_forwarding_lib.sh: line 41: ../lib.sh: No such file or directory +TEST: bonding cleanup mode active-backup [ OK ] +TEST: bonding cleanup mode 802.3ad [ OK ] +TEST: bonding LACPDU multicast address to slave (from bond down) [ OK ] +TEST: bonding LACPDU multicast address to slave (from bond up) [ OK ] + +An error message is printed but since the test does not use functions from +net/lib.sh, the test results are not affected. + +Example of problem 2) + +tools/testing/selftests$ make install TARGETS="net/forwarding" +tools/testing/selftests$ cd kselftest_install/net/forwarding/ +tools/testing/selftests/kselftest_install/net/forwarding$ ./pedit_ip.sh veth{0..3} +lib.sh: line 41: ../lib.sh: No such file or directory +TEST: ping [ OK ] +TEST: ping6 [ OK ] +./pedit_ip.sh: line 135: busywait: command not found +TEST: dev veth1 ingress pedit ip src set 198.51.100.1 [FAIL] + Expected to get 10 packets, but got . +./pedit_ip.sh: line 135: busywait: command not found +TEST: dev veth2 egress pedit ip src set 198.51.100.1 [FAIL] + Expected to get 10 packets, but got . +./pedit_ip.sh: line 135: busywait: command not found +TEST: dev veth1 ingress pedit ip dst set 198.51.100.1 [FAIL] + Expected to get 10 packets, but got . +./pedit_ip.sh: line 135: busywait: command not found +TEST: dev veth2 egress pedit ip dst set 198.51.100.1 [FAIL] + Expected to get 10 packets, but got . +./pedit_ip.sh: line 135: busywait: command not found +TEST: dev veth1 ingress pedit ip6 src set 2001:db8:2::1 [FAIL] + Expected to get 10 packets, but got . +./pedit_ip.sh: line 135: busywait: command not found +TEST: dev veth2 egress pedit ip6 src set 2001:db8:2::1 [FAIL] + Expected to get 10 packets, but got . +./pedit_ip.sh: line 135: busywait: command not found +TEST: dev veth1 ingress pedit ip6 dst set 2001:db8:2::1 [FAIL] + Expected to get 10 packets, but got . +./pedit_ip.sh: line 135: busywait: command not found +TEST: dev veth2 egress pedit ip6 dst set 2001:db8:2::1 [FAIL] + Expected to get 10 packets, but got . + +In this case, the test results are affected. + +Fixes: 25ae948b4478 ("selftests/net: add lib.sh") +Suggested-by: Ido Schimmel +Suggested-by: Petr Machata +Reviewed-by: Ido Schimmel +Tested-by: Petr Machata +Signed-off-by: Benjamin Poirier +Reviewed-by: Hangbin Liu +Link: https://lore.kernel.org/r/20240104141109.100672-1-bpoirier@nvidia.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Po-Hsu Lin +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/net/forwarding/lib.sh | 27 +++++++++++++++++++++++++- + 1 file changed, 26 insertions(+), 1 deletion(-) + +--- a/tools/testing/selftests/net/forwarding/lib.sh ++++ b/tools/testing/selftests/net/forwarding/lib.sh +@@ -38,7 +38,32 @@ if [[ -f $relative_path/forwarding.confi + source "$relative_path/forwarding.config" + fi + +-source ../lib.sh ++# Kselftest framework requirement - SKIP code is 4. ++ksft_skip=4 ++ ++busywait() ++{ ++ local timeout=$1; shift ++ ++ local start_time="$(date -u +%s%3N)" ++ while true ++ do ++ local out ++ out=$("$@") ++ local ret=$? ++ if ((!ret)); then ++ echo -n "$out" ++ return 0 ++ fi ++ ++ local current_time="$(date -u +%s%3N)" ++ if ((current_time - start_time > timeout)); then ++ echo -n "$out" ++ return 1 ++ fi ++ done ++} ++ + ############################################################################## + # Sanity checks + diff --git a/queue-6.6/selftests-net-add-lib.sh.patch b/queue-6.6/selftests-net-add-lib.sh.patch new file mode 100644 index 00000000000..d9bfdb011ee --- /dev/null +++ b/queue-6.6/selftests-net-add-lib.sh.patch @@ -0,0 +1,182 @@ +From stable+bounces-53805-greg=kroah.com@vger.kernel.org Wed Jun 19 11:40:21 2024 +From: Po-Hsu Lin +Date: Wed, 19 Jun 2024 17:39:22 +0800 +Subject: selftests/net: add lib.sh +To: stable@vger.kernel.org +Cc: po-hsu.lin@canonical.com, gregkh@linuxfoundation.org, petrm@nvidia.com, liuhangbin@gmail.com, pabeni@redhat.com, kuba@kernel.org, bpoirier@nvidia.com, idosch@nvidia.com +Message-ID: <20240619093924.1291623-2-po-hsu.lin@canonical.com> + +From: Hangbin Liu + +commit 25ae948b447881bf689d459cd5bd4629d9c04b20 upstream. + +Add a lib.sh for net selftests. This file can be used to define commonly +used variables and functions. Some commonly used functions can be moved +from forwarding/lib.sh to this lib file. e.g. busywait(). + +Add function setup_ns() for user to create unique namespaces with given +prefix name. + +Reviewed-by: Petr Machata +Signed-off-by: Hangbin Liu +Signed-off-by: Paolo Abeni +[PHLin: add lib.sh to TEST_FILES directly as we already have upstream + commit 06efafd8 landed in 6.6.y] +Signed-off-by: Po-Hsu Lin +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/net/Makefile | 2 + tools/testing/selftests/net/forwarding/lib.sh | 27 -------- + tools/testing/selftests/net/lib.sh | 85 ++++++++++++++++++++++++++ + 3 files changed, 87 insertions(+), 27 deletions(-) + create mode 100644 tools/testing/selftests/net/lib.sh + +--- a/tools/testing/selftests/net/Makefile ++++ b/tools/testing/selftests/net/Makefile +@@ -92,7 +92,7 @@ TEST_PROGS += test_vxlan_nolocalbypass.s + TEST_PROGS += test_bridge_backup_port.sh + + TEST_FILES := settings +-TEST_FILES += in_netns.sh net_helper.sh setup_loopback.sh setup_veth.sh ++TEST_FILES += in_netns.sh lib.sh net_helper.sh setup_loopback.sh setup_veth.sh + + include ../lib.mk + +--- a/tools/testing/selftests/net/forwarding/lib.sh ++++ b/tools/testing/selftests/net/forwarding/lib.sh +@@ -4,9 +4,6 @@ + ############################################################################## + # Defines + +-# Kselftest framework requirement - SKIP code is 4. +-ksft_skip=4 +- + # Can be overridden by the configuration file. + PING=${PING:=ping} + PING6=${PING6:=ping6} +@@ -41,6 +38,7 @@ if [[ -f $relative_path/forwarding.confi + source "$relative_path/forwarding.config" + fi + ++source ../lib.sh + ############################################################################## + # Sanity checks + +@@ -395,29 +393,6 @@ log_info() + echo "INFO: $msg" + } + +-busywait() +-{ +- local timeout=$1; shift +- +- local start_time="$(date -u +%s%3N)" +- while true +- do +- local out +- out=$("$@") +- local ret=$? +- if ((!ret)); then +- echo -n "$out" +- return 0 +- fi +- +- local current_time="$(date -u +%s%3N)" +- if ((current_time - start_time > timeout)); then +- echo -n "$out" +- return 1 +- fi +- done +-} +- + not() + { + "$@" +--- /dev/null ++++ b/tools/testing/selftests/net/lib.sh +@@ -0,0 +1,85 @@ ++#!/bin/bash ++# SPDX-License-Identifier: GPL-2.0 ++ ++############################################################################## ++# Defines ++ ++# Kselftest framework requirement - SKIP code is 4. ++ksft_skip=4 ++ ++############################################################################## ++# Helpers ++busywait() ++{ ++ local timeout=$1; shift ++ ++ local start_time="$(date -u +%s%3N)" ++ while true ++ do ++ local out ++ out=$("$@") ++ local ret=$? ++ if ((!ret)); then ++ echo -n "$out" ++ return 0 ++ fi ++ ++ local current_time="$(date -u +%s%3N)" ++ if ((current_time - start_time > timeout)); then ++ echo -n "$out" ++ return 1 ++ fi ++ done ++} ++ ++cleanup_ns() ++{ ++ local ns="" ++ local errexit=0 ++ local ret=0 ++ ++ # disable errexit temporary ++ if [[ $- =~ "e" ]]; then ++ errexit=1 ++ set +e ++ fi ++ ++ for ns in "$@"; do ++ ip netns delete "${ns}" &> /dev/null ++ if ! busywait 2 ip netns list \| grep -vq "^$ns$" &> /dev/null; then ++ echo "Warn: Failed to remove namespace $ns" ++ ret=1 ++ fi ++ done ++ ++ [ $errexit -eq 1 ] && set -e ++ return $ret ++} ++ ++# setup netns with given names as prefix. e.g ++# setup_ns local remote ++setup_ns() ++{ ++ local ns="" ++ local ns_name="" ++ local ns_list="" ++ for ns_name in "$@"; do ++ # Some test may setup/remove same netns multi times ++ if unset ${ns_name} 2> /dev/null; then ++ ns="${ns_name,,}-$(mktemp -u XXXXXX)" ++ eval readonly ${ns_name}="$ns" ++ else ++ eval ns='$'${ns_name} ++ cleanup_ns "$ns" ++ ++ fi ++ ++ if ! ip netns add "$ns"; then ++ echo "Failed to create namespace $ns_name" ++ cleanup_ns "$ns_list" ++ return $ksft_skip ++ fi ++ ip -n "$ns" link set lo up ++ ns_list="$ns_list $ns" ++ done ++} diff --git a/queue-6.6/selftests-net-add-variable-ns_list-for-lib.sh.patch b/queue-6.6/selftests-net-add-variable-ns_list-for-lib.sh.patch new file mode 100644 index 00000000000..4fafc9b4e6e --- /dev/null +++ b/queue-6.6/selftests-net-add-variable-ns_list-for-lib.sh.patch @@ -0,0 +1,54 @@ +From stable+bounces-53804-greg=kroah.com@vger.kernel.org Wed Jun 19 11:40:18 2024 +From: Po-Hsu Lin +Date: Wed, 19 Jun 2024 17:39:23 +0800 +Subject: selftests/net: add variable NS_LIST for lib.sh +To: stable@vger.kernel.org +Cc: po-hsu.lin@canonical.com, gregkh@linuxfoundation.org, petrm@nvidia.com, liuhangbin@gmail.com, pabeni@redhat.com, kuba@kernel.org, bpoirier@nvidia.com, idosch@nvidia.com +Message-ID: <20240619093924.1291623-3-po-hsu.lin@canonical.com> + +From: Hangbin Liu + +commit b6925b4ed57cccf42ca0fb46c7446f0859e7ad4b upstream. + +Add a global variable NS_LIST to store all the namespaces that setup_ns +created, so the caller could call cleanup_all_ns() instead of remember +all the netns names when using cleanup_ns(). + +Signed-off-by: Hangbin Liu +Link: https://lore.kernel.org/r/20231213060856.4030084-2-liuhangbin@gmail.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Po-Hsu Lin +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/net/lib.sh | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/tools/testing/selftests/net/lib.sh ++++ b/tools/testing/selftests/net/lib.sh +@@ -6,6 +6,8 @@ + + # Kselftest framework requirement - SKIP code is 4. + ksft_skip=4 ++# namespace list created by setup_ns ++NS_LIST="" + + ############################################################################## + # Helpers +@@ -56,6 +58,11 @@ cleanup_ns() + return $ret + } + ++cleanup_all_ns() ++{ ++ cleanup_ns $NS_LIST ++} ++ + # setup netns with given names as prefix. e.g + # setup_ns local remote + setup_ns() +@@ -82,4 +89,5 @@ setup_ns() + ip -n "$ns" link set lo up + ns_list="$ns_list $ns" + done ++ NS_LIST="$NS_LIST $ns_list" + } diff --git a/queue-6.6/series b/queue-6.6/series index 5454979fc60..2871d41afc6 100644 --- a/queue-6.6/series +++ b/queue-6.6/series @@ -163,7 +163,6 @@ bluetooth-l2cap-fix-rejecting-l2cap_conn_param_updat.patch bluetooth-fix-connection-setup-in-l2cap_connect.patch netfilter-nft_inner-validate-mandatory-meta-and-payl.patch netfilter-ipset-fix-race-between-namespace-cleanup-a.patch -netfilter-use-flowlabel-flow-key-when-re-routing-man.patch x86-asm-use-c-n-instead-of-p-operand-modifier-in-asm.patch x86-uaccess-fix-missed-zeroing-of-ia32-u64-get_user-.patch scsi-ufs-core-quiesce-request-queues-before-checking.patch @@ -253,3 +252,7 @@ nilfs2-fix-potential-kernel-bug-due-to-lack-of-writeback-flag-waiting.patch tick-nohz_full-don-t-abuse-smp_call_function_single-in-tick_setup_device.patch mm-huge_memory-don-t-unpoison-huge_zero_folio.patch serial-8250_pxa-configure-tx_loadsz-to-match-fifo-irq-level.patch +revert-fork-defer-linking-file-vma-until-vma-is-fully-initialized.patch +selftests-net-add-lib.sh.patch +selftests-net-add-variable-ns_list-for-lib.sh.patch +selftests-forwarding-avoid-failures-to-source-net-lib.sh.patch