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

Commit 6499baf9 authored by Matt Wagantall's avatar Matt Wagantall Committed by Gerrit - the friendly Code Review server
Browse files

exit: Add PANIC_ON_RECURSIVE_FAULT Kconfig option



If a recursive fault is detected during do_exit(), tasks are left
to sit and wait in an un-interruptible sleep until the system
reboots (typically manually). Add Kconfig option to change this
behaviour and force a panic.

This is particularly important if a critical system task encounters
a recursive fault (ex. a kworker). Otherwise, the system may be
unusable, but since the scheduler is still running system watchdogs
may continue to be pet.

Change-Id: Ifc26fc79d6066f05a3b2c4d27f78bf4f8d2bd640
Signed-off-by: default avatarMatt Wagantall <mattw@codeaurora.org>
parent 7cef4908
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -797,7 +797,11 @@ void __noreturn do_exit(long code)
	 * leave this task alone and wait for reboot.
	 */
	if (unlikely(tsk->flags & PF_EXITING)) {
#ifdef CONFIG_PANIC_ON_RECURSIVE_FAULT
		panic("Recursive fault!\n");
#else
		pr_alert("Fixing recursive fault but reboot is needed!\n");
#endif
		/*
		 * We can do this unlocked here. The futex code uses
		 * this flag just to verify whether the pi state
+11 −0
Original line number Diff line number Diff line
@@ -879,6 +879,17 @@ config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE
	default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC
	default 1 if BOOTPARAM_SOFTLOCKUP_PANIC

config PANIC_ON_RECURSIVE_FAULT
	bool "Panic on recursive faults during task exit"
	help
	  Panic upon the detection of a recursive fault during task exit,
	  rather than putting the task into an uninterruptible sleep.
	  This is particularly useful for debugging system hangs in
	  scenarios where the task experiencing the fault is critical
	  for system operation, rendering the system inoperable.

	  Say N if unsure.

config DETECT_HUNG_TASK
	bool "Detect Hung Tasks"
	depends on DEBUG_KERNEL