[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <Z5ikQeVmVdsWQrdD@pc636>
Date: Tue, 28 Jan 2025 10:32:49 +0100
From: Uladzislau Rezki <urezki@...il.com>
To: cheung wall <zzqq0103.hey@...il.com>,
"Paul E. McKenney" <paulmck@...nel.org>
Cc: cheung wall <zzqq0103.hey@...il.com>,
"Paul E. McKenney" <paulmck@...nel.org>,
Frederic Weisbecker <frederic@...nel.org>,
Neeraj Upadhyay <neeraj.upadhyay@...nel.org>,
Joel Fernandes <joel@...lfernandes.org>,
Josh Triplett <josh@...htriplett.org>,
Boqun Feng <boqun.feng@...il.com>, linux-kernel@...r.kernel.org,
Steven Rostedt <rostedt@...dmis.org>,
Mathieu Desnoyers <mathieu.desnoyers@...icios.com>,
Lai Jiangshan <jiangshanlai@...il.com>,
Zqiang <qiang.zhang1211@...il.com>, rcu@...r.kernel.org
Subject: Re: "WARNING in rcu_sr_normal_complete" in Linux Kernel v6.12-rc4
On Thu, Jan 16, 2025 at 03:03:56PM +0100, Uladzislau Rezki wrote:
> Hello, Cheung Wall!
>
> >
> > I am writing to report a potential vulnerability identified in the
> > Linux Kernel version v6.12-rc4. This vulnerability was discovered
> > while i was testing the kernel.
> >
> > Linux Kernel Repository Git Commit:
> > 42f7652d3eb527d03665b09edac47f85fb600924 (tag: v6.12-rc4)
> >
> > Bug Location: 0010:rcu_sr_normal_complete+0xd0/0x110 kernel/rcu/tree.c:1638
> >
> > Bug report: https://pastebin.com/kuJ7wnPe
> >
> > Entire Log: https://pastebin.com/fT42ya0T
> >
> > Thank you for your time and attention.
> >
> Do you have a reproducer of this splat?
>
The reproducer is below:
for (( i=0; i<$LOOPS; i++ )); do
tools/testing/selftests/rcutorture/bin/kvm.sh --allcpus --configs \
'16*TREE05' --memory 10G --bootargs 'rcutorture.fwd_progress=1' \
--kconfig "CONFIG_NR_CPUS=4"
echo "Done $i"
done
Please note, it also requires to modify TREE05:
+# This part is for synchronize_rcu() testing
+rcutorture.nfakewriters=-1
+rcutorture.gp_sync=1
+rcupdate.rcu_normal=1
+rcutree.rcu_normal_wake_from_gp=1
and:
diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index d26fb1d33ed9..6bc161e1e8ac 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -4050,6 +4050,10 @@ rcu_torture_init(void)
writer_task);
if (torture_init_error(firsterr))
goto unwind;
+
+ if (nfakewriters < 0)
+ nfakewriters = (int) num_possible_cpus();
+
if (nfakewriters > 0) {
fakewriter_tasks = kcalloc(nfakewriters,
sizeof(fakewriter_tasks[0]),
--
Uladzislau Rezki
Powered by blists - more mailing lists