From: Anton Vorontsov Date: Tue, 7 Feb 2012 06:49:51 +0000 (+0400) Subject: sysrq: Properly check for kernel threads X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=d3a532a9c617106a0169232d40164ee35d0440b5;p=~shefty%2Frdma-dev.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 a1bcad7ef73..8db9125133b 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); }