On Tue, Apr 21, 2026 at 08:06:53PM +0200, Manuel Ebner wrote:
> Update Documentation/RCU/* to reflect new type-aware kmalloc-family as
> suggested in commit 2932ba8d9c99 ("slab: Introduce kmalloc_obj() and family")
>
> ptr = kmalloc(sizeof(*ptr), gfp);
> -> ptr = kmalloc_obj(*ptr);
>
> Signed-off-by: Manuel Ebner <[email protected]>
Acked-by: Paul E. McKenney <[email protected]>
> ---
> Documentation/RCU/Design/Requirements/Requirements.rst | 6 +++---
> Documentation/RCU/listRCU.rst | 2 +-
> Documentation/RCU/whatisRCU.rst | 4 ++--
> 3 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/Documentation/RCU/Design/Requirements/Requirements.rst
> b/Documentation/RCU/Design/Requirements/Requirements.rst
> index b5cdbba3ec2e..faca5a9c8c12 100644
> --- a/Documentation/RCU/Design/Requirements/Requirements.rst
> +++ b/Documentation/RCU/Design/Requirements/Requirements.rst
> @@ -206,7 +206,7 @@ non-\ ``NULL``, locklessly accessing the ``->a`` and
> ``->b`` fields.
>
> 1 bool add_gp_buggy(int a, int b)
> 2 {
> - 3 p = kmalloc(sizeof(*p), GFP_KERNEL);
> + 3 p = kmalloc_obj(*p);
> 4 if (!p)
> 5 return -ENOMEM;
> 6 spin_lock(&gp_lock);
> @@ -228,7 +228,7 @@ their rights to reorder this code as follows:
>
> 1 bool add_gp_buggy_optimized(int a, int b)
> 2 {
> - 3 p = kmalloc(sizeof(*p), GFP_KERNEL);
> + 3 p = kmalloc_obj(*p);
> 4 if (!p)
> 5 return -ENOMEM;
> 6 spin_lock(&gp_lock);
> @@ -264,7 +264,7 @@ shows an example of insertion:
>
> 1 bool add_gp(int a, int b)
> 2 {
> - 3 p = kmalloc(sizeof(*p), GFP_KERNEL);
> + 3 p = kmalloc_obj(*p);
> 4 if (!p)
> 5 return -ENOMEM;
> 6 spin_lock(&gp_lock);
> diff --git a/Documentation/RCU/listRCU.rst b/Documentation/RCU/listRCU.rst
> index d8bb98623c12..48c7272a4ccc 100644
> --- a/Documentation/RCU/listRCU.rst
> +++ b/Documentation/RCU/listRCU.rst
> @@ -276,7 +276,7 @@ The RCU version of audit_upd_rule() is as follows::
>
> list_for_each_entry(e, list, list) {
> if (!audit_compare_rule(rule, &e->rule)) {
> - ne = kmalloc(sizeof(*entry), GFP_ATOMIC);
> + ne = kmalloc_obj(*entry, GFP_ATOMIC);
> if (ne == NULL)
> return -ENOMEM;
> audit_copy_rule(&ne->rule, &e->rule);
> diff --git a/Documentation/RCU/whatisRCU.rst b/Documentation/RCU/whatisRCU.rst
> index a1582bd653d1..770aab8ea36a 100644
> --- a/Documentation/RCU/whatisRCU.rst
> +++ b/Documentation/RCU/whatisRCU.rst
> @@ -468,7 +468,7 @@ uses of RCU may be found in listRCU.rst and NMI-RCU.rst.
> struct foo *new_fp;
> struct foo *old_fp;
>
> - new_fp = kmalloc(sizeof(*new_fp), GFP_KERNEL);
> + new_fp = kmalloc_obj(*new_fp);
> spin_lock(&foo_mutex);
> old_fp = rcu_dereference_protected(gbl_foo,
> lockdep_is_held(&foo_mutex));
> *new_fp = *old_fp;
> @@ -570,7 +570,7 @@ The foo_update_a() function might then be written as
> follows::
> struct foo *new_fp;
> struct foo *old_fp;
>
> - new_fp = kmalloc(sizeof(*new_fp), GFP_KERNEL);
> + new_fp = kmalloc_obj(*new_fp);
> spin_lock(&foo_mutex);
> old_fp = rcu_dereference_protected(gbl_foo,
> lockdep_is_held(&foo_mutex));
> *new_fp = *old_fp;
> --
> 2.53.0
>
>