f310aefcbd
When a process forks, VFS is informed on behalf of the child. This is correct, because otherwise signals to the new child could get lost. However, that means that the parent is not blocked from being killed by a signal while the child is blocked on this VFS call. As a result, by the time that the VFS reply comes in, the parent may already be dead, and the child may thus have been assigned a new parent: INIT. Previously, PM would blindly reply to the parent when the VFS reply for the fork came in. Thus, it could end up sending a reply to INIT, even though INIT did not issue the fork(2) call. This could end up satisfying a different call from INIT (typically waitpid(2)) and then cause an error when that other call was complete. It would be possible to set VFS_CALL on both forking parent and child. This patch instead adds a flag (NEW_PARENT) to note that a process's parent has changed during a VFS call. Change-Id: Iad930b2e441db54fe6f7d2fd011f0f6a26e2923d |
||
---|---|---|
.. | ||
alarm.c | ||
break.c | ||
const.h | ||
exec.c | ||
forkexit.c | ||
getset.c | ||
glo.h | ||
main.c | ||
Makefile | ||
mcontext.c | ||
misc.c | ||
mproc.h | ||
param.h | ||
pm.h | ||
profile.c | ||
proto.h | ||
schedule.c | ||
signal.c | ||
table.c | ||
time.c | ||
trace.c | ||
type.h | ||
utility.c |