summaryrefslogtreecommitdiff
path: root/arch/parisc
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2013-10-02 07:56:46 +0200
committerIngo Molnar <mingo@kernel.org>2013-10-02 07:57:37 +0200
commitb8d490c3de797c88cfcc3364c6e04d8900121cf9 (patch)
treeac62b90323e561bca35a407211242dab8987099b /arch/parisc
parent8a60d42d26d31df8121b251c2b5c56eb24e729f1 (diff)
parent62d26c8200a8382e1c67419ca3aff78d37898cc5 (diff)
Merge branch 'irq/core-v6' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks into irq/core
Pull hardirq and softirq nesting updates from Frederic Weisbecker, which fix nesting related stack overruns such as: http://lkml.kernel.org/r/1378330796.4321.50.camel%40pasglop Beyond being a fix, this series also optimizes and reorganizes arch hardirq/softirq stack processing to be faster and more robust. Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/parisc')
-rw-r--r--arch/parisc/kernel/irq.c17
1 files changed, 2 insertions, 15 deletions
diff --git a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c
index 2e6443b1e922..ef5927685299 100644
--- a/arch/parisc/kernel/irq.c
+++ b/arch/parisc/kernel/irq.c
@@ -499,22 +499,9 @@ static void execute_on_irq_stack(void *func, unsigned long param1)
*irq_stack_in_use = 1;
}
-asmlinkage void do_softirq(void)
+void do_softirq_own_stack(void)
{
- __u32 pending;
- unsigned long flags;
-
- if (in_interrupt())
- return;
-
- local_irq_save(flags);
-
- pending = local_softirq_pending();
-
- if (pending)
- execute_on_irq_stack(__do_softirq, 0);
-
- local_irq_restore(flags);
+ execute_on_irq_stack(__do_softirq, 0);
}
#endif /* CONFIG_IRQSTACKS */