mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] rcutorture: Fix suspicious rcu_dereference_check() usage for trivial-preempt
@ 2026-10-20  9:49 Zqiang
  2026-10-20 15:06 ` Bradley Morgan
  0 siblings, 1 reply; 5+ messages in thread
From: Zqiang @ 2026-10-20  9:49 UTC (permalink / raw)
  To: paulmck, frederic, neeraj.upadhyay, joelagnelf, urezki, boqun
  Cc: qiang.zhang, rcu, linux-kernel

Running the trivial-preempt flavor triggers a lockdep "suspicious RCU
usage" warning from rcu_torture_one_read_start():

WARNING: suspicious RCU usage
kernel/rcu/rcutorture.c:2581 suspicious rcu_dereference_check() usage!
...
lockdep_rcu_suspicious
rcu_torture_one_read_start
rcu_torture_one_read
rcu_torture_reader

The trivial-preempt flavor .readlock_held is set to torture_readlock_not_held(),
which check RCU-bh/RCU-sched critical sections. however, it's read lock
just increments current->rcu_trivial_preempt_nesting, it's not also RCU
read critical sections. the rcu_dereference_check() condition is therefore
false, and lockdep report warnings. this commit therefore drop .readlock_held
callback to avoid this lockdep warnings.

Fixes: c6f4e552e1ea ("rcutorture: Add a textbook-style trivial preemptible RCU")
Signed-off-by: Zqiang <qiang.zhang@linux.dev>
---
 kernel/rcu/rcutorture.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index 92ff197f4789..1bbf8192786a 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -1164,7 +1164,6 @@ static struct rcu_torture_ops trivial_preempt_ops = {
 	.readlock	= rcu_torture_read_lock_trivial_preempt,
 	.read_delay	= rcu_read_delay,  // just reuse rcu's version.
 	.readunlock	= rcu_torture_read_unlock_trivial_preempt,
-	.readlock_held	= torture_readlock_not_held,
 	.get_gp_seq	= rcu_no_completed,
 	.sync		= synchronize_rcu_trivial_preempt,
 	.exp_sync	= synchronize_rcu_trivial_preempt,
-- 
2.17.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] rcutorture: Fix suspicious rcu_dereference_check() usage for trivial-preempt
  2026-10-20  9:49 [PATCH] rcutorture: Fix suspicious rcu_dereference_check() usage for trivial-preempt Zqiang
@ 2026-10-20 15:06 ` Bradley Morgan
  2026-10-20 22:01   ` Paul E. McKenney
  0 siblings, 1 reply; 5+ messages in thread
From: Bradley Morgan @ 2026-10-20 15:06 UTC (permalink / raw)
  To: qiang.zhang
  Cc: boqun, frederic, joelagnelf, linux-kernel, neeraj.upadhyay,
	paulmck, rcu, urezki

On 20 October 2026 10:49:07 BST, Zqiang <qiang.zhang@linux.dev> wrote:
>Running the trivial-preempt flavor triggers a lockdep "suspicious RCU
>usage" warning from rcu_torture_one_read_start():
>
>WARNING: suspicious RCU usage
>kernel/rcu/rcutorture.c:2581 suspicious rcu_dereference_check() usage!
>...
>lockdep_rcu_suspicious
>rcu_torture_one_read_start
>rcu_torture_one_read
>rcu_torture_reader
>
>The trivial-preempt flavor .readlock_held is set to
>torture_readlock_not_held(),
>which check RCU-bh/RCU-sched critical sections. however, it's read lock
>just increments current->rcu_trivial_preempt_nesting, it's not also RCU
>read critical sections. the rcu_dereference_check() condition is therefore
>false, and lockdep report warnings. this commit therefore drop
>.readlock_held
>callback to avoid this lockdep warnings.
>
>Fixes: c6f4e552e1ea ("rcutorture: Add a textbook-style trivial preemptible RCU")

Looks ok to me.

Reviewed-by: Bradley Morgan <brads@mainlining.org>


>Signed-off-by: Zqiang <qiang.zhang@linux.dev>
>---
> kernel/rcu/rcutorture.c | 1 -
> 1 file changed, 1 deletion(-)
>
>diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
>index 92ff197f4789..1bbf8192786a 100644
>--- a/kernel/rcu/rcutorture.c
>+++ b/kernel/rcu/rcutorture.c
>@@ -1164,7 +1164,6 @@ static struct rcu_torture_ops trivial_preempt_ops = {
> 	.readlock	= rcu_torture_read_lock_trivial_preempt,
> 	.read_delay	= rcu_read_delay,  // just reuse rcu's version.
> 	.readunlock	= rcu_torture_read_unlock_trivial_preempt,
>-	.readlock_held	= torture_readlock_not_held,
> 	.get_gp_seq	= rcu_no_completed,
> 	.sync		= synchronize_rcu_trivial_preempt,
> 	.exp_sync	= synchronize_rcu_trivial_preempt,
>

--- Thanks!
"I'm not a very positive person" - Linus torvalds

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] rcutorture: Fix suspicious rcu_dereference_check() usage for trivial-preempt
  2026-10-20 15:06 ` Bradley Morgan
@ 2026-10-20 22:01   ` Paul E. McKenney
  2026-10-20 22:03     ` Paul E. McKenney
  0 siblings, 1 reply; 5+ messages in thread
From: Paul E. McKenney @ 2026-10-20 22:01 UTC (permalink / raw)
  To: Bradley Morgan
  Cc: qiang.zhang, boqun, frederic, joelagnelf, linux-kernel,
	neeraj.upadhyay, rcu, urezki

On Tue, Oct 20, 2026 at 04:06:49PM +0100, Bradley Morgan wrote:
> On 20 October 2026 10:49:07 BST, Zqiang <qiang.zhang@linux.dev> wrote:
> >Running the trivial-preempt flavor triggers a lockdep "suspicious RCU
> >usage" warning from rcu_torture_one_read_start():
> >
> >WARNING: suspicious RCU usage
> >kernel/rcu/rcutorture.c:2581 suspicious rcu_dereference_check() usage!
> >...
> >lockdep_rcu_suspicious
> >rcu_torture_one_read_start
> >rcu_torture_one_read
> >rcu_torture_reader
> >
> >The trivial-preempt flavor .readlock_held is set to
> >torture_readlock_not_held(),
> >which check RCU-bh/RCU-sched critical sections. however, it's read lock
> >just increments current->rcu_trivial_preempt_nesting, it's not also RCU
> >read critical sections. the rcu_dereference_check() condition is therefore
> >false, and lockdep report warnings. this commit therefore drop
> >.readlock_held
> >callback to avoid this lockdep warnings.
> >
> >Fixes: c6f4e552e1ea ("rcutorture: Add a textbook-style trivial preemptible RCU")
> 
> Looks ok to me.
> 
> Reviewed-by: Bradley Morgan <brads@mainlining.org>
> 
> >Signed-off-by: Zqiang <qiang.zhang@linux.dev>

And it works here, thank you both.  I have queued this, and thank you
Zqiang for thinking to test trivial-preempt with lockdep enabled!

							Thanx, Paul

> >---
> > kernel/rcu/rcutorture.c | 1 -
> > 1 file changed, 1 deletion(-)
> >
> >diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
> >index 92ff197f4789..1bbf8192786a 100644
> >--- a/kernel/rcu/rcutorture.c
> >+++ b/kernel/rcu/rcutorture.c
> >@@ -1164,7 +1164,6 @@ static struct rcu_torture_ops trivial_preempt_ops = {
> > 	.readlock	= rcu_torture_read_lock_trivial_preempt,
> > 	.read_delay	= rcu_read_delay,  // just reuse rcu's version.
> > 	.readunlock	= rcu_torture_read_unlock_trivial_preempt,
> >-	.readlock_held	= torture_readlock_not_held,
> > 	.get_gp_seq	= rcu_no_completed,
> > 	.sync		= synchronize_rcu_trivial_preempt,
> > 	.exp_sync	= synchronize_rcu_trivial_preempt,
> >
> 
> --- Thanks!
> "I'm not a very positive person" - Linus torvalds

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] rcutorture: Fix suspicious rcu_dereference_check() usage for trivial-preempt
  2026-10-20 22:01   ` Paul E. McKenney
@ 2026-10-20 22:03     ` Paul E. McKenney
  2026-10-20 22:20       ` Joel Fernandes
  0 siblings, 1 reply; 5+ messages in thread
From: Paul E. McKenney @ 2026-10-20 22:03 UTC (permalink / raw)
  To: Bradley Morgan
  Cc: qiang.zhang, boqun, frederic, joelagnelf, linux-kernel,
	neeraj.upadhyay, rcu, urezki

On Tue, Oct 20, 2026 at 03:01:27PM -0700, Paul E. McKenney wrote:
> On Tue, Oct 20, 2026 at 04:06:49PM +0100, Bradley Morgan wrote:
> > On 20 October 2026 10:49:07 BST, Zqiang <qiang.zhang@linux.dev> wrote:
> > >Running the trivial-preempt flavor triggers a lockdep "suspicious RCU
> > >usage" warning from rcu_torture_one_read_start():
> > >
> > >WARNING: suspicious RCU usage
> > >kernel/rcu/rcutorture.c:2581 suspicious rcu_dereference_check() usage!
> > >...
> > >lockdep_rcu_suspicious
> > >rcu_torture_one_read_start
> > >rcu_torture_one_read
> > >rcu_torture_reader
> > >
> > >The trivial-preempt flavor .readlock_held is set to
> > >torture_readlock_not_held(),
> > >which check RCU-bh/RCU-sched critical sections. however, it's read lock
> > >just increments current->rcu_trivial_preempt_nesting, it's not also RCU
> > >read critical sections. the rcu_dereference_check() condition is therefore
> > >false, and lockdep report warnings. this commit therefore drop
> > >.readlock_held
> > >callback to avoid this lockdep warnings.
> > >
> > >Fixes: c6f4e552e1ea ("rcutorture: Add a textbook-style trivial preemptible RCU")
> > 
> > Looks ok to me.
> > 
> > Reviewed-by: Bradley Morgan <brads@mainlining.org>
> > 
> > >Signed-off-by: Zqiang <qiang.zhang@linux.dev>
> 
> And it works here, thank you both.  I have queued this, and thank you
> Zqiang for thinking to test trivial-preempt with lockdep enabled!

Wait, Joel is doing the next merge window, not me!

Joel, please make that be:

Reviewed-by: Paul E. McKenney <paulmck@kernel.org>
Tested-by: Paul E. McKenney <paulmck@kernel.org>

I will drop it from my tree, apologies for my confusion!

							Thanx, Paul

> > >---
> > > kernel/rcu/rcutorture.c | 1 -
> > > 1 file changed, 1 deletion(-)
> > >
> > >diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
> > >index 92ff197f4789..1bbf8192786a 100644
> > >--- a/kernel/rcu/rcutorture.c
> > >+++ b/kernel/rcu/rcutorture.c
> > >@@ -1164,7 +1164,6 @@ static struct rcu_torture_ops trivial_preempt_ops = {
> > > 	.readlock	= rcu_torture_read_lock_trivial_preempt,
> > > 	.read_delay	= rcu_read_delay,  // just reuse rcu's version.
> > > 	.readunlock	= rcu_torture_read_unlock_trivial_preempt,
> > >-	.readlock_held	= torture_readlock_not_held,
> > > 	.get_gp_seq	= rcu_no_completed,
> > > 	.sync		= synchronize_rcu_trivial_preempt,
> > > 	.exp_sync	= synchronize_rcu_trivial_preempt,
> > >
> > 
> > --- Thanks!
> > "I'm not a very positive person" - Linus torvalds

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] rcutorture: Fix suspicious rcu_dereference_check() usage for trivial-preempt
  2026-10-20 22:03     ` Paul E. McKenney
@ 2026-10-20 22:20       ` Joel Fernandes
  0 siblings, 0 replies; 5+ messages in thread
From: Joel Fernandes @ 2026-10-20 22:20 UTC (permalink / raw)
  To: Paul E. McKenney
  Cc: Bradley Morgan, qiang.zhang, boqun, frederic, linux-kernel,
	neeraj.upadhyay, rcu, urezki

On Tue, Oct 20, 2026 at 03:03:27PM -0700, Paul E. McKenney wrote:
> On Tue, Oct 20, 2026 at 03:01:27PM -0700, Paul E. McKenney wrote:
> > On Tue, Oct 20, 2026 at 04:06:49PM +0100, Bradley Morgan wrote:
> > > On 20 October 2026 10:49:07 BST, Zqiang <qiang.zhang@linux.dev> wrote:
> > > >Running the trivial-preempt flavor triggers a lockdep "suspicious RCU
> > > >usage" warning from rcu_torture_one_read_start():
> > > >
> > > >WARNING: suspicious RCU usage
> > > >kernel/rcu/rcutorture.c:2581 suspicious rcu_dereference_check() usage!
> > > >...
> > > >lockdep_rcu_suspicious
> > > >rcu_torture_one_read_start
> > > >rcu_torture_one_read
> > > >rcu_torture_reader
> > > >
> > > >The trivial-preempt flavor .readlock_held is set to
> > > >torture_readlock_not_held(),
> > > >which check RCU-bh/RCU-sched critical sections. however, it's read lock
> > > >just increments current->rcu_trivial_preempt_nesting, it's not also RCU
> > > >read critical sections. the rcu_dereference_check() condition is therefore
> > > >false, and lockdep report warnings. this commit therefore drop
> > > >.readlock_held
> > > >callback to avoid this lockdep warnings.
> > > >
> > > >Fixes: c6f4e552e1ea ("rcutorture: Add a textbook-style trivial preemptible RCU")
> > > 
> > > Looks ok to me.
> > > 
> > > Reviewed-by: Bradley Morgan <brads@mainlining.org>
> > > 
> > > >Signed-off-by: Zqiang <qiang.zhang@linux.dev>
> > 
> > And it works here, thank you both.  I have queued this, and thank you
> > Zqiang for thinking to test trivial-preempt with lockdep enabled!
> 
> Wait, Joel is doing the next merge window, not me!
> 
> Joel, please make that be:
> 
> Reviewed-by: Paul E. McKenney <paulmck@kernel.org>
> Tested-by: Paul E. McKenney <paulmck@kernel.org>
> 
> I will drop it from my tree, apologies for my confusion!

Applied for 7.5 for further testing, thanks!

thanks,

Joel Fernandes


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-10-20 22:20 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-20  9:49 [PATCH] rcutorture: Fix suspicious rcu_dereference_check() usage for trivial-preempt Zqiang
2026-10-20 15:06 ` Bradley Morgan
2026-10-20 22:01   ` Paul E. McKenney
2026-10-20 22:03     ` Paul E. McKenney
2026-10-20 22:20       ` Joel Fernandes

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®