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

Commit 0bbdac08 authored by Helge Deller's avatar Helge Deller Committed by Kyle McMartin
Browse files

[PARISC] detect recursive kernel crash earlier

parent 6e16d940
Loading
Loading
Loading
Loading
+9 −9
Original line number Original line Diff line number Diff line
@@ -255,8 +255,16 @@ KERN_CRIT " || ||\n");
		printk(KERN_CRIT "%s (pid %d): %s (code %ld)\n",
		printk(KERN_CRIT "%s (pid %d): %s (code %ld)\n",
			current->comm, current->pid, str, err);
			current->comm, current->pid, str, err);


	dump_stack();
	/* Wot's wrong wif bein' racy? */
	if (current->thread.flags & PARISC_KERNEL_DEATH) {
		printk(KERN_CRIT "%s() recursion detected.\n", __FUNCTION__);
		local_irq_enable();
		while (1);
	}
	current->thread.flags |= PARISC_KERNEL_DEATH;

	show_regs(regs);
	show_regs(regs);
	dump_stack();


	if (in_interrupt())
	if (in_interrupt())
		panic("Fatal exception in interrupt");
		panic("Fatal exception in interrupt");
@@ -267,14 +275,6 @@ KERN_CRIT " || ||\n");
		panic("Fatal exception");
		panic("Fatal exception");
	}
	}


	/* Wot's wrong wif bein' racy? */
	if (current->thread.flags & PARISC_KERNEL_DEATH) {
		printk(KERN_CRIT "%s() recursion detected.\n", __FUNCTION__);
		local_irq_enable();
		while (1);
	}

	current->thread.flags |= PARISC_KERNEL_DEATH;
	do_exit(SIGSEGV);
	do_exit(SIGSEGV);
}
}