Patch "rcuscale: Provide clear error when async specified without primitives" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    rcuscale: Provide clear error when async specified without primitives

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     rcuscale-provide-clear-error-when-async-specified-wi.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 849a058043439420ed04025cc10d93ef0e282417
Author: Paul E. McKenney <paulmck@xxxxxxxxxx>
Date:   Thu Aug 1 17:43:03 2024 -0700

    rcuscale: Provide clear error when async specified without primitives
    
    [ Upstream commit 11377947b5861fa59bf77c827e1dd7c081842cc9 ]
    
    Currently, if the rcuscale module's async module parameter is specified
    for RCU implementations that do not have async primitives such as RCU
    Tasks Rude (which now lacks a call_rcu_tasks_rude() function), there
    will be a series of splats due to calls to a NULL pointer.  This commit
    therefore warns of this situation, but switches to non-async testing.
    
    Signed-off-by: "Paul E. McKenney" <paulmck@xxxxxxxxxx>
    Signed-off-by: Neeraj Upadhyay <neeraj.upadhyay@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/kernel/rcu/rcuscale.c b/kernel/rcu/rcuscale.c
index a83cb29d37607..f90955dc15327 100644
--- a/kernel/rcu/rcuscale.c
+++ b/kernel/rcu/rcuscale.c
@@ -428,7 +428,7 @@ rcu_scale_writer(void *arg)
 			udelay(writer_holdoff);
 		wdp = &wdpp[i];
 		*wdp = ktime_get_mono_fast_ns();
-		if (gp_async) {
+		if (gp_async && !WARN_ON_ONCE(!cur_ops->async)) {
 retry:
 			if (!rhp)
 				rhp = kmalloc(sizeof(*rhp), GFP_KERNEL);
@@ -484,7 +484,7 @@ rcu_scale_writer(void *arg)
 			i++;
 		rcu_scale_wait_shutdown();
 	} while (!torture_must_stop());
-	if (gp_async) {
+	if (gp_async && cur_ops->async) {
 		cur_ops->gp_barrier();
 	}
 	writer_n_durations[me] = i_max + 1;




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux