summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2022-10-10 01:01:59 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2022-10-10 01:01:59 +0200
commitc71370bde7dbd3aefae0c2e8dd643d68fb2c51c8 (patch)
tree448d1b2cc5595324528280ed35505372b79cddf6
parentMerge tag 'powerpc-6.1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/po... (diff)
parentsignal: break out of wait loops on kthread_stop() (diff)
downloadlinux-c71370bde7dbd3aefae0c2e8dd643d68fb2c51c8.tar.xz
linux-c71370bde7dbd3aefae0c2e8dd643d68fb2c51c8.zip
Merge tag 'interrupting_kthread_stop-for-v5.20' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
Pull kthread update from Eric Biederman: "Break out of wait loops on kthread_stop() This is a small tweak to kthread_stop so it breaks out of interruptible waits, that don't explicitly test for kthread_stop. These interruptible waits occassionaly occur in kernel threads do to code sharing" * tag 'interrupting_kthread_stop-for-v5.20' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace: signal: break out of wait loops on kthread_stop()
-rw-r--r--kernel/kthread.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/kthread.c b/kernel/kthread.c
index 28a6b7ab4a0f..f97fd01a2932 100644
--- a/kernel/kthread.c
+++ b/kernel/kthread.c
@@ -704,6 +704,7 @@ int kthread_stop(struct task_struct *k)
kthread = to_kthread(k);
set_bit(KTHREAD_SHOULD_STOP, &kthread->flags);
kthread_unpark(k);
+ set_tsk_thread_flag(k, TIF_NOTIFY_SIGNAL);
wake_up_process(k);
wait_for_completion(&kthread->exited);
ret = kthread->result;