]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
checkpatch: Undeprecate rcu_read_lock_trace() and rcu_read_unlock_trace()
authorPaul E. McKenney <paulmck@kernel.org>
Fri, 8 May 2026 17:43:50 +0000 (10:43 -0700)
committerUladzislau Rezki (Sony) <urezki@gmail.com>
Sun, 24 May 2026 07:39:47 +0000 (09:39 +0200)
It turns out that there are BPF use cases that rely on nesting RCU
Tasks Trace readers.  These use cases are well-served by the old
rcu_read_lock_trace() and rcu_read_unlock_trace() functions that maintain
a nesting counter in the task_struct structure.  But these use cases incur
a performance penalty when using the shiny new rcu_read_lock_tasks_trace()
and rcu_read_unlock_tasks_trace() functions, which nest in the same way
that SRCU does.

This means that rcu_read_lock_trace() and rcu_read_unlock_trace()
will be with us for some time.  Therefore, remove the checkpatch.pl
deprecation.

Also, the rcu_read_lock_tasks_trace() and rcu_read_unlock_tasks_trace()
functions are intended for use only by BPF.  Therefore, add them to
the list of functions that checkpatch complains about outside of BPF
(and of course, RCU).

Reported-by: Puranjay Mohan <puranjay@kernel.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Cc: Andy Whitcroft <apw@canonical.com>
Cc: Joe Perches <joe@perches.com>
Cc: Dwaipayan Ray <dwaipayanray1@gmail.com>
Cc: Lukas Bulwahn <lukas.bulwahn@gmail.com>
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
scripts/checkpatch.pl

index 0492d6afc9a1fc6ca3dfa4e7e8e5764584c4f16f..cc5bbd70cb843e2013c9dc012ac25093e10add09 100755 (executable)
@@ -865,8 +865,6 @@ our %deprecated_apis = (
        "DEFINE_IDR"                            => "DEFINE_XARRAY",
        "idr_init"                              => "xa_init",
        "idr_init_base"                         => "xa_init_flags",
-       "rcu_read_lock_trace"                   => "rcu_read_lock_tasks_trace",
-       "rcu_read_unlock_trace"                 => "rcu_read_unlock_tasks_trace",
 );
 
 #Create a search pattern for all these strings to speed up a loop below
@@ -7596,12 +7594,15 @@ sub process {
 
 # Complain about RCU Tasks Trace used outside of BPF (and of course, RCU).
                our $rcu_trace_funcs = qr{(?x:
+                       rcu_read_lock_tasks_trace |
                        rcu_read_lock_trace |
                        rcu_read_lock_trace_held |
                        rcu_read_unlock_trace |
+                       rcu_read_unlock_tasks_trace |
                        call_rcu_tasks_trace |
                        synchronize_rcu_tasks_trace |
                        rcu_barrier_tasks_trace |
+                       rcu_tasks_trace_expedite_current |
                        rcu_request_urgent_qs_task
                )};
                our $rcu_trace_paths = qr{(?x: