From: Greg Kroah-Hartman Date: Tue, 22 Apr 2025 07:55:44 +0000 (+0200) Subject: 6.6-stable patches X-Git-Tag: v6.1.135~87 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b57023369907d5f3e7a8aba34f0a059b771a8db9;p=thirdparty%2Fkernel%2Fstable-queue.git 6.6-stable patches added patches: fix-mmu-notifiers-for-range-based-invalidates.patch misc-pci_endpoint_test-avoid-issue-of-interrupts-remaining-after-request_irq-error.patch misc-pci_endpoint_test-fix-displaying-irq_type-after-request_irq-error.patch misc-pci_endpoint_test-fix-irq_type-to-convey-the-correct-type.patch mptcp-sockopt-fix-getting-freebind-transparent.patch selftests-mptcp-add-mptcp_lib_wait_local_port_listen.patch --- diff --git a/queue-6.6/fix-mmu-notifiers-for-range-based-invalidates.patch b/queue-6.6/fix-mmu-notifiers-for-range-based-invalidates.patch new file mode 100644 index 0000000000..0eddcf90c1 --- /dev/null +++ b/queue-6.6/fix-mmu-notifiers-for-range-based-invalidates.patch @@ -0,0 +1,98 @@ +From f7edb07ad7c66eab3dce57384f33b9799d579133 Mon Sep 17 00:00:00 2001 +From: Piotr Jaroszynski +Date: Tue, 4 Mar 2025 00:51:27 -0800 +Subject: Fix mmu notifiers for range-based invalidates + +From: Piotr Jaroszynski + +commit f7edb07ad7c66eab3dce57384f33b9799d579133 upstream. + +Update the __flush_tlb_range_op macro not to modify its parameters as +these are unexepcted semantics. In practice, this fixes the call to +mmu_notifier_arch_invalidate_secondary_tlbs() in +__flush_tlb_range_nosync() to use the correct range instead of an empty +range with start=end. The empty range was (un)lucky as it results in +taking the invalidate-all path that doesn't cause correctness issues, +but can certainly result in suboptimal perf. + +This has been broken since commit 6bbd42e2df8f ("mmu_notifiers: call +invalidate_range() when invalidating TLBs") when the call to the +notifiers was added to __flush_tlb_range(). It predates the addition of +the __flush_tlb_range_op() macro from commit 360839027a6e ("arm64: tlb: +Refactor the core flush algorithm of __flush_tlb_range") that made the +bug hard to spot. + +Fixes: 6bbd42e2df8f ("mmu_notifiers: call invalidate_range() when invalidating TLBs") + +Signed-off-by: Piotr Jaroszynski +Cc: Catalin Marinas +Cc: Will Deacon +Cc: Robin Murphy +Cc: Alistair Popple +Cc: Raghavendra Rao Ananta +Cc: SeongJae Park +Cc: Jason Gunthorpe +Cc: John Hubbard +Cc: Nicolin Chen +Cc: linux-arm-kernel@lists.infradead.org +Cc: iommu@lists.linux.dev +Cc: linux-mm@kvack.org +Cc: linux-kernel@vger.kernel.org +Cc: stable@vger.kernel.org +Reviewed-by: Catalin Marinas +Reviewed-by: Alistair Popple +Link: https://lore.kernel.org/r/20250304085127.2238030-1-pjaroszynski@nvidia.com +Signed-off-by: Will Deacon +[will: Resolve conflicts due to lack of LPA2 support] +Signed-off-by: Will Deacon +Signed-off-by: Greg Kroah-Hartman +--- + arch/arm64/include/asm/tlbflush.h | 22 ++++++++++++---------- + 1 file changed, 12 insertions(+), 10 deletions(-) + +--- a/arch/arm64/include/asm/tlbflush.h ++++ b/arch/arm64/include/asm/tlbflush.h +@@ -369,31 +369,33 @@ static inline void arch_tlbbatch_flush(s + #define __flush_tlb_range_op(op, start, pages, stride, \ + asid, tlb_level, tlbi_user) \ + do { \ ++ typeof(start) __flush_start = start; \ ++ typeof(pages) __flush_pages = pages; \ + int num = 0; \ + int scale = 3; \ + unsigned long addr; \ + \ +- while (pages > 0) { \ ++ while (__flush_pages > 0) { \ + if (!system_supports_tlb_range() || \ +- pages == 1) { \ +- addr = __TLBI_VADDR(start, asid); \ ++ __flush_pages == 1) { \ ++ addr = __TLBI_VADDR(__flush_start, asid); \ + __tlbi_level(op, addr, tlb_level); \ + if (tlbi_user) \ + __tlbi_user_level(op, addr, tlb_level); \ +- start += stride; \ +- pages -= stride >> PAGE_SHIFT; \ ++ __flush_start += stride; \ ++ __flush_pages -= stride >> PAGE_SHIFT; \ + continue; \ + } \ + \ +- num = __TLBI_RANGE_NUM(pages, scale); \ ++ num = __TLBI_RANGE_NUM(__flush_pages, scale); \ + if (num >= 0) { \ +- addr = __TLBI_VADDR_RANGE(start, asid, scale, \ +- num, tlb_level); \ ++ addr = __TLBI_VADDR_RANGE(__flush_start, asid, \ ++ scale, num, tlb_level); \ + __tlbi(r##op, addr); \ + if (tlbi_user) \ + __tlbi_user(r##op, addr); \ +- start += __TLBI_RANGE_PAGES(num, scale) << PAGE_SHIFT; \ +- pages -= __TLBI_RANGE_PAGES(num, scale); \ ++ __flush_start += __TLBI_RANGE_PAGES(num, scale) << PAGE_SHIFT; \ ++ __flush_pages -= __TLBI_RANGE_PAGES(num, scale);\ + } \ + scale--; \ + } \ diff --git a/queue-6.6/misc-pci_endpoint_test-avoid-issue-of-interrupts-remaining-after-request_irq-error.patch b/queue-6.6/misc-pci_endpoint_test-avoid-issue-of-interrupts-remaining-after-request_irq-error.patch new file mode 100644 index 0000000000..8a8aa75407 --- /dev/null +++ b/queue-6.6/misc-pci_endpoint_test-avoid-issue-of-interrupts-remaining-after-request_irq-error.patch @@ -0,0 +1,51 @@ +From f6cb7828c8e17520d4f5afb416515d3fae1af9a9 Mon Sep 17 00:00:00 2001 +From: Kunihiko Hayashi +Date: Tue, 25 Feb 2025 20:02:48 +0900 +Subject: misc: pci_endpoint_test: Avoid issue of interrupts remaining after request_irq error +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Kunihiko Hayashi + +commit f6cb7828c8e17520d4f5afb416515d3fae1af9a9 upstream. + +After devm_request_irq() fails with error in pci_endpoint_test_request_irq(), +the pci_endpoint_test_free_irq_vectors() is called assuming that all IRQs +have been released. + +However, some requested IRQs remain unreleased, so there are still +/proc/irq/* entries remaining, and this results in WARN() with the +following message: + + remove_proc_entry: removing non-empty directory 'irq/30', leaking at least 'pci-endpoint-test.0' + WARNING: CPU: 0 PID: 202 at fs/proc/generic.c:719 remove_proc_entry +0x190/0x19c + +To solve this issue, set the number of remaining IRQs to test->num_irqs, +and release IRQs in advance by calling pci_endpoint_test_release_irq(). + +Cc: stable@vger.kernel.org +Fixes: e03327122e2c ("pci_endpoint_test: Add 2 ioctl commands") +Reviewed-by: Manivannan Sadhasivam +Signed-off-by: Kunihiko Hayashi +Link: https://lore.kernel.org/r/20250225110252.28866-3-hayashi.kunihiko@socionext.com +[kwilczynski: commit log] +Signed-off-by: Krzysztof Wilczyński +Signed-off-by: Kunihiko Hayashi +Signed-off-by: Greg Kroah-Hartman +--- + drivers/misc/pci_endpoint_test.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/misc/pci_endpoint_test.c ++++ b/drivers/misc/pci_endpoint_test.c +@@ -260,6 +260,9 @@ fail: + break; + } + ++ test->num_irqs = i; ++ pci_endpoint_test_release_irq(test); ++ + return false; + } + diff --git a/queue-6.6/misc-pci_endpoint_test-fix-displaying-irq_type-after-request_irq-error.patch b/queue-6.6/misc-pci_endpoint_test-fix-displaying-irq_type-after-request_irq-error.patch new file mode 100644 index 0000000000..aad6b70636 --- /dev/null +++ b/queue-6.6/misc-pci_endpoint_test-fix-displaying-irq_type-after-request_irq-error.patch @@ -0,0 +1,54 @@ +From 919d14603dab6a9cf03ebbeb2cfa556df48737c8 Mon Sep 17 00:00:00 2001 +From: Kunihiko Hayashi +Date: Tue, 25 Feb 2025 20:02:49 +0900 +Subject: misc: pci_endpoint_test: Fix displaying 'irq_type' after 'request_irq' error +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Kunihiko Hayashi + +commit 919d14603dab6a9cf03ebbeb2cfa556df48737c8 upstream. + +There are two variables that indicate the interrupt type to be used +in the next test execution, global "irq_type" and "test->irq_type". + +The former is referenced from pci_endpoint_test_get_irq() to preserve +the current type for ioctl(PCITEST_GET_IRQTYPE). + +In the pci_endpoint_test_request_irq(), since this global variable +is referenced when an error occurs, the unintended error message is +displayed. + +For example, after running "pcitest -i 2", the following message +shows "MSI 3" even if the current IRQ type becomes "MSI-X": + + pci-endpoint-test 0000:01:00.0: Failed to request IRQ 30 for MSI 3 + SET IRQ TYPE TO MSI-X: NOT OKAY + +Fix this issue by using "test->irq_type" instead of global "irq_type". + +Cc: stable@vger.kernel.org +Fixes: b2ba9225e031 ("misc: pci_endpoint_test: Avoid using module parameter to determine irqtype") +Reviewed-by: Manivannan Sadhasivam +Signed-off-by: Kunihiko Hayashi +Link: https://lore.kernel.org/r/20250225110252.28866-4-hayashi.kunihiko@socionext.com +[kwilczynski: commit log] +Signed-off-by: Krzysztof Wilczyński +Signed-off-by: Kunihiko Hayashi +Signed-off-by: Greg Kroah-Hartman +--- + drivers/misc/pci_endpoint_test.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/misc/pci_endpoint_test.c ++++ b/drivers/misc/pci_endpoint_test.c +@@ -243,7 +243,7 @@ static bool pci_endpoint_test_request_ir + return true; + + fail: +- switch (irq_type) { ++ switch (test->irq_type) { + case IRQ_TYPE_LEGACY: + dev_err(dev, "Failed to request IRQ %d for Legacy\n", + pci_irq_vector(pdev, i)); diff --git a/queue-6.6/misc-pci_endpoint_test-fix-irq_type-to-convey-the-correct-type.patch b/queue-6.6/misc-pci_endpoint_test-fix-irq_type-to-convey-the-correct-type.patch new file mode 100644 index 0000000000..9d642f2e6c --- /dev/null +++ b/queue-6.6/misc-pci_endpoint_test-fix-irq_type-to-convey-the-correct-type.patch @@ -0,0 +1,65 @@ +From baaef0a274cfb75f9b50eab3ef93205e604f662c Mon Sep 17 00:00:00 2001 +From: Kunihiko Hayashi +Date: Tue, 25 Feb 2025 20:02:50 +0900 +Subject: misc: pci_endpoint_test: Fix 'irq_type' to convey the correct type +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Kunihiko Hayashi + +commit baaef0a274cfb75f9b50eab3ef93205e604f662c upstream. + +There are two variables that indicate the interrupt type to be used +in the next test execution, "irq_type" as global and "test->irq_type". + +The global is referenced from pci_endpoint_test_get_irq() to preserve +the current type for ioctl(PCITEST_GET_IRQTYPE). + +The type set in this function isn't reflected in the global "irq_type", +so ioctl(PCITEST_GET_IRQTYPE) returns the previous type. + +As a result, the wrong type is displayed in old version of "pcitest" +as follows: + + - Result of running "pcitest -i 0" + + SET IRQ TYPE TO LEGACY: OKAY + + - Result of running "pcitest -I" + + GET IRQ TYPE: MSI + +Whereas running the new version of "pcitest" in kselftest results in an +error as follows: + + # RUN pci_ep_basic.LEGACY_IRQ_TEST ... + # pci_endpoint_test.c:104:LEGACY_IRQ_TEST:Expected 0 (0) == ret (1) + # pci_endpoint_test.c:104:LEGACY_IRQ_TEST:Can't get Legacy IRQ type + +Fix this issue by propagating the current type to the global "irq_type". + +Fixes: b2ba9225e031 ("misc: pci_endpoint_test: Avoid using module parameter to determine irqtype") +Signed-off-by: Kunihiko Hayashi +[kwilczynski: commit log] +Signed-off-by: Krzysztof Wilczyński +Reviewed-by: Niklas Cassel +Reviewed-by: Manivannan Sadhasivam +Cc: stable@vger.kernel.org +Link: https://lore.kernel.org/r/20250225110252.28866-5-hayashi.kunihiko@socionext.com +Signed-off-by: Kunihiko Hayashi +Signed-off-by: Greg Kroah-Hartman +--- + drivers/misc/pci_endpoint_test.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/misc/pci_endpoint_test.c ++++ b/drivers/misc/pci_endpoint_test.c +@@ -711,6 +711,7 @@ static bool pci_endpoint_test_set_irq(st + if (!pci_endpoint_test_request_irq(test)) + goto err; + ++ irq_type = test->irq_type; + return true; + + err: diff --git a/queue-6.6/mptcp-sockopt-fix-getting-freebind-transparent.patch b/queue-6.6/mptcp-sockopt-fix-getting-freebind-transparent.patch new file mode 100644 index 0000000000..266d063e31 --- /dev/null +++ b/queue-6.6/mptcp-sockopt-fix-getting-freebind-transparent.patch @@ -0,0 +1,67 @@ +From e2f4ac7bab2205d3c4dd9464e6ffd82502177c51 Mon Sep 17 00:00:00 2001 +From: "Matthieu Baerts (NGI0)" +Date: Fri, 14 Mar 2025 21:11:33 +0100 +Subject: mptcp: sockopt: fix getting freebind & transparent + +From: Matthieu Baerts (NGI0) + +commit e2f4ac7bab2205d3c4dd9464e6ffd82502177c51 upstream. + +When adding a socket option support in MPTCP, both the get and set parts +are supposed to be implemented. + +IP(V6)_FREEBIND and IP(V6)_TRANSPARENT support for the setsockopt part +has been added a while ago, but it looks like the get part got +forgotten. It should have been present as a way to verify a setting has +been set as expected, and not to act differently from TCP or any other +socket types. + +Everything was in place to expose it, just the last step was missing. +Only new code is added to cover these specific getsockopt(), that seems +safe. + +Fixes: c9406a23c116 ("mptcp: sockopt: add SOL_IP freebind & transparent options") +Cc: stable@vger.kernel.org +Reviewed-by: Mat Martineau +Signed-off-by: Matthieu Baerts (NGI0) +Reviewed-by: Simon Horman +Link: https://patch.msgid.link/20250314-net-mptcp-fix-data-stream-corr-sockopt-v1-3-122dbb249db3@kernel.org +Signed-off-by: Paolo Abeni +[ Conflict in sockopt.c due to commit e08d0b3d1723 ("inet: implement + lockless IP_TOS") not being in this version. The conflict is in the + context and the modification can still be applied in + mptcp_getsockopt_v4() after the IP_TOS case. ] +Signed-off-by: Matthieu Baerts (NGI0) +Signed-off-by: Greg Kroah-Hartman +--- + net/mptcp/sockopt.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +--- a/net/mptcp/sockopt.c ++++ b/net/mptcp/sockopt.c +@@ -1388,6 +1388,12 @@ static int mptcp_getsockopt_v4(struct mp + switch (optname) { + case IP_TOS: + return mptcp_put_int_option(msk, optval, optlen, inet_sk(sk)->tos); ++ case IP_FREEBIND: ++ return mptcp_put_int_option(msk, optval, optlen, ++ inet_test_bit(FREEBIND, sk)); ++ case IP_TRANSPARENT: ++ return mptcp_put_int_option(msk, optval, optlen, ++ inet_test_bit(TRANSPARENT, sk)); + } + + return -EOPNOTSUPP; +@@ -1402,6 +1408,12 @@ static int mptcp_getsockopt_v6(struct mp + case IPV6_V6ONLY: + return mptcp_put_int_option(msk, optval, optlen, + sk->sk_ipv6only); ++ case IPV6_TRANSPARENT: ++ return mptcp_put_int_option(msk, optval, optlen, ++ inet_test_bit(TRANSPARENT, sk)); ++ case IPV6_FREEBIND: ++ return mptcp_put_int_option(msk, optval, optlen, ++ inet_test_bit(FREEBIND, sk)); + } + + return -EOPNOTSUPP; diff --git a/queue-6.6/selftests-mptcp-add-mptcp_lib_wait_local_port_listen.patch b/queue-6.6/selftests-mptcp-add-mptcp_lib_wait_local_port_listen.patch new file mode 100644 index 0000000000..a0b61a9333 --- /dev/null +++ b/queue-6.6/selftests-mptcp-add-mptcp_lib_wait_local_port_listen.patch @@ -0,0 +1,225 @@ +From 9369777c29395730cec967e7d0f48aed872b7110 Mon Sep 17 00:00:00 2001 +From: Geliang Tang +Date: Tue, 28 Nov 2023 15:18:59 -0800 +Subject: selftests: mptcp: add mptcp_lib_wait_local_port_listen + +From: Geliang Tang + +commit 9369777c29395730cec967e7d0f48aed872b7110 upstream. + +To avoid duplicated code in different MPTCP selftests, we can add +and use helpers defined in mptcp_lib.sh. + +wait_local_port_listen() helper is defined in diag.sh, mptcp_connect.sh, +mptcp_join.sh and simult_flows.sh, export it into mptcp_lib.sh and +rename it with mptcp_lib_ prefix. Use this new helper in all these +scripts. + +Note: We only have IPv4 connections in this helper, not looking at IPv6 +(tcp6) but that's OK because we only have IPv4 connections here in diag.sh. + +Reviewed-by: Matthieu Baerts +Signed-off-by: Geliang Tang +Signed-off-by: Mat Martineau +Link: https://lore.kernel.org/r/20231128-send-net-next-2023107-v4-15-8d6b94150f6b@kernel.org +Signed-off-by: Jakub Kicinski +Stable-dep-of: 5afca7e996c4 ("selftests: mptcp: join: test for prohibited MPC to port-based endp") +[ Conflict in diag.sh, because commit 1f24ba67ba49 ("selftests: mptcp: + diag: check CURRESTAB counters") that is more recent that the one + here, has been backported in this kernel version before, introducing + chk_msk_cestab() helper in the same context. wait_local_port_listen() + was still the same as in the original, and can then be simply removed + from diag.sh. ] +Signed-off-by: Matthieu Baerts (NGI0) +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/net/mptcp/diag.sh | 23 ++------------------- + tools/testing/selftests/net/mptcp/mptcp_connect.sh | 19 ----------------- + tools/testing/selftests/net/mptcp/mptcp_join.sh | 20 ------------------ + tools/testing/selftests/net/mptcp/mptcp_lib.sh | 18 ++++++++++++++++ + tools/testing/selftests/net/mptcp/simult_flows.sh | 19 ----------------- + 5 files changed, 24 insertions(+), 75 deletions(-) + +--- a/tools/testing/selftests/net/mptcp/diag.sh ++++ b/tools/testing/selftests/net/mptcp/diag.sh +@@ -186,23 +186,6 @@ chk_msk_inuse() + __chk_nr get_msk_inuse $expected "${msg}" 0 + } + +-# $1: ns, $2: port +-wait_local_port_listen() +-{ +- local listener_ns="${1}" +- local port="${2}" +- +- local port_hex i +- +- port_hex="$(printf "%04X" "${port}")" +- for i in $(seq 10); do +- ip netns exec "${listener_ns}" cat /proc/net/tcp | \ +- awk "BEGIN {rc=1} {if (\$2 ~ /:${port_hex}\$/ && \$4 ~ /0A/) {rc=0; exit}} END {exit rc}" && +- break +- sleep 0.1 +- done +-} +- + # $1: cestab nr + chk_msk_cestab() + { +@@ -240,7 +223,7 @@ echo "a" | \ + ip netns exec $ns \ + ./mptcp_connect -p 10000 -l -t ${timeout_poll} -w 20 \ + 0.0.0.0 >/dev/null & +-wait_local_port_listen $ns 10000 ++mptcp_lib_wait_local_port_listen $ns 10000 + chk_msk_nr 0 "no msk on netns creation" + chk_msk_listen 10000 + +@@ -265,7 +248,7 @@ echo "a" | \ + ip netns exec $ns \ + ./mptcp_connect -p 10001 -l -s TCP -t ${timeout_poll} -w 20 \ + 0.0.0.0 >/dev/null & +-wait_local_port_listen $ns 10001 ++mptcp_lib_wait_local_port_listen $ns 10001 + echo "b" | \ + timeout ${timeout_test} \ + ip netns exec $ns \ +@@ -288,7 +271,7 @@ for I in `seq 1 $NR_CLIENTS`; do + ./mptcp_connect -p $((I+10001)) -l -w 20 \ + -t ${timeout_poll} 0.0.0.0 >/dev/null & + done +-wait_local_port_listen $ns $((NR_CLIENTS + 10001)) ++mptcp_lib_wait_local_port_listen $ns $((NR_CLIENTS + 10001)) + + for I in `seq 1 $NR_CLIENTS`; do + echo "b" | \ +--- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh ++++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh +@@ -342,23 +342,6 @@ do_ping() + return 0 + } + +-# $1: ns, $2: port +-wait_local_port_listen() +-{ +- local listener_ns="${1}" +- local port="${2}" +- +- local port_hex i +- +- port_hex="$(printf "%04X" "${port}")" +- for i in $(seq 10); do +- ip netns exec "${listener_ns}" cat /proc/net/tcp* | \ +- awk "BEGIN {rc=1} {if (\$2 ~ /:${port_hex}\$/ && \$4 ~ /0A/) {rc=0; exit}} END {exit rc}" && +- break +- sleep 0.1 +- done +-} +- + do_transfer() + { + local listener_ns="$1" +@@ -448,7 +431,7 @@ do_transfer() + $extra_args $local_addr < "$sin" > "$sout" & + local spid=$! + +- wait_local_port_listen "${listener_ns}" "${port}" ++ mptcp_lib_wait_local_port_listen "${listener_ns}" "${port}" + + local start + start=$(date +%s%3N) +--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh ++++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh +@@ -598,24 +598,6 @@ link_failure() + done + } + +-# $1: ns, $2: port +-wait_local_port_listen() +-{ +- local listener_ns="${1}" +- local port="${2}" +- +- local port_hex +- port_hex="$(printf "%04X" "${port}")" +- +- local i +- for i in $(seq 10); do +- ip netns exec "${listener_ns}" cat /proc/net/tcp* | \ +- awk "BEGIN {rc=1} {if (\$2 ~ /:${port_hex}\$/ && \$4 ~ /0A/) {rc=0; exit}} END {exit rc}" && +- break +- sleep 0.1 +- done +-} +- + rm_addr_count() + { + mptcp_lib_get_counter "${1}" "MPTcpExtRmAddr" +@@ -1117,7 +1099,7 @@ do_transfer() + fi + local spid=$! + +- wait_local_port_listen "${listener_ns}" "${port}" ++ mptcp_lib_wait_local_port_listen "${listener_ns}" "${port}" + + extra_cl_args="$extra_args $extra_cl_args" + if [ "$test_linkfail" -eq 0 ];then +--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh ++++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh +@@ -274,3 +274,21 @@ mptcp_lib_events() { + ip netns exec "${ns}" ./pm_nl_ctl events >> "${evts}" 2>&1 & + pid=$! + } ++ ++# $1: ns, $2: port ++mptcp_lib_wait_local_port_listen() { ++ local listener_ns="${1}" ++ local port="${2}" ++ ++ local port_hex ++ port_hex="$(printf "%04X" "${port}")" ++ ++ local _ ++ for _ in $(seq 10); do ++ ip netns exec "${listener_ns}" cat /proc/net/tcp* | \ ++ awk "BEGIN {rc=1} {if (\$2 ~ /:${port_hex}\$/ && \$4 ~ /0A/) \ ++ {rc=0; exit}} END {exit rc}" && ++ break ++ sleep 0.1 ++ done ++} +--- a/tools/testing/selftests/net/mptcp/simult_flows.sh ++++ b/tools/testing/selftests/net/mptcp/simult_flows.sh +@@ -123,23 +123,6 @@ setup() + grep -q ' kmemleak_init$\| lockdep_init$\| kasan_init$\| prove_locking$' /proc/kallsyms && slack=$((slack+550)) + } + +-# $1: ns, $2: port +-wait_local_port_listen() +-{ +- local listener_ns="${1}" +- local port="${2}" +- +- local port_hex i +- +- port_hex="$(printf "%04X" "${port}")" +- for i in $(seq 10); do +- ip netns exec "${listener_ns}" cat /proc/net/tcp* | \ +- awk "BEGIN {rc=1} {if (\$2 ~ /:${port_hex}\$/ && \$4 ~ /0A/) {rc=0; exit}} END {exit rc}" && +- break +- sleep 0.1 +- done +-} +- + do_transfer() + { + local cin=$1 +@@ -179,7 +162,7 @@ do_transfer() + 0.0.0.0 < "$sin" > "$sout" & + local spid=$! + +- wait_local_port_listen "${ns3}" "${port}" ++ mptcp_lib_wait_local_port_listen "${ns3}" "${port}" + + timeout ${timeout_test} \ + ip netns exec ${ns1} \ diff --git a/queue-6.6/series b/queue-6.6/series index bc415622f4..78ff0b1053 100644 --- a/queue-6.6/series +++ b/queue-6.6/series @@ -360,3 +360,9 @@ io_uring-net-fix-accept-multishot-handling.patch cpufreq-reference-count-policy-in-cpufreq_update_limits.patch kbuild-add-fno-builtin-wcslen.patch md-fix-mddev-uaf-while-iterating-all_mddevs-list.patch +mptcp-sockopt-fix-getting-freebind-transparent.patch +selftests-mptcp-add-mptcp_lib_wait_local_port_listen.patch +misc-pci_endpoint_test-avoid-issue-of-interrupts-remaining-after-request_irq-error.patch +misc-pci_endpoint_test-fix-displaying-irq_type-after-request_irq-error.patch +misc-pci_endpoint_test-fix-irq_type-to-convey-the-correct-type.patch +fix-mmu-notifiers-for-range-based-invalidates.patch