+++ /dev/null
-From 755959e2b1af22abbf5a264c0407266b6eac9750 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 18 Apr 2024 14:10:53 +0800
-Subject: irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc
-
-From: Guanrui Huang <guanrui.huang@linux.alibaba.com>
-
-[ Upstream commit 382d2ffe86efb1e2fa803d2cf17e5bfc34e574f3 ]
-
-This BUG_ON() is useless, because the same effect will be obtained
-by letting the code run its course and vm being dereferenced,
-triggering an exception.
-
-So just remove this check.
-
-Signed-off-by: Guanrui Huang <guanrui.huang@linux.alibaba.com>
-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-Reviewed-by: Zenghui Yu <yuzenghui@huawei.com>
-Acked-by: Marc Zyngier <maz@kernel.org>
-Link: https://lore.kernel.org/r/20240418061053.96803-3-guanrui.huang@linux.alibaba.com
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/irqchip/irq-gic-v3-its.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
-index 6b58194c1e346..2e0478e8be747 100644
---- a/drivers/irqchip/irq-gic-v3-its.c
-+++ b/drivers/irqchip/irq-gic-v3-its.c
-@@ -2958,8 +2958,6 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq
- struct page *vprop_page;
- int base, nr_ids, i, err = 0;
-
-- BUG_ON(!vm);
--
- bitmap = its_lpi_alloc(roundup_pow_of_two(nr_irqs), &base, &nr_ids);
- if (!bitmap)
- return -ENOMEM;
---
-2.43.0
-
media-dvb-as102-fe-fix-as10x_register_addr-packing.patch
media-dvb-usb-dib0700_devices-add-missing-release_fi.patch
ib-core-implement-a-limit-on-umad-receive-list.patch
-irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch
drm-amd-display-skip-finding-free-audio-for-unknown-.patch
media-dw2102-don-t-translate-i2c-read-into-write.patch
sctp-prefer-struct_size-over-open-coded-arithmetic.patch
+++ /dev/null
-From 8b350f7960ad2a2316483438dbbae0c0fefd30a8 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 18 Apr 2024 14:10:53 +0800
-Subject: irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc
-
-From: Guanrui Huang <guanrui.huang@linux.alibaba.com>
-
-[ Upstream commit 382d2ffe86efb1e2fa803d2cf17e5bfc34e574f3 ]
-
-This BUG_ON() is useless, because the same effect will be obtained
-by letting the code run its course and vm being dereferenced,
-triggering an exception.
-
-So just remove this check.
-
-Signed-off-by: Guanrui Huang <guanrui.huang@linux.alibaba.com>
-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-Reviewed-by: Zenghui Yu <yuzenghui@huawei.com>
-Acked-by: Marc Zyngier <maz@kernel.org>
-Link: https://lore.kernel.org/r/20240418061053.96803-3-guanrui.huang@linux.alibaba.com
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/irqchip/irq-gic-v3-its.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
-index 4e486cccc4cc6..a9469751720cc 100644
---- a/drivers/irqchip/irq-gic-v3-its.c
-+++ b/drivers/irqchip/irq-gic-v3-its.c
-@@ -4469,8 +4469,6 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq
- struct page *vprop_page;
- int base, nr_ids, i, err = 0;
-
-- BUG_ON(!vm);
--
- bitmap = its_lpi_alloc(roundup_pow_of_two(nr_irqs), &base, &nr_ids);
- if (!bitmap)
- return -ENOMEM;
---
-2.43.0
-
media-dvb-usb-dib0700_devices-add-missing-release_fi.patch
ib-core-implement-a-limit-on-umad-receive-list.patch
scsi-qedf-make-qedf_execute_tmf-non-preemptible.patch
-irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch
crypto-aead-cipher-zeroize-key-buffer-after-use.patch
drm-amdgpu-initialize-timestamp-for-some-legacy-socs.patch
drm-amd-display-check-index-msg_id-before-read-or-wr.patch
+++ /dev/null
-From 63fa0d12f873318e314562d760d9ed060657fb6c Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 18 Apr 2024 14:10:53 +0800
-Subject: irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc
-
-From: Guanrui Huang <guanrui.huang@linux.alibaba.com>
-
-[ Upstream commit 382d2ffe86efb1e2fa803d2cf17e5bfc34e574f3 ]
-
-This BUG_ON() is useless, because the same effect will be obtained
-by letting the code run its course and vm being dereferenced,
-triggering an exception.
-
-So just remove this check.
-
-Signed-off-by: Guanrui Huang <guanrui.huang@linux.alibaba.com>
-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-Reviewed-by: Zenghui Yu <yuzenghui@huawei.com>
-Acked-by: Marc Zyngier <maz@kernel.org>
-Link: https://lore.kernel.org/r/20240418061053.96803-3-guanrui.huang@linux.alibaba.com
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/irqchip/irq-gic-v3-its.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
-index fa89e590c1333..3fa6c71843261 100644
---- a/drivers/irqchip/irq-gic-v3-its.c
-+++ b/drivers/irqchip/irq-gic-v3-its.c
-@@ -4491,8 +4491,6 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq
- struct page *vprop_page;
- int base, nr_ids, i, err = 0;
-
-- BUG_ON(!vm);
--
- bitmap = its_lpi_alloc(roundup_pow_of_two(nr_irqs), &base, &nr_ids);
- if (!bitmap)
- return -ENOMEM;
---
-2.43.0
-
media-dvb-usb-dib0700_devices-add-missing-release_fi.patch
ib-core-implement-a-limit-on-umad-receive-list.patch
scsi-qedf-make-qedf_execute_tmf-non-preemptible.patch
-irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch
crypto-aead-cipher-zeroize-key-buffer-after-use.patch
drm-amdgpu-initialize-timestamp-for-some-legacy-socs.patch
drm-amd-display-check-index-msg_id-before-read-or-wr.patch
+++ /dev/null
-From b7e790929b930f798a0573afbc3c0b28e1c0c17d Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 18 Apr 2024 14:10:53 +0800
-Subject: irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc
-
-From: Guanrui Huang <guanrui.huang@linux.alibaba.com>
-
-[ Upstream commit 382d2ffe86efb1e2fa803d2cf17e5bfc34e574f3 ]
-
-This BUG_ON() is useless, because the same effect will be obtained
-by letting the code run its course and vm being dereferenced,
-triggering an exception.
-
-So just remove this check.
-
-Signed-off-by: Guanrui Huang <guanrui.huang@linux.alibaba.com>
-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-Reviewed-by: Zenghui Yu <yuzenghui@huawei.com>
-Acked-by: Marc Zyngier <maz@kernel.org>
-Link: https://lore.kernel.org/r/20240418061053.96803-3-guanrui.huang@linux.alibaba.com
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/irqchip/irq-gic-v3-its.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
-index d16776c6dee7b..ae3378ef469b0 100644
---- a/drivers/irqchip/irq-gic-v3-its.c
-+++ b/drivers/irqchip/irq-gic-v3-its.c
-@@ -3085,8 +3085,6 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq
- struct page *vprop_page;
- int base, nr_ids, i, err = 0;
-
-- BUG_ON(!vm);
--
- bitmap = its_lpi_alloc(roundup_pow_of_two(nr_irqs), &base, &nr_ids);
- if (!bitmap)
- return -ENOMEM;
---
-2.43.0
-
media-dvb-usb-dib0700_devices-add-missing-release_fi.patch
ib-core-implement-a-limit-on-umad-receive-list.patch
scsi-qedf-make-qedf_execute_tmf-non-preemptible.patch
-irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch
drm-amdgpu-initialize-timestamp-for-some-legacy-socs.patch
drm-amd-display-skip-finding-free-audio-for-unknown-.patch
media-dw2102-don-t-translate-i2c-read-into-write.patch
+++ /dev/null
-From 902a39c973d95824257ad898dccc1530ed8056f1 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 18 Apr 2024 14:10:53 +0800
-Subject: irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc
-
-From: Guanrui Huang <guanrui.huang@linux.alibaba.com>
-
-[ Upstream commit 382d2ffe86efb1e2fa803d2cf17e5bfc34e574f3 ]
-
-This BUG_ON() is useless, because the same effect will be obtained
-by letting the code run its course and vm being dereferenced,
-triggering an exception.
-
-So just remove this check.
-
-Signed-off-by: Guanrui Huang <guanrui.huang@linux.alibaba.com>
-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-Reviewed-by: Zenghui Yu <yuzenghui@huawei.com>
-Acked-by: Marc Zyngier <maz@kernel.org>
-Link: https://lore.kernel.org/r/20240418061053.96803-3-guanrui.huang@linux.alibaba.com
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/irqchip/irq-gic-v3-its.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
-index 3620bdb5200f2..a7a952bbfdc28 100644
---- a/drivers/irqchip/irq-gic-v3-its.c
-+++ b/drivers/irqchip/irq-gic-v3-its.c
-@@ -4476,8 +4476,6 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq
- struct page *vprop_page;
- int base, nr_ids, i, err = 0;
-
-- BUG_ON(!vm);
--
- bitmap = its_lpi_alloc(roundup_pow_of_two(nr_irqs), &base, &nr_ids);
- if (!bitmap)
- return -ENOMEM;
---
-2.43.0
-
+++ /dev/null
-From e27e45dd35e762a86b13c811599f3c98931061af Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 8 Apr 2024 09:46:22 +0200
-Subject: kunit: Handle test faults
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Mickaël Salaün <mic@digikod.net>
-
-[ Upstream commit 3a35c13007dea132a65f07de05c26b87837fadc2 ]
-
-Previously, when a kernel test thread crashed (e.g. NULL pointer
-dereference, general protection fault), the KUnit test hanged for 30
-seconds and exited with a timeout error.
-
-Fix this issue by waiting on task_struct->vfork_done instead of the
-custom kunit_try_catch.try_completion, and track the execution state by
-initially setting try_result with -EINTR and only setting it to 0 if
-the test passed.
-
-Fix kunit_generic_run_threadfn_adapter() signature by returning 0
-instead of calling kthread_complete_and_exit(). Because thread's exit
-code is never checked, always set it to 0 to make it clear. To make
-this explicit, export kthread_exit() for KUnit tests built as module.
-
-Fix the -EINTR error message, which couldn't be reached until now.
-
-This is tested with a following patch.
-
-Cc: Brendan Higgins <brendanhiggins@google.com>
-Cc: Eric W. Biederman <ebiederm@xmission.com>
-Cc: Shuah Khan <skhan@linuxfoundation.org>
-Reviewed-by: Kees Cook <keescook@chromium.org>
-Reviewed-by: David Gow <davidgow@google.com>
-Tested-by: Rae Moar <rmoar@google.com>
-Signed-off-by: Mickaël Salaün <mic@digikod.net>
-Link: https://lore.kernel.org/r/20240408074625.65017-5-mic@digikod.net
-Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- include/kunit/try-catch.h | 3 ---
- kernel/kthread.c | 1 +
- lib/kunit/try-catch.c | 19 ++++++++++++-------
- 3 files changed, 13 insertions(+), 10 deletions(-)
-
-diff --git a/include/kunit/try-catch.h b/include/kunit/try-catch.h
-index c507dd43119d5..7c966a1adbd30 100644
---- a/include/kunit/try-catch.h
-+++ b/include/kunit/try-catch.h
-@@ -14,13 +14,11 @@
-
- typedef void (*kunit_try_catch_func_t)(void *);
-
--struct completion;
- struct kunit;
-
- /**
- * struct kunit_try_catch - provides a generic way to run code which might fail.
- * @test: The test case that is currently being executed.
-- * @try_completion: Completion that the control thread waits on while test runs.
- * @try_result: Contains any errno obtained while running test case.
- * @try: The function, the test case, to attempt to run.
- * @catch: The function called if @try bails out.
-@@ -46,7 +44,6 @@ struct kunit;
- struct kunit_try_catch {
- /* private: internal use only. */
- struct kunit *test;
-- struct completion *try_completion;
- int try_result;
- kunit_try_catch_func_t try;
- kunit_try_catch_func_t catch;
-diff --git a/kernel/kthread.c b/kernel/kthread.c
-index f97fd01a29325..742e7c24b29f4 100644
---- a/kernel/kthread.c
-+++ b/kernel/kthread.c
-@@ -305,6 +305,7 @@ void __noreturn kthread_exit(long result)
- kthread->result = result;
- do_exit(0);
- }
-+EXPORT_SYMBOL(kthread_exit);
-
- /**
- * kthread_complete_and_exit - Exit the current kthread.
-diff --git a/lib/kunit/try-catch.c b/lib/kunit/try-catch.c
-index 9c9e4dcf06d96..34d30a6f23054 100644
---- a/lib/kunit/try-catch.c
-+++ b/lib/kunit/try-catch.c
-@@ -18,7 +18,7 @@
- void __noreturn kunit_try_catch_throw(struct kunit_try_catch *try_catch)
- {
- try_catch->try_result = -EFAULT;
-- kthread_complete_and_exit(try_catch->try_completion, -EFAULT);
-+ kthread_exit(0);
- }
- EXPORT_SYMBOL_GPL(kunit_try_catch_throw);
-
-@@ -26,9 +26,12 @@ static int kunit_generic_run_threadfn_adapter(void *data)
- {
- struct kunit_try_catch *try_catch = data;
-
-+ try_catch->try_result = -EINTR;
- try_catch->try(try_catch->context);
-+ if (try_catch->try_result == -EINTR)
-+ try_catch->try_result = 0;
-
-- kthread_complete_and_exit(try_catch->try_completion, 0);
-+ return 0;
- }
-
- static unsigned long kunit_test_timeout(void)
-@@ -58,13 +61,11 @@ static unsigned long kunit_test_timeout(void)
-
- void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context)
- {
-- DECLARE_COMPLETION_ONSTACK(try_completion);
- struct kunit *test = try_catch->test;
- struct task_struct *task_struct;
- int exit_code, time_remaining;
-
- try_catch->context = context;
-- try_catch->try_completion = &try_completion;
- try_catch->try_result = 0;
- task_struct = kthread_create(kunit_generic_run_threadfn_adapter,
- try_catch, "kunit_try_catch_thread");
-@@ -74,8 +75,12 @@ void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context)
- }
- get_task_struct(task_struct);
- wake_up_process(task_struct);
--
-- time_remaining = wait_for_completion_timeout(&try_completion,
-+ /*
-+ * As for a vfork(2), task_struct->vfork_done (pointing to the
-+ * underlying kthread->exited) can be used to wait for the end of a
-+ * kernel thread.
-+ */
-+ time_remaining = wait_for_completion_timeout(task_struct->vfork_done,
- kunit_test_timeout());
- if (time_remaining == 0) {
- try_catch->try_result = -ETIMEDOUT;
-@@ -91,7 +96,7 @@ void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context)
- if (exit_code == -EFAULT)
- try_catch->try_result = 0;
- else if (exit_code == -EINTR)
-- kunit_err(test, "wake_up_process() was never called\n");
-+ kunit_err(test, "try faulted\n");
- else if (exit_code == -ETIMEDOUT)
- kunit_err(test, "try timed out\n");
- else if (exit_code)
---
-2.43.0
-
media-dvb-usb-dib0700_devices-add-missing-release_fi.patch
ib-core-implement-a-limit-on-umad-receive-list.patch
scsi-qedf-make-qedf_execute_tmf-non-preemptible.patch
-irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch
crypto-aead-cipher-zeroize-key-buffer-after-use.patch
drm-amdgpu-fix-uninitialized-variable-warnings.patch
drm-amdgpu-initialize-timestamp-for-some-legacy-socs.patch
powerpc-64-set-_io_base-to-poison_pointer_delta-not-.patch
orangefs-fix-out-of-bounds-fsid-access.patch
kunit-fix-timeout-message.patch
-kunit-handle-test-faults.patch
powerpc-xmon-check-cpu-id-in-commands-c-dp-and-dx.patch
igc-fix-a-log-entry-using-uninitialized-netdev.patch
bpf-avoid-uninitialized-value-in-bpf_core_read_bitfi.patch
+++ /dev/null
-From 47a92b2b270eaf9db033591d1b38e0bf1a51c11c Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 18 Apr 2024 14:10:53 +0800
-Subject: irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc
-
-From: Guanrui Huang <guanrui.huang@linux.alibaba.com>
-
-[ Upstream commit 382d2ffe86efb1e2fa803d2cf17e5bfc34e574f3 ]
-
-This BUG_ON() is useless, because the same effect will be obtained
-by letting the code run its course and vm being dereferenced,
-triggering an exception.
-
-So just remove this check.
-
-Signed-off-by: Guanrui Huang <guanrui.huang@linux.alibaba.com>
-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-Reviewed-by: Zenghui Yu <yuzenghui@huawei.com>
-Acked-by: Marc Zyngier <maz@kernel.org>
-Link: https://lore.kernel.org/r/20240418061053.96803-3-guanrui.huang@linux.alibaba.com
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/irqchip/irq-gic-v3-its.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
-index c7d6e6987166f..350abbb36e04b 100644
---- a/drivers/irqchip/irq-gic-v3-its.c
-+++ b/drivers/irqchip/irq-gic-v3-its.c
-@@ -4501,8 +4501,6 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq
- struct page *vprop_page;
- int base, nr_ids, i, err = 0;
-
-- BUG_ON(!vm);
--
- bitmap = its_lpi_alloc(roundup_pow_of_two(nr_irqs), &base, &nr_ids);
- if (!bitmap)
- return -ENOMEM;
---
-2.43.0
-
+++ /dev/null
-From 080a463fab2314c87a1878033833405694ca3a5e Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 8 Apr 2024 09:46:22 +0200
-Subject: kunit: Handle test faults
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Mickaël Salaün <mic@digikod.net>
-
-[ Upstream commit 3a35c13007dea132a65f07de05c26b87837fadc2 ]
-
-Previously, when a kernel test thread crashed (e.g. NULL pointer
-dereference, general protection fault), the KUnit test hanged for 30
-seconds and exited with a timeout error.
-
-Fix this issue by waiting on task_struct->vfork_done instead of the
-custom kunit_try_catch.try_completion, and track the execution state by
-initially setting try_result with -EINTR and only setting it to 0 if
-the test passed.
-
-Fix kunit_generic_run_threadfn_adapter() signature by returning 0
-instead of calling kthread_complete_and_exit(). Because thread's exit
-code is never checked, always set it to 0 to make it clear. To make
-this explicit, export kthread_exit() for KUnit tests built as module.
-
-Fix the -EINTR error message, which couldn't be reached until now.
-
-This is tested with a following patch.
-
-Cc: Brendan Higgins <brendanhiggins@google.com>
-Cc: Eric W. Biederman <ebiederm@xmission.com>
-Cc: Shuah Khan <skhan@linuxfoundation.org>
-Reviewed-by: Kees Cook <keescook@chromium.org>
-Reviewed-by: David Gow <davidgow@google.com>
-Tested-by: Rae Moar <rmoar@google.com>
-Signed-off-by: Mickaël Salaün <mic@digikod.net>
-Link: https://lore.kernel.org/r/20240408074625.65017-5-mic@digikod.net
-Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- include/kunit/try-catch.h | 3 ---
- kernel/kthread.c | 1 +
- lib/kunit/try-catch.c | 19 ++++++++++++-------
- 3 files changed, 13 insertions(+), 10 deletions(-)
-
-diff --git a/include/kunit/try-catch.h b/include/kunit/try-catch.h
-index c507dd43119d5..7c966a1adbd30 100644
---- a/include/kunit/try-catch.h
-+++ b/include/kunit/try-catch.h
-@@ -14,13 +14,11 @@
-
- typedef void (*kunit_try_catch_func_t)(void *);
-
--struct completion;
- struct kunit;
-
- /**
- * struct kunit_try_catch - provides a generic way to run code which might fail.
- * @test: The test case that is currently being executed.
-- * @try_completion: Completion that the control thread waits on while test runs.
- * @try_result: Contains any errno obtained while running test case.
- * @try: The function, the test case, to attempt to run.
- * @catch: The function called if @try bails out.
-@@ -46,7 +44,6 @@ struct kunit;
- struct kunit_try_catch {
- /* private: internal use only. */
- struct kunit *test;
-- struct completion *try_completion;
- int try_result;
- kunit_try_catch_func_t try;
- kunit_try_catch_func_t catch;
-diff --git a/kernel/kthread.c b/kernel/kthread.c
-index 290cbc845225e..2afdba66b729e 100644
---- a/kernel/kthread.c
-+++ b/kernel/kthread.c
-@@ -315,6 +315,7 @@ void __noreturn kthread_exit(long result)
- kthread->result = result;
- do_exit(0);
- }
-+EXPORT_SYMBOL(kthread_exit);
-
- /**
- * kthread_complete_and_exit - Exit the current kthread.
-diff --git a/lib/kunit/try-catch.c b/lib/kunit/try-catch.c
-index 9c9e4dcf06d96..34d30a6f23054 100644
---- a/lib/kunit/try-catch.c
-+++ b/lib/kunit/try-catch.c
-@@ -18,7 +18,7 @@
- void __noreturn kunit_try_catch_throw(struct kunit_try_catch *try_catch)
- {
- try_catch->try_result = -EFAULT;
-- kthread_complete_and_exit(try_catch->try_completion, -EFAULT);
-+ kthread_exit(0);
- }
- EXPORT_SYMBOL_GPL(kunit_try_catch_throw);
-
-@@ -26,9 +26,12 @@ static int kunit_generic_run_threadfn_adapter(void *data)
- {
- struct kunit_try_catch *try_catch = data;
-
-+ try_catch->try_result = -EINTR;
- try_catch->try(try_catch->context);
-+ if (try_catch->try_result == -EINTR)
-+ try_catch->try_result = 0;
-
-- kthread_complete_and_exit(try_catch->try_completion, 0);
-+ return 0;
- }
-
- static unsigned long kunit_test_timeout(void)
-@@ -58,13 +61,11 @@ static unsigned long kunit_test_timeout(void)
-
- void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context)
- {
-- DECLARE_COMPLETION_ONSTACK(try_completion);
- struct kunit *test = try_catch->test;
- struct task_struct *task_struct;
- int exit_code, time_remaining;
-
- try_catch->context = context;
-- try_catch->try_completion = &try_completion;
- try_catch->try_result = 0;
- task_struct = kthread_create(kunit_generic_run_threadfn_adapter,
- try_catch, "kunit_try_catch_thread");
-@@ -74,8 +75,12 @@ void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context)
- }
- get_task_struct(task_struct);
- wake_up_process(task_struct);
--
-- time_remaining = wait_for_completion_timeout(&try_completion,
-+ /*
-+ * As for a vfork(2), task_struct->vfork_done (pointing to the
-+ * underlying kthread->exited) can be used to wait for the end of a
-+ * kernel thread.
-+ */
-+ time_remaining = wait_for_completion_timeout(task_struct->vfork_done,
- kunit_test_timeout());
- if (time_remaining == 0) {
- try_catch->try_result = -ETIMEDOUT;
-@@ -91,7 +96,7 @@ void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context)
- if (exit_code == -EFAULT)
- try_catch->try_result = 0;
- else if (exit_code == -EINTR)
-- kunit_err(test, "wake_up_process() was never called\n");
-+ kunit_err(test, "try faulted\n");
- else if (exit_code == -ETIMEDOUT)
- kunit_err(test, "try timed out\n");
- else if (exit_code)
---
-2.43.0
-
+++ /dev/null
-From 5236722cd74a1f92589c43b268044b1ae1be1d86 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 17 Apr 2024 21:23:18 +1000
-Subject: powerpc/dexcr: Track the DEXCR per-process
-
-From: Benjamin Gray <bgray@linux.ibm.com>
-
-[ Upstream commit 75171f06c4507c3b6b5a69d793879fb20d108bb1 ]
-
-Add capability to make the DEXCR act as a per-process SPR.
-
-We do not yet have an interface for changing the values per task. We
-also expect the kernel to use a single DEXCR value across all tasks
-while in privileged state, so there is no need to synchronize after
-changing it (the userspace aspects will synchronize upon returning to
-userspace).
-
-Signed-off-by: Benjamin Gray <bgray@linux.ibm.com>
-Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-Link: https://msgid.link/20240417112325.728010-3-bgray@linux.ibm.com
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/powerpc/include/asm/processor.h | 1 +
- arch/powerpc/kernel/process.c | 10 ++++++++++
- arch/powerpc/kernel/ptrace/ptrace-view.c | 7 +------
- 3 files changed, 12 insertions(+), 6 deletions(-)
-
-diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h
-index b2c51d337e60c..882e31296ea6b 100644
---- a/arch/powerpc/include/asm/processor.h
-+++ b/arch/powerpc/include/asm/processor.h
-@@ -260,6 +260,7 @@ struct thread_struct {
- unsigned long sier2;
- unsigned long sier3;
- unsigned long hashkeyr;
-+ unsigned long dexcr;
-
- #endif
- };
-diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
-index 9452a54d356c9..d482c3fd81d7a 100644
---- a/arch/powerpc/kernel/process.c
-+++ b/arch/powerpc/kernel/process.c
-@@ -1185,6 +1185,9 @@ static inline void save_sprs(struct thread_struct *t)
-
- if (cpu_has_feature(CPU_FTR_DEXCR_NPHIE))
- t->hashkeyr = mfspr(SPRN_HASHKEYR);
-+
-+ if (cpu_has_feature(CPU_FTR_ARCH_31))
-+ t->dexcr = mfspr(SPRN_DEXCR);
- #endif
- }
-
-@@ -1267,6 +1270,10 @@ static inline void restore_sprs(struct thread_struct *old_thread,
- if (cpu_has_feature(CPU_FTR_DEXCR_NPHIE) &&
- old_thread->hashkeyr != new_thread->hashkeyr)
- mtspr(SPRN_HASHKEYR, new_thread->hashkeyr);
-+
-+ if (cpu_has_feature(CPU_FTR_ARCH_31) &&
-+ old_thread->dexcr != new_thread->dexcr)
-+ mtspr(SPRN_DEXCR, new_thread->dexcr);
- #endif
-
- }
-@@ -1878,6 +1885,9 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args)
- #ifdef CONFIG_PPC_BOOK3S_64
- if (cpu_has_feature(CPU_FTR_DEXCR_NPHIE))
- p->thread.hashkeyr = current->thread.hashkeyr;
-+
-+ if (cpu_has_feature(CPU_FTR_ARCH_31))
-+ p->thread.dexcr = mfspr(SPRN_DEXCR);
- #endif
- return 0;
- }
-diff --git a/arch/powerpc/kernel/ptrace/ptrace-view.c b/arch/powerpc/kernel/ptrace/ptrace-view.c
-index 584cf5c3df509..c1819e0a66842 100644
---- a/arch/powerpc/kernel/ptrace/ptrace-view.c
-+++ b/arch/powerpc/kernel/ptrace/ptrace-view.c
-@@ -469,12 +469,7 @@ static int dexcr_get(struct task_struct *target, const struct user_regset *regse
- if (!cpu_has_feature(CPU_FTR_ARCH_31))
- return -ENODEV;
-
-- /*
-- * The DEXCR is currently static across all CPUs, so we don't
-- * store the target's value anywhere, but the static value
-- * will also be correct.
-- */
-- membuf_store(&to, (u64)lower_32_bits(DEXCR_INIT));
-+ membuf_store(&to, (u64)lower_32_bits(target->thread.dexcr));
-
- /*
- * Technically the HDEXCR is per-cpu, but a hypervisor can't reasonably
---
-2.43.0
-
media-dvb-usb-dib0700_devices-add-missing-release_fi.patch
ib-core-implement-a-limit-on-umad-receive-list.patch
scsi-qedf-make-qedf_execute_tmf-non-preemptible.patch
-irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch
selftests-bpf-adjust-dummy_st_ops_success-to-detect-.patch
selftests-bpf-do-not-pass-null-for-non-nullable-para.patch
selftests-bpf-dummy_st_ops-should-reject-0-for-non-n.patch
media-dvb-frontends-tda18271c2dd-remove-casting-duri.patch
media-s2255-use-refcount_t-instead-of-atomic_t-for-n.patch
media-dvb-frontends-tda10048-fix-integer-overflow.patch
-powerpc-dexcr-track-the-dexcr-per-process.patch
i2c-i801-annotate-apanel_addr-as-__ro_after_init.patch
powerpc-64-set-_io_base-to-poison_pointer_delta-not-.patch
orangefs-fix-out-of-bounds-fsid-access.patch
kunit-fix-timeout-message.patch
-kunit-handle-test-faults.patch
powerpc-xmon-check-cpu-id-in-commands-c-dp-and-dx.patch
selftests-net-fix-uninitialized-variables.patch
igc-fix-a-log-entry-using-uninitialized-netdev.patch
+++ /dev/null
-From 26ca8971ba590e3c23b9768e541b9e9205b27e99 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 18 Apr 2024 14:10:53 +0800
-Subject: irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc
-
-From: Guanrui Huang <guanrui.huang@linux.alibaba.com>
-
-[ Upstream commit 382d2ffe86efb1e2fa803d2cf17e5bfc34e574f3 ]
-
-This BUG_ON() is useless, because the same effect will be obtained
-by letting the code run its course and vm being dereferenced,
-triggering an exception.
-
-So just remove this check.
-
-Signed-off-by: Guanrui Huang <guanrui.huang@linux.alibaba.com>
-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-Reviewed-by: Zenghui Yu <yuzenghui@huawei.com>
-Acked-by: Marc Zyngier <maz@kernel.org>
-Link: https://lore.kernel.org/r/20240418061053.96803-3-guanrui.huang@linux.alibaba.com
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/irqchip/irq-gic-v3-its.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
-index 6dbac6ec778ee..33fa6b7f41c93 100644
---- a/drivers/irqchip/irq-gic-v3-its.c
-+++ b/drivers/irqchip/irq-gic-v3-its.c
-@@ -4507,8 +4507,6 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq
- struct page *vprop_page;
- int base, nr_ids, i, err = 0;
-
-- BUG_ON(!vm);
--
- bitmap = its_lpi_alloc(roundup_pow_of_two(nr_irqs), &base, &nr_ids);
- if (!bitmap)
- return -ENOMEM;
---
-2.43.0
-
+++ /dev/null
-From 2d873e7b1358877e1f41c1631a2ac1c7d70d0b5b Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 8 Apr 2024 09:46:22 +0200
-Subject: kunit: Handle test faults
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Mickaël Salaün <mic@digikod.net>
-
-[ Upstream commit 3a35c13007dea132a65f07de05c26b87837fadc2 ]
-
-Previously, when a kernel test thread crashed (e.g. NULL pointer
-dereference, general protection fault), the KUnit test hanged for 30
-seconds and exited with a timeout error.
-
-Fix this issue by waiting on task_struct->vfork_done instead of the
-custom kunit_try_catch.try_completion, and track the execution state by
-initially setting try_result with -EINTR and only setting it to 0 if
-the test passed.
-
-Fix kunit_generic_run_threadfn_adapter() signature by returning 0
-instead of calling kthread_complete_and_exit(). Because thread's exit
-code is never checked, always set it to 0 to make it clear. To make
-this explicit, export kthread_exit() for KUnit tests built as module.
-
-Fix the -EINTR error message, which couldn't be reached until now.
-
-This is tested with a following patch.
-
-Cc: Brendan Higgins <brendanhiggins@google.com>
-Cc: Eric W. Biederman <ebiederm@xmission.com>
-Cc: Shuah Khan <skhan@linuxfoundation.org>
-Reviewed-by: Kees Cook <keescook@chromium.org>
-Reviewed-by: David Gow <davidgow@google.com>
-Tested-by: Rae Moar <rmoar@google.com>
-Signed-off-by: Mickaël Salaün <mic@digikod.net>
-Link: https://lore.kernel.org/r/20240408074625.65017-5-mic@digikod.net
-Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- include/kunit/try-catch.h | 3 ---
- kernel/kthread.c | 1 +
- lib/kunit/try-catch.c | 19 ++++++++++++-------
- 3 files changed, 13 insertions(+), 10 deletions(-)
-
-diff --git a/include/kunit/try-catch.h b/include/kunit/try-catch.h
-index c507dd43119d5..7c966a1adbd30 100644
---- a/include/kunit/try-catch.h
-+++ b/include/kunit/try-catch.h
-@@ -14,13 +14,11 @@
-
- typedef void (*kunit_try_catch_func_t)(void *);
-
--struct completion;
- struct kunit;
-
- /**
- * struct kunit_try_catch - provides a generic way to run code which might fail.
- * @test: The test case that is currently being executed.
-- * @try_completion: Completion that the control thread waits on while test runs.
- * @try_result: Contains any errno obtained while running test case.
- * @try: The function, the test case, to attempt to run.
- * @catch: The function called if @try bails out.
-@@ -46,7 +44,6 @@ struct kunit;
- struct kunit_try_catch {
- /* private: internal use only. */
- struct kunit *test;
-- struct completion *try_completion;
- int try_result;
- kunit_try_catch_func_t try;
- kunit_try_catch_func_t catch;
-diff --git a/kernel/kthread.c b/kernel/kthread.c
-index c5e40830c1f2d..f7be976ff88af 100644
---- a/kernel/kthread.c
-+++ b/kernel/kthread.c
-@@ -315,6 +315,7 @@ void __noreturn kthread_exit(long result)
- kthread->result = result;
- do_exit(0);
- }
-+EXPORT_SYMBOL(kthread_exit);
-
- /**
- * kthread_complete_and_exit - Exit the current kthread.
-diff --git a/lib/kunit/try-catch.c b/lib/kunit/try-catch.c
-index 9c9e4dcf06d96..34d30a6f23054 100644
---- a/lib/kunit/try-catch.c
-+++ b/lib/kunit/try-catch.c
-@@ -18,7 +18,7 @@
- void __noreturn kunit_try_catch_throw(struct kunit_try_catch *try_catch)
- {
- try_catch->try_result = -EFAULT;
-- kthread_complete_and_exit(try_catch->try_completion, -EFAULT);
-+ kthread_exit(0);
- }
- EXPORT_SYMBOL_GPL(kunit_try_catch_throw);
-
-@@ -26,9 +26,12 @@ static int kunit_generic_run_threadfn_adapter(void *data)
- {
- struct kunit_try_catch *try_catch = data;
-
-+ try_catch->try_result = -EINTR;
- try_catch->try(try_catch->context);
-+ if (try_catch->try_result == -EINTR)
-+ try_catch->try_result = 0;
-
-- kthread_complete_and_exit(try_catch->try_completion, 0);
-+ return 0;
- }
-
- static unsigned long kunit_test_timeout(void)
-@@ -58,13 +61,11 @@ static unsigned long kunit_test_timeout(void)
-
- void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context)
- {
-- DECLARE_COMPLETION_ONSTACK(try_completion);
- struct kunit *test = try_catch->test;
- struct task_struct *task_struct;
- int exit_code, time_remaining;
-
- try_catch->context = context;
-- try_catch->try_completion = &try_completion;
- try_catch->try_result = 0;
- task_struct = kthread_create(kunit_generic_run_threadfn_adapter,
- try_catch, "kunit_try_catch_thread");
-@@ -74,8 +75,12 @@ void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context)
- }
- get_task_struct(task_struct);
- wake_up_process(task_struct);
--
-- time_remaining = wait_for_completion_timeout(&try_completion,
-+ /*
-+ * As for a vfork(2), task_struct->vfork_done (pointing to the
-+ * underlying kthread->exited) can be used to wait for the end of a
-+ * kernel thread.
-+ */
-+ time_remaining = wait_for_completion_timeout(task_struct->vfork_done,
- kunit_test_timeout());
- if (time_remaining == 0) {
- try_catch->try_result = -ETIMEDOUT;
-@@ -91,7 +96,7 @@ void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context)
- if (exit_code == -EFAULT)
- try_catch->try_result = 0;
- else if (exit_code == -EINTR)
-- kunit_err(test, "wake_up_process() was never called\n");
-+ kunit_err(test, "try faulted\n");
- else if (exit_code == -ETIMEDOUT)
- kunit_err(test, "try timed out\n");
- else if (exit_code)
---
-2.43.0
-
+++ /dev/null
-From 0e94b82304e7a726b27dd46394fe22b6c1ebcd60 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 17 Apr 2024 21:23:18 +1000
-Subject: powerpc/dexcr: Track the DEXCR per-process
-
-From: Benjamin Gray <bgray@linux.ibm.com>
-
-[ Upstream commit 75171f06c4507c3b6b5a69d793879fb20d108bb1 ]
-
-Add capability to make the DEXCR act as a per-process SPR.
-
-We do not yet have an interface for changing the values per task. We
-also expect the kernel to use a single DEXCR value across all tasks
-while in privileged state, so there is no need to synchronize after
-changing it (the userspace aspects will synchronize upon returning to
-userspace).
-
-Signed-off-by: Benjamin Gray <bgray@linux.ibm.com>
-Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-Link: https://msgid.link/20240417112325.728010-3-bgray@linux.ibm.com
-Stable-dep-of: bbd99922d0f4 ("powerpc/dexcr: Reset DEXCR value across exec")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/powerpc/include/asm/processor.h | 1 +
- arch/powerpc/kernel/process.c | 10 ++++++++++
- arch/powerpc/kernel/ptrace/ptrace-view.c | 7 +------
- 3 files changed, 12 insertions(+), 6 deletions(-)
-
-diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h
-index b2c51d337e60c..882e31296ea6b 100644
---- a/arch/powerpc/include/asm/processor.h
-+++ b/arch/powerpc/include/asm/processor.h
-@@ -260,6 +260,7 @@ struct thread_struct {
- unsigned long sier2;
- unsigned long sier3;
- unsigned long hashkeyr;
-+ unsigned long dexcr;
-
- #endif
- };
-diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
-index 9452a54d356c9..d482c3fd81d7a 100644
---- a/arch/powerpc/kernel/process.c
-+++ b/arch/powerpc/kernel/process.c
-@@ -1185,6 +1185,9 @@ static inline void save_sprs(struct thread_struct *t)
-
- if (cpu_has_feature(CPU_FTR_DEXCR_NPHIE))
- t->hashkeyr = mfspr(SPRN_HASHKEYR);
-+
-+ if (cpu_has_feature(CPU_FTR_ARCH_31))
-+ t->dexcr = mfspr(SPRN_DEXCR);
- #endif
- }
-
-@@ -1267,6 +1270,10 @@ static inline void restore_sprs(struct thread_struct *old_thread,
- if (cpu_has_feature(CPU_FTR_DEXCR_NPHIE) &&
- old_thread->hashkeyr != new_thread->hashkeyr)
- mtspr(SPRN_HASHKEYR, new_thread->hashkeyr);
-+
-+ if (cpu_has_feature(CPU_FTR_ARCH_31) &&
-+ old_thread->dexcr != new_thread->dexcr)
-+ mtspr(SPRN_DEXCR, new_thread->dexcr);
- #endif
-
- }
-@@ -1878,6 +1885,9 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args)
- #ifdef CONFIG_PPC_BOOK3S_64
- if (cpu_has_feature(CPU_FTR_DEXCR_NPHIE))
- p->thread.hashkeyr = current->thread.hashkeyr;
-+
-+ if (cpu_has_feature(CPU_FTR_ARCH_31))
-+ p->thread.dexcr = mfspr(SPRN_DEXCR);
- #endif
- return 0;
- }
-diff --git a/arch/powerpc/kernel/ptrace/ptrace-view.c b/arch/powerpc/kernel/ptrace/ptrace-view.c
-index 584cf5c3df509..c1819e0a66842 100644
---- a/arch/powerpc/kernel/ptrace/ptrace-view.c
-+++ b/arch/powerpc/kernel/ptrace/ptrace-view.c
-@@ -469,12 +469,7 @@ static int dexcr_get(struct task_struct *target, const struct user_regset *regse
- if (!cpu_has_feature(CPU_FTR_ARCH_31))
- return -ENODEV;
-
-- /*
-- * The DEXCR is currently static across all CPUs, so we don't
-- * store the target's value anywhere, but the static value
-- * will also be correct.
-- */
-- membuf_store(&to, (u64)lower_32_bits(DEXCR_INIT));
-+ membuf_store(&to, (u64)lower_32_bits(target->thread.dexcr));
-
- /*
- * Technically the HDEXCR is per-cpu, but a hypervisor can't reasonably
---
-2.43.0
-
drm-xe-add-outer-runtime_pm-protection-to-xe_live_kt.patch
ib-core-implement-a-limit-on-umad-receive-list.patch
scsi-qedf-make-qedf_execute_tmf-non-preemptible.patch
-irqchip-gic-v3-its-remove-bug_on-in-its_vpe_irq_doma.patch
bpf-mark-bpf_dummy_struct_ops.test_1-parameter-as-nu.patch
selftests-bpf-adjust-dummy_st_ops_success-to-detect-.patch
selftests-bpf-do-not-pass-null-for-non-nullable-para.patch
media-tc358746-use-the-correct-div_-function.patch
media-dvb-frontends-tda10048-fix-integer-overflow.patch
crypto-hisilicon-sec2-fix-for-register-offset.patch
-powerpc-dexcr-track-the-dexcr-per-process.patch
gve-account-for-stopped-queues-when-reading-nic-stat.patch
i2c-i801-annotate-apanel_addr-as-__ro_after_init.patch
powerpc-64-set-_io_base-to-poison_pointer_delta-not-.patch
orangefs-fix-out-of-bounds-fsid-access.patch
kunit-fix-timeout-message.patch
-kunit-handle-test-faults.patch
powerpc-xmon-check-cpu-id-in-commands-c-dp-and-dx.patch
selftests-net-fix-uninitialized-variables.patch
igc-fix-a-log-entry-using-uninitialized-netdev.patch