diff --git a/servers/fs/misc.c b/servers/fs/misc.c index 4fd694784..79ec55d16 100644 --- a/servers/fs/misc.c +++ b/servers/fs/misc.c @@ -258,6 +258,9 @@ PUBLIC int do_reboot() /* Only PM may make this call directly. */ if (who != PM_PROC_NR) return(EGENERIC); + /* Sync before the drivers die. */ + do_sync(); + /* Do exit processing for all leftover processes and servers. */ for (i = 0; i < NR_PROCS; i++) { m_in.slot1 = i; do_exit(); } diff --git a/servers/pm/signal.c b/servers/pm/signal.c index 6765d4735..25534d8c4 100644 --- a/servers/pm/signal.c +++ b/servers/pm/signal.c @@ -524,6 +524,7 @@ int signo; /* signal to send to process (0 to _NSIG) */ if (proc_id == 0 && mp->mp_procgrp != rmp->mp_procgrp) continue; if (proc_id == -1 && rmp->mp_pid <= INIT_PID) continue; if (proc_id < -1 && rmp->mp_procgrp != -proc_id) continue; + if (rmp->mp_procgrp == 0) continue; /* Check for permission. */ if (mp->mp_effuid != SUPER_USER