On 03/02/2025 4:25 pm, Jan Beulich wrote:
> These were needed by TMEM only, which is long gone. The Linux original
> doesn't have such either. This effectively reverts one of the "Other
> changes" from 8dc6738dbb3c ("Update radix-tree.[ch] from upstream Linux
> to gain RCU awareness").
>
> Positive side effect: Two cf_check go away.

Not only that, they can now be inlined, although you've merged them
directly.

>
> While there also convert xmalloc()+memset() to xzalloc(). (Don't convert
> to xvzalloc(), as that would require touching the freeing side, too.)
>
> Requested-by: Andrew Cooper <andrew.coop...@citrix.com>
> Signed-off-by: Jan Beulich <jbeul...@suse.com>

Reviewed-by: Andrew Cooper <andrew.coop...@citrix.com>

One formatting point.

> --- a/xen/common/radix-tree.c
> +++ b/xen/common/radix-tree.c
> @@ -66,26 +60,19 @@ static void cf_check _rcu_node_free(stru
>       xfree(rcu_node);
>  }
>  
> -static void cf_check rcu_node_free(struct radix_tree_node *node, void *arg)
> -{
> -     struct rcu_node *rcu_node = container_of(node, struct rcu_node, node);
> -     call_rcu(&rcu_node->rcu_head, _rcu_node_free);
> -}
> -
>  static struct radix_tree_node *radix_tree_node_alloc(
>       struct radix_tree_root *root)
>  {
> -     struct radix_tree_node *ret;
> -     ret = root->node_alloc(root->node_alloc_free_arg);
> -     if (ret)
> -             memset(ret, 0, sizeof(*ret));
> -     return ret;
> +     struct rcu_node *rcu_node = xzalloc(struct rcu_node);
> +
> +     return rcu_node ? &rcu_node->node : NULL;
>  }
>  
>  static void radix_tree_node_free(
>       struct radix_tree_root *root, struct radix_tree_node *node)
>  {
> -     root->node_free(node, root->node_alloc_free_arg);
> +     struct rcu_node *rcu_node = container_of(node, struct rcu_node, node);

Newline here.

~Andrew

> +     call_rcu(&rcu_node->rcu_head, _rcu_node_free);
>  }
>  
>  /*
>

Reply via email to