]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.1-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 22 Apr 2025 07:55:35 +0000 (09:55 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 22 Apr 2025 07:55:35 +0000 (09:55 +0200)
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

queue-6.1/misc-pci_endpoint_test-avoid-issue-of-interrupts-remaining-after-request_irq-error.patch [new file with mode: 0644]
queue-6.1/misc-pci_endpoint_test-fix-displaying-irq_type-after-request_irq-error.patch [new file with mode: 0644]
queue-6.1/misc-pci_endpoint_test-fix-irq_type-to-convey-the-correct-type.patch [new file with mode: 0644]
queue-6.1/mptcp-sockopt-fix-getting-freebind-transparent.patch [new file with mode: 0644]
queue-6.1/series

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 (file)
index 0000000..fd56322
--- /dev/null
@@ -0,0 +1,51 @@
+From f6cb7828c8e17520d4f5afb416515d3fae1af9a9 Mon Sep 17 00:00:00 2001
+From: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
+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 <hayashi.kunihiko@socionext.com>
+
+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 <manivannan.sadhasivam@linaro.org>
+Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
+Link: https://lore.kernel.org/r/20250225110252.28866-3-hayashi.kunihiko@socionext.com
+[kwilczynski: commit log]
+Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
+Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..89b03e4
--- /dev/null
@@ -0,0 +1,54 @@
+From 919d14603dab6a9cf03ebbeb2cfa556df48737c8 Mon Sep 17 00:00:00 2001
+From: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
+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 <hayashi.kunihiko@socionext.com>
+
+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 <manivannan.sadhasivam@linaro.org>
+Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
+Link: https://lore.kernel.org/r/20250225110252.28866-4-hayashi.kunihiko@socionext.com
+[kwilczynski: commit log]
+Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
+Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..2f3ba36
--- /dev/null
@@ -0,0 +1,65 @@
+From baaef0a274cfb75f9b50eab3ef93205e604f662c Mon Sep 17 00:00:00 2001
+From: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
+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 <hayashi.kunihiko@socionext.com>
+
+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 <hayashi.kunihiko@socionext.com>
+[kwilczynski: commit log]
+Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
+Reviewed-by: Niklas Cassel <cassel@kernel.org>
+Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
+Cc: stable@vger.kernel.org
+Link: https://lore.kernel.org/r/20250225110252.28866-5-hayashi.kunihiko@socionext.com
+Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..06d2682
--- /dev/null
@@ -0,0 +1,69 @@
+From e2f4ac7bab2205d3c4dd9464e6ffd82502177c51 Mon Sep 17 00:00:00 2001
+From: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>
+Date: Fri, 14 Mar 2025 21:11:33 +0100
+Subject: mptcp: sockopt: fix getting freebind & transparent
+
+From: Matthieu Baerts (NGI0) <matttbe@kernel.org>
+
+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 <martineau@kernel.org>
+Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
+Reviewed-by: Simon Horman <horms@kernel.org>
+Link: https://patch.msgid.link/20250314-net-mptcp-fix-data-stream-corr-sockopt-v1-3-122dbb249db3@kernel.org
+Signed-off-by: Paolo Abeni <pabeni@redhat.com>
+[ 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) <matttbe@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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;
index d6a7e860c660b328f752127491bd663b5327e233..f84a2252b3e2d0826ccb6f2304a619499b2a14ad 100644 (file)
@@ -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