From edefb7b35fae19813e45c3b036c3f50b04c324c3 Mon Sep 17 00:00:00 2001 From: Thomas Veerman Date: Tue, 4 Sep 2012 12:12:32 +0000 Subject: [PATCH] PM: don't deliver signals to VM --- servers/pm/signal.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/servers/pm/signal.c b/servers/pm/signal.c index bb5ccd5a9..5e2901f72 100644 --- a/servers/pm/signal.c +++ b/servers/pm/signal.c @@ -530,6 +530,11 @@ int ksig; /* non-zero means signal comes from kernel */ if (proc_id == -1 && signo == SIGKILL && (rmp->mp_flags & PRIV_PROC)) continue; + /* Skip VM entirely as it might lead to a deadlock with its signal + * manager if the manager page faults at the same time. + */ + if (rmp->mp_endpoint == VM_PROC_NR) continue; + /* Disallow lethal signals sent by user processes to sys processes. */ if (!ksig && SIGS_IS_LETHAL(signo) && (rmp->mp_flags & PRIV_PROC)) { error_code = EPERM; -- 2.44.0