There's a real possibility of killing kernel threads that might
have issued use_mm(), so kthread's mm might become non-NULL.
This patch fixes the issue by checking for PF_KTHREAD (just as
get_task_mm()).
Suggested-by: Oleg Nesterov <[email protected]>
Signed-off-by: Anton Vorontsov <[email protected]>
Acked-by: David Rientjes <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
read_lock(&tasklist_lock);
for_each_process(p) {
- if (p->mm && !is_global_init(p))
- /* Not swapper, init nor kernel thread */
- force_sig(sig, p);
+ if (p->flags & PF_KTHREAD)
+ continue;
+ if (is_global_init(p))
+ continue;
+
+ force_sig(sig, p);
}
read_unlock(&tasklist_lock);
}