1
0
mirror of https://github.com/systemd/systemd.git synced 2024-10-28 03:25:31 +03:00

core: don't pass uninitialzed PIDs to pid_is_unwaited()

Since 5fd9b2c546 passing a pid of 0 to
pid_is_unwaited() and pid_is_live() is considered as a request on the
current process, similar how the other calls in process-util.c handle a
PID of 0. This broke service.c, which passes a 0 PID and expects it to
be considered an unwaited process.

This fix make sure we can boot again.
This commit is contained in:
Lennart Poettering 2015-10-27 17:56:12 +01:00
parent 0d06968129
commit 76583ef261

View File

@ -940,7 +940,8 @@ static int service_coldplug(Unit *u) {
return r;
}
if (pid_is_unwaited(s->main_pid) &&
if (s->main_pid > 0 &&
pid_is_unwaited(s->main_pid) &&
((s->deserialized_state == SERVICE_START && IN_SET(s->type, SERVICE_FORKING, SERVICE_DBUS, SERVICE_ONESHOT, SERVICE_NOTIFY)) ||
IN_SET(s->deserialized_state,
SERVICE_START, SERVICE_START_POST,
@ -952,7 +953,8 @@ static int service_coldplug(Unit *u) {
return r;
}
if (pid_is_unwaited(s->control_pid) &&
if (s->control_pid > 0 &&
pid_is_unwaited(s->control_pid) &&
IN_SET(s->deserialized_state,
SERVICE_START_PRE, SERVICE_START, SERVICE_START_POST,
SERVICE_RELOAD,