static int get_boot_id_for_machine(const char *machine, sd_id128_t *boot_id) {
_cleanup_close_pipe_ int pair[2] = { -1, -1 };
- _cleanup_close_ int nsfd = -1, rootfd = -1;
+ _cleanup_close_ int pidnsfd = -1, mntnsfd = -1, rootfd = -1;
pid_t pid, child;
siginfo_t si;
char buf[37];
if (r < 0)
return r;
- r = namespace_open(pid, &nsfd, &rootfd);
+ r = namespace_open(pid, &pidnsfd, &mntnsfd, &rootfd);
if (r < 0)
return r;
close_nointr_nofail(pair[0]);
pair[0] = -1;
- r = namespace_enter(nsfd, rootfd);
+ r = namespace_enter(pidnsfd, mntnsfd, rootfd);
if (r < 0)
_exit(EXIT_FAILURE);
close_nointr_nofail(pair[1]);
pair[1] = -1;
- k = recv(pair[0], buf, 36, 0);
- if (k != 36)
- return -EIO;
-
r = wait_for_terminate(child, &si);
if (r < 0 || si.si_code != CLD_EXITED || si.si_status != EXIT_SUCCESS)
return r < 0 ? r : -EIO;
+ k = recv(pair[0], buf, 36, 0);
+ if (k != 36)
+ return -EIO;
+
buf[36] = 0;
r = sd_id128_from_string(buf, boot_id);
if (r < 0)