From: Anton Vorontsov Date: Tue, 7 Feb 2012 06:49:51 +0000 (+0400) Subject: sysrq: Properly check for kernel threads X-Git-Tag: v3.4-rc1~185^2~112^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d3a532a9c617106a0169232d40164ee35d0440b5;p=platform%2Fkernel%2Flinux-3.10.git sysrq: Properly check for kernel threads 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 Signed-off-by: Anton Vorontsov Acked-by: David Rientjes Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c index a1bcad7..8db9125 100644 --- a/drivers/tty/sysrq.c +++ b/drivers/tty/sysrq.c @@ -324,9 +324,12 @@ static void send_sig_all(int sig) 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); }