summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorMatt Wagantall <mattw@codeaurora.org>2015-07-14 23:24:30 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:02:09 -0700
commit61c44b5807356caa182e385357bae009748850a6 (patch)
treeabc7399c94d9ec0ce233dfc79aaa95da31a04830 /kernel
parentb1fb594df9371dcfeae484ca71ae23841f9da729 (diff)
sched/debug: Add Kconfig to trigger panics on all 'BUG:' conditions
Introduce CONFIG_PANIC_ON_SCHED_BUG to trigger panics along with all 'BUG:' prints from the scheduler core, even potentially-recoverable ones such as scheduling while atomic, sleeping from invalid context, and detection of broken arch topologies. Change-Id: I5d2f561614604357a2bc7900b047e53b3a0b7c6d Signed-off-by: Matt Wagantall <mattw@codeaurora.org> [joonwoop@codeaurora.org: fixed trivial merge conflict in lib/Kconfig.debug.] Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sched/core.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index bdf8b6fe5f27..5c441a5ec617 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -4773,6 +4773,9 @@ static noinline void __schedule_bug(struct task_struct *prev)
pr_cont("\n");
}
#endif
+#ifdef CONFIG_PANIC_ON_SCHED_BUG
+ BUG();
+#endif
dump_stack();
add_taint(TAINT_WARN, LOCKDEP_STILL_OK);
}
@@ -8756,6 +8759,9 @@ struct sched_domain *build_sched_domain(struct sched_domain_topology_level *tl,
pr_err(" the %s domain not a subset of the %s domain\n",
child->name, sd->name);
#endif
+#ifdef CONFIG_PANIC_ON_SCHED_BUG
+ BUG();
+#endif
/* Fixup, ensure @sd has at least @child cpus. */
cpumask_or(sched_domain_span(sd),
sched_domain_span(sd),
@@ -9449,6 +9455,9 @@ void ___might_sleep(const char *file, int line, int preempt_offset)
pr_cont("\n");
}
#endif
+#ifdef CONFIG_PANIC_ON_SCHED_BUG
+ BUG();
+#endif
dump_stack();
}
EXPORT_SYMBOL(___might_sleep);