forked from Minki/linux
s390: Convert call_rcu() to kfree_rcu(), drop ext_int_hash_update()
The call_rcu() in unregister_external_interrupt() invokes ext_int_hash_update(), which just does a kfree(). Convert the call_rcu() to kfree_rcu(), allowing ext_int_hash_update() to be eliminated. Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
This commit is contained in:
parent
5c8806a037
commit
bc399d6e6e
@ -165,13 +165,6 @@ static inline int ext_hash(u16 code)
|
||||
return (code + (code >> 9)) & 0xff;
|
||||
}
|
||||
|
||||
static void ext_int_hash_update(struct rcu_head *head)
|
||||
{
|
||||
struct ext_int_info *p = container_of(head, struct ext_int_info, rcu);
|
||||
|
||||
kfree(p);
|
||||
}
|
||||
|
||||
int register_external_interrupt(u16 code, ext_int_handler_t handler)
|
||||
{
|
||||
struct ext_int_info *p;
|
||||
@ -202,7 +195,7 @@ int unregister_external_interrupt(u16 code, ext_int_handler_t handler)
|
||||
list_for_each_entry_rcu(p, &ext_int_hash[index], entry)
|
||||
if (p->code == code && p->handler == handler) {
|
||||
list_del_rcu(&p->entry);
|
||||
call_rcu(&p->rcu, ext_int_hash_update);
|
||||
kfree_rcu(p, rcu);
|
||||
}
|
||||
spin_unlock_irqrestore(&ext_int_hash_lock, flags);
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user