]> Zhao Yanbai Git Server - minix.git/commitdiff
PM: fix alarm signal delivery 71/3371/1
authorDavid van Moolenbroek <david@minix3.org>
Sat, 22 Oct 2016 11:46:28 +0000 (11:46 +0000)
committerDavid van Moolenbroek <david@minix3.org>
Mon, 24 Oct 2016 12:11:52 +0000 (12:11 +0000)
As of change git-87c599d, when processing CLOCK notifications, PM no
longer set the current process pointer 'mp'.  That pointer is however
used when delivering signals through check_sig(), to see whether the
current process may deliver a signal to the target process.  As a
result, delivering SIGALARM signals used a previous pointer in these
checks, causing alarm signals not to be delivered in some cases.
This patch ensures that alarm signals are again delivered with PM as
current process.

Change-Id: I94ccbe8b71289df0e1d6d67928e55297bbc28360

minix/servers/pm/alarm.c

index e10f84dcafeab385eae19383407cf49b5cb109dc..560a1b27976791bd3a39bc5904fba4301446b42c 100644 (file)
@@ -338,5 +338,7 @@ cause_sigalrm(int arg)
        set_alarm(rmp, rmp->mp_interval[ITIMER_REAL]);
   else rmp->mp_flags &= ~ALARM_ON;
 
+  mp = &mproc[0];              /* pretend the signal comes from PM */
+
   check_sig(rmp->mp_pid, SIGALRM, FALSE /* ksig */);
 }