diff options
author | Ingo Molnar <mingo@kernel.org> | 2013-10-02 07:56:46 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2013-10-02 07:57:37 +0200 |
commit | b8d490c3de797c88cfcc3364c6e04d8900121cf9 (patch) | |
tree | ac62b90323e561bca35a407211242dab8987099b /arch/parisc | |
parent | 8a60d42d26d31df8121b251c2b5c56eb24e729f1 (diff) | |
parent | 62d26c8200a8382e1c67419ca3aff78d37898cc5 (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.c | 17 |
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 */ |