doc: Update RCU requirements RCU_INIT_POINTER() description

Back in the day, RCU_INIT_POINTER() was the only way to avoid
memory-barrier instructions while storing NULL to an RCU-protected
pointer.  Fortunately, in 2016, rcu_assign_pointer() started checking for
compile-time NULL pointers and omitting the memory-barrier instructions in
that case.  Unfortunately, RCU's Requirements.rst document was not updated
accordingly.  This commit therefore at long last carries out that update.

Fixes: 3a37f7275c ("rcu: No ordering for rcu_assign_pointer() of NULL")
Link: https://lore.kernel.org/lkml/20201209230755.GV7338@casper.infradead.org/
Reported-by: Matthew Wilcox <willy@infradead.org>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
Paul E. McKenney 2020-12-09 16:54:41 -08:00
parent 9d3a04853f
commit d756c74e6f
1 changed files with 1 additions and 2 deletions

View File

@ -1668,8 +1668,7 @@ against mishaps and misuse:
this purpose. this purpose.
#. It is not necessary to use rcu_assign_pointer() when creating #. It is not necessary to use rcu_assign_pointer() when creating
linked structures that are to be published via a single external linked structures that are to be published via a single external
pointer. The RCU_INIT_POINTER() macro is provided for this task pointer. The RCU_INIT_POINTER() macro is provided for this task.
and also for assigning ``NULL`` pointers at runtime.
This not a hard-and-fast list: RCU's diagnostic capabilities will This not a hard-and-fast list: RCU's diagnostic capabilities will
continue to be guided by the number and type of usage bugs found in continue to be guided by the number and type of usage bugs found in