Skip to content

Commit

Permalink
Merge branch 'irq/urgent-v2' of git://git.kernel.org/pub/scm/linux/ke…
Browse files Browse the repository at this point in the history
…rnel/git/frederic/linux-dynticks into irq/urgent

Pull a hardirq-nesting fix from Frederic Weisbecker.

Signed-off-by: Ingo Molnar <mingo@kernel.org>
  • Loading branch information
Ingo Molnar committed Oct 2, 2013
2 parents f927318 + ded7975 commit 0d119fb
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions kernel/softirq.c
Original file line number Diff line number Diff line change
Expand Up @@ -328,10 +328,19 @@ void irq_enter(void)

static inline void invoke_softirq(void)
{
if (!force_irqthreads)
__do_softirq();
else
if (!force_irqthreads) {
/*
* We can safely execute softirq on the current stack if
* it is the irq stack, because it should be near empty
* at this stage. But we have no way to know if the arch
* calls irq_exit() on the irq stack. So call softirq
* in its own stack to prevent from any overrun on top
* of a potentially deep task stack.
*/
do_softirq();
} else {
wakeup_softirqd();
}
}

static inline void tick_irq_exit(void)
Expand Down

0 comments on commit 0d119fb

Please sign in to comment.