From: Oleg Nesterov <oleg@redhat.com>
To: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: rientjes@google.com, akpm@linux-foundation.org,
joseph.salisbury@canonical.com, torvalds@linux-foundation.org,
tj@kernel.org, tglx@linutronix.de, linux-kernel@vger.kernel.org,
kernel-team@lists.ubuntu.com
Subject: Re: [v3.13][v3.14][Regression] kthread: make kthread_create() killable
Date: Sun, 16 Mar 2014 17:25:12 +0100 [thread overview]
Message-ID: <20140316162512.GA9467@redhat.com> (raw)
In-Reply-To: <201403170013.GJF86930.FtVOOQOHLFFMSJ@I-love.SAKURA.ne.jp>
On 03/17, Tetsuo Handa wrote:
>
> Therefore, I'd like to propose this patch for 3.14-final
> and 3.13-stable.
Well, I disagree. To me, the patch tries to fix the problem in the wrong
place,
> Commit 786235ee "kthread: make kthread_create() killable" changed to
> leave kthread_create() as soon as receiving SIGKILL. But this change
> caused boot failures if systemd-udevd received SIGKILL (probably due
> to timeout) while loading SCSI controller drivers using
> finit_module() [1].
Shouldn't we fix the caller instead? It should handle the error from
kthread_create() correctly.
And could you tell who is the caller which doesn't do this? If it can't
be fixed, then, say, it can use workqueue to create a kernel thread.
> @@ -292,6 +292,17 @@ struct task_struct *kthread_create_on_node(int (*threadfn)(void *data),
> * new kernel thread.
> */
> if (unlikely(wait_for_completion_killable(&done))) {
> + int i = 0;
> +
> + /*
> + * I got SIGKILL, but wait for 10 more seconds for completion
> + * unless chosen by the OOM killer. This delay is there as a
> + * workaround for boot failure caused by SIGKILL upon device
> + * driver initialization timeout.
> + */
> + while (i++ < 10 && !test_tsk_thread_flag(current, TIF_MEMDIE))
> + if (wait_for_completion_timeout(&done, HZ))
> + goto ready;
Personally I really dislike this hack. And btw, why we return -ENOMEM if
SIGKILL'ed? Why not EINTR ?
If nothing else we can change the caller to do
for (;;) {
kthread = kthread_create(...);
if (!IS_ERR(kthread) || PTR_ERR(kthread) != -EINTR)
break;
// FIXME, I am stupid and can't handle SIGKILL properly
clear_thread_flag(TIF_SIGPENDING);
}
recalc_sigpending();
Oleg.
next prev parent reply other threads:[~2014-03-16 16:25 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-14 20:46 [v3.13][v3.14][Regression] kthread: make kthread_create() killable Joseph Salisbury
2014-03-15 0:43 ` Tetsuo Handa
2014-03-16 15:13 ` Tetsuo Handa
2014-03-16 16:25 ` Oleg Nesterov [this message]
2014-03-17 12:38 ` [v3.13][v3.14][Regression] kthread: make kthread_create()killable Tetsuo Handa
2014-03-17 14:22 ` Oleg Nesterov
2014-03-18 12:03 ` [v3.13][v3.14][Regression] kthread: makekthread_create()killable Tetsuo Handa
2014-03-18 17:16 ` Oleg Nesterov
2014-03-19 11:49 ` [v3.13][v3.14][Regression] kthread:makekthread_create()killable Tetsuo Handa
2014-03-19 16:13 ` Joseph Salisbury
2014-03-19 17:52 ` Oleg Nesterov
2014-03-19 18:29 ` please fix FUSION (Was: [v3.13][v3.14][Regression] kthread:makekthread_create()killable) Oleg Nesterov
2014-03-19 19:42 ` Oleg Nesterov
2014-03-19 21:04 ` Joseph Salisbury
2014-03-20 16:46 ` Joseph Salisbury
2014-03-20 19:23 ` Oleg Nesterov
2014-03-21 18:34 ` Oleg Nesterov
2014-03-21 19:32 ` Linus Torvalds
2014-03-21 20:31 ` Oleg Nesterov
2014-03-21 22:56 ` James Bottomley
2014-03-22 6:25 ` please fix FUSION (Was: [v3.13][v3.14][Regression]kthread:makekthread_create()killable) Tetsuo Handa
2014-03-22 19:25 ` Oleg Nesterov
2014-03-22 20:48 ` James Bottomley
2014-03-24 17:01 ` Oleg Nesterov
2014-03-22 21:25 ` Thomas Gleixner
2014-03-22 22:01 ` Thomas Gleixner
2014-03-22 23:57 ` please fix FUSION (Was:[v3.13][v3.14][Regression]kthread:makekthread_create()killable) Tetsuo Handa
2014-03-23 8:04 ` Thomas Gleixner
2014-03-23 14:19 ` James Bottomley
2014-03-23 14:28 ` Thomas Gleixner
2014-03-23 14:29 ` James Bottomley
2014-03-22 23:50 ` Tetsuo Handa
2014-03-17 20:02 ` [v3.13][v3.14][Regression] kthread: make kthread_create() killable Andrew Morton
2014-03-17 20:19 ` Oleg Nesterov
2014-03-17 20:39 ` Andrew Morton
2014-03-18 17:45 ` Oleg Nesterov
2014-06-03 13:03 ` [PATCH] kthread: Fix return value of kthread_create() upon SIGKILL Tetsuo Handa
2014-06-03 21:35 ` David Rientjes
2014-03-17 21:32 ` [v3.13][v3.14][Regression] kthread: make kthread_create()killable Tetsuo Handa
2014-03-17 23:18 ` [v3.13][v3.14][Regression] kthread: make kthread_create() killable One Thousand Gnomes
2014-03-18 17:50 ` Oleg Nesterov
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=20140316162512.GA9467@redhat.com \
--to=oleg@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=joseph.salisbury@canonical.com \
--cc=kernel-team@lists.ubuntu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=penguin-kernel@I-love.SAKURA.ne.jp \
--cc=rientjes@google.com \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--cc=torvalds@linux-foundation.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.