s390: Convert call_rcu() to kfree_rcu(), drop ext_int_hash_update()
authorPaul E. McKenney <paul.mckenney@linaro.org>
Sat, 7 Jan 2012 00:59:51 +0000 (16:59 -0800)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 21 Feb 2012 17:03:27 +0000 (09:03 -0800)
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>
arch/s390/kernel/irq.c

index b9a7fdd9c814c95060ae982edbb557cbd2e46a50..e30b2dfa8ba00a4b83348bcaea7e7377d8b37fec 100644 (file)
@@ -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;