diff options
author | Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp> | 2014-06-04 19:05:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-04 19:53:51 -0400 |
commit | 8fe6929cfd43c44834858a53e129ffdc7c166298 (patch) | |
tree | ca0f40dfcf8fff6959727f43256e557f1dfd5775 /kernel | |
parent | c177c81e09e517bbf75b67762cdab1b83aba6976 (diff) |
kthread: fix return value of kthread_create() upon SIGKILL.
Commit 786235eeba0e ("kthread: make kthread_create() killable") meant
for allowing kthread_create() to abort as soon as killed by the
OOM-killer. But returning -ENOMEM is wrong if killed by SIGKILL from
userspace. Change kthread_create() to return -EINTR upon SIGKILL.
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: Oleg Nesterov <oleg@redhat.com>
Acked-by: David Rientjes <rientjes@google.com>
Cc: <stable@vger.kernel.org> [3.13+]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/kthread.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/kthread.c b/kernel/kthread.c index 9a130ec06f7a..c2390f41307b 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c | |||
@@ -262,7 +262,7 @@ static void create_kthread(struct kthread_create_info *create) | |||
262 | * kthread_stop() has been called). The return value should be zero | 262 | * kthread_stop() has been called). The return value should be zero |
263 | * or a negative error number; it will be passed to kthread_stop(). | 263 | * or a negative error number; it will be passed to kthread_stop(). |
264 | * | 264 | * |
265 | * Returns a task_struct or ERR_PTR(-ENOMEM). | 265 | * Returns a task_struct or ERR_PTR(-ENOMEM) or ERR_PTR(-EINTR). |
266 | */ | 266 | */ |
267 | struct task_struct *kthread_create_on_node(int (*threadfn)(void *data), | 267 | struct task_struct *kthread_create_on_node(int (*threadfn)(void *data), |
268 | void *data, int node, | 268 | void *data, int node, |
@@ -298,7 +298,7 @@ struct task_struct *kthread_create_on_node(int (*threadfn)(void *data), | |||
298 | * that thread. | 298 | * that thread. |
299 | */ | 299 | */ |
300 | if (xchg(&create->done, NULL)) | 300 | if (xchg(&create->done, NULL)) |
301 | return ERR_PTR(-ENOMEM); | 301 | return ERR_PTR(-EINTR); |
302 | /* | 302 | /* |
303 | * kthreadd (or new kernel thread) will call complete() | 303 | * kthreadd (or new kernel thread) will call complete() |
304 | * shortly. | 304 | * shortly. |