From: Andrew Morton <akpm@linux-foundation.org>
To: jsiddle@redhat.com
Cc: linux-kernel@vger.kernel.org, penguin-kernel@I-love.SAKURA.ne.jp
Subject: Re: [PATCH] hung_task: Allow hung_task_panic when hung_task_warnings is 0.
Date: Fri, 9 Sep 2016 13:13:44 -0700 [thread overview]
Message-ID: <20160909131344.c6995ea35e778db4e76abb4f@linux-foundation.org> (raw)
In-Reply-To: <1473450214-4049-1-git-send-email-jsiddle@redhat.com>
On Fri, 9 Sep 2016 15:43:34 -0400 jsiddle@redhat.com wrote:
> From: John Siddle <jsiddle@redhat.com>
>
> 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.
>
> ...
>
> --- a/kernel/hung_task.c
> +++ b/kernel/hung_task.c
> @@ -98,7 +98,7 @@ static void check_hung_task(struct task_struct *t, unsigned long timeout)
>
> trace_sched_process_hang(t);
>
> - if (!sysctl_hung_task_warnings)
> + if (!sysctl_hung_task_warnings && !sysctl_hung_task_panic)
> return;
>
> if (sysctl_hung_task_warnings > 0)
> @@ -108,16 +108,18 @@ static void check_hung_task(struct task_struct *t, unsigned long timeout)
> * Ok, the task did not get scheduled for more than 2 minutes,
> * complain:
> */
> - pr_err("INFO: task %s:%d blocked for more than %ld seconds.\n",
> - t->comm, t->pid, timeout);
> - pr_err(" %s %s %.*s\n",
> - print_tainted(), init_utsname()->release,
> - (int)strcspn(init_utsname()->version, " "),
> - init_utsname()->version);
> - pr_err("\"echo 0 > /proc/sys/kernel/hung_task_timeout_secs\""
> - " disables this message.\n");
> - sched_show_task(t);
> - debug_show_held_locks(t);
> + if (sysctl_hung_task_warnings) {
> + pr_err("INFO: task %s:%d blocked for more than %ld seconds.\n",
> + t->comm, t->pid, timeout);
> + pr_err(" %s %s %.*s\n",
> + print_tainted(), init_utsname()->release,
> + (int)strcspn(init_utsname()->version, " "),
> + init_utsname()->version);
> + pr_err("\"echo 0 > /proc/sys/kernel/hung_task_timeout_secs\""
> + " disables this message.\n");
> + sched_show_task(t);
> + debug_show_held_locks(t);
> + }
This introduces an off-by-one error. In the old code, if
sysctl_hung_task_warnings==1 on entry, we warn. With the new code, we
no longer warn.
This?
--- a/kernel/hung_task.c~hung_task-allow-hung_task_panic-when-hung_task_warnings-is-0-fix
+++ a/kernel/hung_task.c
@@ -101,14 +101,12 @@ static void check_hung_task(struct task_
if (!sysctl_hung_task_warnings && !sysctl_hung_task_panic)
return;
- if (sysctl_hung_task_warnings > 0)
- sysctl_hung_task_warnings--;
-
/*
* Ok, the task did not get scheduled for more than 2 minutes,
* complain:
*/
if (sysctl_hung_task_warnings) {
+ sysctl_hung_task_warnings--;
pr_err("INFO: task %s:%d blocked for more than %ld seconds.\n",
t->comm, t->pid, timeout);
pr_err(" %s %s %.*s\n",
_
next prev parent reply other threads:[~2016-09-09 20:13 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-09 19:43 [PATCH] hung_task: Allow hung_task_panic when hung_task_warnings is 0 jsiddle
2016-09-09 20:13 ` Andrew Morton [this message]
2016-09-10 0:18 ` Tetsuo Handa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160909131344.c6995ea35e778db4e76abb4f@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=jsiddle@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=penguin-kernel@I-love.SAKURA.ne.jp \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox