diff options
author | Ingo Molnar <mingo@elte.hu> | 2012-02-28 04:16:01 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2012-02-28 04:16:10 -0500 |
commit | bdd4431c8d071491a68a65d9457996f222b5ecd3 (patch) | |
tree | 9de69701cdba1dd28bcb804476bff07806f6d7a3 /arch/s390/kernel | |
parent | 586c6e7013c8cbb8c91aaa6568ec349b1dc2c691 (diff) | |
parent | 1cc85961e214773cb7d7f2ccbe3bc644dd466df0 (diff) |
Merge branch 'rcu/next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu
The major features of this series are:
- making RCU more aggressive about entering dyntick-idle mode in order to
improve energy efficiency
- converting a few more call_rcu()s to kfree_rcu()s
- applying a number of rcutree fixes and cleanups to rcutiny
- removing CONFIG_SMP #ifdefs from treercu
- allowing RCU CPU stall times to be set via sysfs
- adding CPU-stall capability to rcutorture
- adding more RCU-abuse diagnostics
- updating documentation
- fixing yet more issues located by the still-ongoing top-to-bottom
inspection of RCU, this time with a special focus on the
CPU-hotplug code path.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/s390/kernel')
-rw-r--r-- | arch/s390/kernel/irq.c | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/arch/s390/kernel/irq.c b/arch/s390/kernel/irq.c index b9a7fdd9c814..e30b2dfa8ba0 100644 --- a/arch/s390/kernel/irq.c +++ b/arch/s390/kernel/irq.c | |||
@@ -165,13 +165,6 @@ static inline int ext_hash(u16 code) | |||
165 | return (code + (code >> 9)) & 0xff; | 165 | return (code + (code >> 9)) & 0xff; |
166 | } | 166 | } |
167 | 167 | ||
168 | static void ext_int_hash_update(struct rcu_head *head) | ||
169 | { | ||
170 | struct ext_int_info *p = container_of(head, struct ext_int_info, rcu); | ||
171 | |||
172 | kfree(p); | ||
173 | } | ||
174 | |||
175 | int register_external_interrupt(u16 code, ext_int_handler_t handler) | 168 | int register_external_interrupt(u16 code, ext_int_handler_t handler) |
176 | { | 169 | { |
177 | struct ext_int_info *p; | 170 | struct ext_int_info *p; |
@@ -202,7 +195,7 @@ int unregister_external_interrupt(u16 code, ext_int_handler_t handler) | |||
202 | list_for_each_entry_rcu(p, &ext_int_hash[index], entry) | 195 | list_for_each_entry_rcu(p, &ext_int_hash[index], entry) |
203 | if (p->code == code && p->handler == handler) { | 196 | if (p->code == code && p->handler == handler) { |
204 | list_del_rcu(&p->entry); | 197 | list_del_rcu(&p->entry); |
205 | call_rcu(&p->rcu, ext_int_hash_update); | 198 | kfree_rcu(p, rcu); |
206 | } | 199 | } |
207 | spin_unlock_irqrestore(&ext_int_hash_lock, flags); | 200 | spin_unlock_irqrestore(&ext_int_hash_lock, flags); |
208 | return 0; | 201 | return 0; |