From 9705c34777258fff5550f33864623e4a890f51e1 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 22 Apr 2025 09:55:35 +0200 Subject: [PATCH] 6.1-stable patches added patches: 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 --- ...ts-remaining-after-request_irq-error.patch | 51 ++++++++++++++ ...ing-irq_type-after-request_irq-error.patch | 54 +++++++++++++++ ...-irq_type-to-convey-the-correct-type.patch | 65 +++++++++++++++++ ...opt-fix-getting-freebind-transparent.patch | 69 +++++++++++++++++++ queue-6.1/series | 4 ++ 5 files changed, 243 insertions(+) create mode 100644 queue-6.1/misc-pci_endpoint_test-avoid-issue-of-interrupts-remaining-after-request_irq-error.patch create mode 100644 queue-6.1/misc-pci_endpoint_test-fix-displaying-irq_type-after-request_irq-error.patch create mode 100644 queue-6.1/misc-pci_endpoint_test-fix-irq_type-to-convey-the-correct-type.patch create mode 100644 queue-6.1/mptcp-sockopt-fix-getting-freebind-transparent.patch diff --git a/queue-6.1/misc-pci_endpoint_test-avoid-issue-of-interrupts-remaining-after-request_irq-error.patch b/queue-6.1/misc-pci_endpoint_test-avoid-issue-of-interrupts-remaining-after-request_irq-error.patch new file mode 100644 index 0000000000..fd5632226a --- /dev/null +++ b/queue-6.1/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 +@@ -262,6 +262,9 @@ fail: + break; + } + ++ test->num_irqs = i; ++ pci_endpoint_test_release_irq(test); ++ + return false; + } + diff --git a/queue-6.1/misc-pci_endpoint_test-fix-displaying-irq_type-after-request_irq-error.patch b/queue-6.1/misc-pci_endpoint_test-fix-displaying-irq_type-after-request_irq-error.patch new file mode 100644 index 0000000000..89b03e468c --- /dev/null +++ b/queue-6.1/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 +@@ -245,7 +245,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.1/misc-pci_endpoint_test-fix-irq_type-to-convey-the-correct-type.patch b/queue-6.1/misc-pci_endpoint_test-fix-irq_type-to-convey-the-correct-type.patch new file mode 100644 index 0000000000..2f3ba36fc7 --- /dev/null +++ b/queue-6.1/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 +@@ -717,6 +717,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.1/mptcp-sockopt-fix-getting-freebind-transparent.patch b/queue-6.1/mptcp-sockopt-fix-getting-freebind-transparent.patch new file mode 100644 index 0000000000..06d2682846 --- /dev/null +++ b/queue-6.1/mptcp-sockopt-fix-getting-freebind-transparent.patch @@ -0,0 +1,69 @@ +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. + Also, get the values without 'inet_test_bit()' like it was done in + this version. ] +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 +@@ -1266,6 +1266,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_sk(sk)->freebind); ++ case IP_TRANSPARENT: ++ return mptcp_put_int_option(msk, optval, optlen, ++ inet_sk(sk)->transparent); + } + + return -EOPNOTSUPP; +@@ -1280,6 +1286,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_sk(sk)->transparent); ++ case IPV6_FREEBIND: ++ return mptcp_put_int_option(msk, optval, optlen, ++ inet_sk(sk)->freebind); + } + + return -EOPNOTSUPP; diff --git a/queue-6.1/series b/queue-6.1/series index d6a7e860c6..f84a2252b3 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -259,3 +259,7 @@ kvm-arm64-eagerly-switch-zcr_el-1-2.patch cpufreq-reference-count-policy-in-cpufreq_update_limits.patch kbuild-add-fno-builtin-wcslen.patch media-mediatek-vcodec-mark-vdec_vp9_slice_map_counts_eob_coef-noinline.patch +mptcp-sockopt-fix-getting-freebind-transparent.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 -- 2.47.3