Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7f467cbf authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull irq fix from Ingo Molnar:
 "Frederic's minimal fix for hardirq/softirq nesting crashes"

* 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  irq: Force hardirq exit's softirq processing on its own stack
parents 6d15ee49 0d119fb5
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -328,11 +328,20 @@ 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)
{