summaryrefslogtreecommitdiffstats
path: root/kernel/softirq.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2013-02-21 18:17:42 +0100
committerThomas Gleixner <tglx@linutronix.de>2013-02-21 20:52:24 +0100
commitfacd8b80c67a3cf64a467c4a2ac5fb31f2e6745b (patch)
tree5feb802348c3fe708b9ea562e5e6b3c753ad7fe6 /kernel/softirq.c
parentirq: Ensure irq_exit() code runs with interrupts disabled (diff)
downloadlinux-facd8b80c67a3cf64a467c4a2ac5fb31f2e6745b.tar.xz
linux-facd8b80c67a3cf64a467c4a2ac5fb31f2e6745b.zip
irq: Sanitize invoke_softirq
With the irq protection in irq_exit, we can remove the #ifdeffery and the bh_disable/enable dance in invoke_softirq() Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ingo Molnar <mingo@kernel.org> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Linus Torvalds <torvalds@linuxfoundation.org> Link: http://lkml.kernel.org/r/alpine.LFD.2.02.1302202155320.22263@ionos
Diffstat (limited to 'kernel/softirq.c')
-rw-r--r--kernel/softirq.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/kernel/softirq.c b/kernel/softirq.c
index f2a934673008..24a921bcf04f 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -322,18 +322,10 @@ void irq_enter(void)
static inline void invoke_softirq(void)
{
- if (!force_irqthreads) {
-#ifdef __ARCH_IRQ_EXIT_IRQS_DISABLED
+ if (!force_irqthreads)
__do_softirq();
-#else
- do_softirq();
-#endif
- } else {
- __local_bh_disable((unsigned long)__builtin_return_address(0),
- SOFTIRQ_OFFSET);
+ else
wakeup_softirqd();
- __local_bh_enable(SOFTIRQ_OFFSET);
- }
}
/*