Hi Wei, The change loosk good to me, thanks! I queued the patch for futher reviews and tests with some changes in the commit log (for title formating and a bit more explanation), please see below. Regards, Boqun On Wed, Jan 01, 2025 at 08:23:06AM +0000, Wei Yang wrote: > The example code for "Eliminating Stale Data" looks not correct: > > * rcu_read_unlock() should put after kstrdup() > * spin_unlock() should be called before return > > Signed-off-by: Wei Yang <richard.weiyang@xxxxxxxxx> [...] ------------------>8 Subject: [PATCH] doc/RCU/listRCU: Fix an example code snippets The example code for "Eliminating Stale Data" looks not correct: * rcu_read_unlock() should put after kstrdup(), because otherwise entry may get freed while kstrdup() is being called. * spin_unlock() should be called before return, otherwise the function would return with the lock of the entry held. Hence fix these. Signed-off-by: Wei Yang <richard.weiyang@xxxxxxxxx> Link: https://lore.kernel.org/r/20250101082306.10404-1-richard.weiyang@xxxxxxxxx Signed-off-by: Boqun Feng <boqun.feng@xxxxxxxxx> --- Documentation/RCU/listRCU.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Documentation/RCU/listRCU.rst b/Documentation/RCU/listRCU.rst index ed5c9d8c9afe..8df50fcd69fd 100644 --- a/Documentation/RCU/listRCU.rst +++ b/Documentation/RCU/listRCU.rst @@ -348,9 +348,10 @@ to accomplish this would be to add a ``deleted`` flag and a ``lock`` spinlock to rcu_read_unlock(); return AUDIT_BUILD_CONTEXT; } - rcu_read_unlock(); if (state == AUDIT_STATE_RECORD) *key = kstrdup(e->rule.filterkey, GFP_ATOMIC); + spin_unlock(&e->lock); + rcu_read_unlock(); return state; } } --