mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
coredump: zap_threads() must skip kernel threads
The main loop in zap_threads() must skip kthreads which may use the same mm. Otherwise we "kill" this thread erroneously (for example, it can not fork or exec after that), and the coredumping task stucks in the TASK_UNINTERRUPTIBLE state forever because of the wrong ->core_waiters count. Signed-off-by: Oleg Nesterov <[email protected]> Cc: Roland McGrath <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
246bb0b1de
commit
15b9f360c0
1 changed files with 3 additions and 2 deletions
|
|
@ -1574,11 +1574,12 @@ static inline int zap_threads(struct task_struct *tsk, struct mm_struct *mm,
|
|||
for_each_process(g) {
|
||||
if (g == tsk->group_leader)
|
||||
continue;
|
||||
|
||||
if (g->flags & PF_KTHREAD)
|
||||
continue;
|
||||
p = g;
|
||||
do {
|
||||
if (p->mm) {
|
||||
if (p->mm == mm) {
|
||||
if (unlikely(p->mm == mm)) {
|
||||
lock_task_sighand(p, &flags);
|
||||
zap_process(p);
|
||||
unlock_task_sighand(p, &flags);
|
||||
|
|
|
|||
Loading…
Reference in a new issue