]> Zhao Yanbai Git Server - minix.git/commitdiff
PM: don't deliver signals to VM
authorThomas Veerman <thomas@minix3.org>
Tue, 4 Sep 2012 12:12:32 +0000 (12:12 +0000)
committerThomas Veerman <thomas@minix3.org>
Mon, 17 Sep 2012 11:01:46 +0000 (11:01 +0000)
servers/pm/signal.c

index bb5ccd5a945e664a17ac6020123fac94516efa5f..5e2901f72733a3631fe95cf27351e914a6e5fe4f 100644 (file)
@@ -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;