mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-03-31 03:14:24 +00:00
hung_task: allow hung_task_panic when hung_task_warnings is 0
Previously hung_task_panic would not be respected if enabled after hung_task_warnings had already been decremented to 0. Permit the kernel to panic if hung_task_panic is enabled after hung_task_warnings has already been decremented to 0 and another task hangs for hung_task_timeout_secs seconds. Check if hung_task_panic is enabled so we don't return prematurely, and check if hung_task_warnings is non-zero so we don't print the warning unnecessarily. [akpm@linux-foundation.org: fix off-by-one] Link: http://lkml.kernel.org/r/1473450214-4049-1-git-send-email-jsiddle@redhat.com Signed-off-by: John Siddle <jsiddle@redhat.com> Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
e154ccc831
commit
48a6d64eda
1 changed files with 14 additions and 14 deletions
|
@ -98,26 +98,26 @@ static void check_hung_task(struct task_struct *t, unsigned long timeout)
|
||||||
|
|
||||||
trace_sched_process_hang(t);
|
trace_sched_process_hang(t);
|
||||||
|
|
||||||
if (!sysctl_hung_task_warnings)
|
if (!sysctl_hung_task_warnings && !sysctl_hung_task_panic)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (sysctl_hung_task_warnings > 0)
|
|
||||||
sysctl_hung_task_warnings--;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ok, the task did not get scheduled for more than 2 minutes,
|
* Ok, the task did not get scheduled for more than 2 minutes,
|
||||||
* complain:
|
* complain:
|
||||||
*/
|
*/
|
||||||
pr_err("INFO: task %s:%d blocked for more than %ld seconds.\n",
|
if (sysctl_hung_task_warnings) {
|
||||||
t->comm, t->pid, timeout);
|
sysctl_hung_task_warnings--;
|
||||||
pr_err(" %s %s %.*s\n",
|
pr_err("INFO: task %s:%d blocked for more than %ld seconds.\n",
|
||||||
print_tainted(), init_utsname()->release,
|
t->comm, t->pid, timeout);
|
||||||
(int)strcspn(init_utsname()->version, " "),
|
pr_err(" %s %s %.*s\n",
|
||||||
init_utsname()->version);
|
print_tainted(), init_utsname()->release,
|
||||||
pr_err("\"echo 0 > /proc/sys/kernel/hung_task_timeout_secs\""
|
(int)strcspn(init_utsname()->version, " "),
|
||||||
" disables this message.\n");
|
init_utsname()->version);
|
||||||
sched_show_task(t);
|
pr_err("\"echo 0 > /proc/sys/kernel/hung_task_timeout_secs\""
|
||||||
debug_show_all_locks();
|
" disables this message.\n");
|
||||||
|
sched_show_task(t);
|
||||||
|
debug_show_all_locks();
|
||||||
|
}
|
||||||
|
|
||||||
touch_nmi_watchdog();
|
touch_nmi_watchdog();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue