Re: [PATCH] doc/RCU/listRCU: fix an example code snippets

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

 



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;
 			}
 		}
-- 




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux