diff options
author | Matt Wagantall <mattw@codeaurora.org> | 2015-03-20 12:54:57 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2015-04-07 09:48:11 -0700 |
commit | 4933b84d1d40682ee7cb49afa092a69af409a01e (patch) | |
tree | 473da839628bbf2cf412f4357d420193cd0857af /kernel | |
parent | 7fba991e780577e29d7072cc7678fa7bf47b0a28 (diff) | |
download | qcom-msm-v3.10-4933b84d1d40682ee7cb49afa092a69af409a01e.tar.gz |
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: Matt Wagantall <mattw@codeaurora.org>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/exit.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index 07db1173a6f..5b780f35111 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -752,8 +752,12 @@ void 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 printk(KERN_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 |