diff options
author | SeongJae Park <sj@kernel.org> | 2023-04-17 19:04:50 +0000 |
---|---|---|
committer | Vlastimil Babka <vbabka@suse.cz> | 2023-06-08 09:13:36 +0200 |
commit | 1143c9d9d7602f20ba7bb3cef0d07b10f23cbef7 (patch) | |
tree | 91706617b5296385d29a1c3f2511924c8bf9788c /include/linux/slab.h | |
parent | 9ca73f2645706230249c4ec2a2b0cab9515987c8 (diff) | |
download | lwn-1143c9d9d7602f20ba7bb3cef0d07b10f23cbef7.tar.gz lwn-1143c9d9d7602f20ba7bb3cef0d07b10f23cbef7.zip |
mm/slab: break up RCU readers on SLAB_TYPESAFE_BY_RCU example code
The SLAB_TYPESAFE_BY_RCU example code snippet uses a single RCU
read-side critical section for retries.
'Documentation/RCU/rculist_nulls.rst' has similar example code snippet,
and commit da82af04352b ("doc: Update and wordsmith rculist_nulls.rst")
broke it up. Apply the change to SLAB_TYPESAFE_BY_RCU example code
snippet, too.
Signed-off-by: SeongJae Park <sj@kernel.org>
Reviewed-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Diffstat (limited to 'include/linux/slab.h')
-rw-r--r-- | include/linux/slab.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/include/linux/slab.h b/include/linux/slab.h index 5eeedbfffcd2..c6bc05765bdb 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h @@ -53,16 +53,18 @@ * stays valid, the trick to using this is relying on an independent * object validation pass. Something like: * + * begin: * rcu_read_lock(); - * again: * obj = lockless_lookup(key); * if (obj) { * if (!try_get_ref(obj)) // might fail for free objects - * goto again; + * rcu_read_unlock(); + * goto begin; * * if (obj->key != key) { // not the object we expected * put_ref(obj); - * goto again; + * rcu_read_unlock(); + * goto begin; * } * } * rcu_read_unlock(); |