radix-tree: purge node allocation override hooks

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 8dc6738dbb ("Update radix-tree.[ch] from upstream Linux
to gain RCU awareness").

Positive side effect: Two cf_check go away.

While there also convert xmalloc()+memset() to xzalloc().

Requested-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
master commit: 1275093a96
master date: 2025-02-07 09:59:11 +0100
This commit is contained in:
Jan Beulich committed 2025-02-17 13:31:22 +01:00
1 parent 5a66ba0572
commit 9b7b348f20
2 files changed
+6 -41

No files matched your search

+6 -31
View File
@@ -52,12 +52,6 @@ struct rcu_node {
struct rcu_head rcu_head;
};
static struct radix_tree_node *cf_check rcu_node_alloc(void *arg)
{
struct rcu_node *rcu_node = xmalloc(struct rcu_node);
return rcu_node ? &rcu_node->node : NULL;
}
static void cf_check _rcu_node_free(struct rcu_head *head)
{
struct rcu_node *rcu_node =
@@ -65,26 +59,20 @@ static void cf_check _rcu_node_free(struct rcu_head *head)
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);
call_rcu(&rcu_node->rcu_head, _rcu_node_free);
}
/*
@@ -717,19 +705,6 @@ void radix_tree_destroy(
void radix_tree_init(struct radix_tree_root *root)
{
memset(root, 0, sizeof(*root));
root->node_alloc = rcu_node_alloc;
root->node_free = rcu_node_free;
}
void radix_tree_set_alloc_callbacks(
struct radix_tree_root *root,
radix_tree_alloc_fn_t *node_alloc,
radix_tree_free_fn_t *node_free,
void *node_alloc_free_arg)
{
root->node_alloc = node_alloc;
root->node_free = node_free;
root->node_alloc_free_arg = node_alloc_free_arg;
}
static __init unsigned long __maxindex(unsigned int height)
-10
View File
@@ -66,11 +66,6 @@ typedef void radix_tree_free_fn_t(struct radix_tree_node *, void *);
struct radix_tree_root {
unsigned int height;
struct radix_tree_node __rcu *rnode;
/* Allow to specify custom node alloc/dealloc routines. */
radix_tree_alloc_fn_t *node_alloc;
radix_tree_free_fn_t *node_free;
void *node_alloc_free_arg;
};
/*
@@ -78,11 +73,6 @@ struct radix_tree_root {
*/
void radix_tree_init(struct radix_tree_root *root);
void radix_tree_set_alloc_callbacks(
struct radix_tree_root *root,
radix_tree_alloc_fn_t *node_alloc,
radix_tree_free_fn_t *node_free,
void *node_alloc_free_arg);
void radix_tree_destroy(
struct radix_tree_root *root,
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.