Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: rcu: Fix wrong check in list_splice_init_rcu() net,rcu: Convert call_rcu(xt_rateest_free_rcu) to kfree_rcu() sysctl,rcu: Convert call_rcu(free_head) to kfree vmalloc,rcu: Convert call_rcu(rcu_free_vb) to kfree_rcu() vmalloc,rcu: Convert call_rcu(rcu_free_va) to kfree_rcu() ipc,rcu: Convert call_rcu(ipc_immediate_free) to kfree_rcu() ipc,rcu: Convert call_rcu(free_un) to kfree_rcu() security,rcu: Convert call_rcu(sel_netport_free) to kfree_rcu() security,rcu: Convert call_rcu(sel_netnode_free) to kfree_rcu() ia64,rcu: Convert call_rcu(sn_irq_info_free) to kfree_rcu() block,rcu: Convert call_rcu(disk_free_ptbl_rcu_cb) to kfree_rcu() scsi,rcu: Convert call_rcu(fc_rport_free_rcu) to kfree_rcu() audit_tree,rcu: Convert call_rcu(__put_tree) to kfree_rcu() security,rcu: Convert call_rcu(whitelist_item_free) to kfree_rcu() md,rcu: Convert call_rcu(free_conf) to kfree_rcu()
This commit is contained in:
@@ -93,16 +93,10 @@ static inline void get_tree(struct audit_tree *tree)
|
||||
atomic_inc(&tree->count);
|
||||
}
|
||||
|
||||
static void __put_tree(struct rcu_head *rcu)
|
||||
{
|
||||
struct audit_tree *tree = container_of(rcu, struct audit_tree, head);
|
||||
kfree(tree);
|
||||
}
|
||||
|
||||
static inline void put_tree(struct audit_tree *tree)
|
||||
{
|
||||
if (atomic_dec_and_test(&tree->count))
|
||||
call_rcu(&tree->head, __put_tree);
|
||||
kfree_rcu(tree, head);
|
||||
}
|
||||
|
||||
/* to avoid bringing the entire thing in audit.h */
|
||||
|
@@ -1590,16 +1590,11 @@ void sysctl_head_get(struct ctl_table_header *head)
|
||||
spin_unlock(&sysctl_lock);
|
||||
}
|
||||
|
||||
static void free_head(struct rcu_head *rcu)
|
||||
{
|
||||
kfree(container_of(rcu, struct ctl_table_header, rcu));
|
||||
}
|
||||
|
||||
void sysctl_head_put(struct ctl_table_header *head)
|
||||
{
|
||||
spin_lock(&sysctl_lock);
|
||||
if (!--head->count)
|
||||
call_rcu(&head->rcu, free_head);
|
||||
kfree_rcu(head, rcu);
|
||||
spin_unlock(&sysctl_lock);
|
||||
}
|
||||
|
||||
@@ -1971,10 +1966,10 @@ void unregister_sysctl_table(struct ctl_table_header * header)
|
||||
start_unregistering(header);
|
||||
if (!--header->parent->count) {
|
||||
WARN_ON(1);
|
||||
call_rcu(&header->parent->rcu, free_head);
|
||||
kfree_rcu(header->parent, rcu);
|
||||
}
|
||||
if (!--header->count)
|
||||
call_rcu(&header->rcu, free_head);
|
||||
kfree_rcu(header, rcu);
|
||||
spin_unlock(&sysctl_lock);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user