Follow-up for
c26d7837bb08508c8d906d849dff8f1bc465063e
waitpid() doesn't support WEXITED and returns -1 (EINVAL),
which results in the intermediate close process not getting
reaped.
Fixes https://github.com/systemd/systemd/issues/26744#issuecomment-
1628240782
*
* We usually prefer calling waitid(), but before kernel 4.7 it didn't support __WCLONE while
* waitpid() did. Hence let's use waitpid() here, it's good enough for our purposes here. */
- for (;;) {
- if (waitpid(pid, NULL, WEXITED|__WCLONE) >= 0 || errno != EINTR)
+ for (;;)
+ if (waitpid(pid, NULL, __WCLONE) >= 0 || errno != EINTR)
break;
- }
}
return -EBADF; /* return an invalidated fd */