chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
util: modernize readlink_malloc() a bit
[elogind.git]
/
src
/
machine
/
machinectl.c
diff --git
a/src/machine/machinectl.c
b/src/machine/machinectl.c
index f5485b3d4209c4ba24b6ab264814a63b664f13ea..b3a70188a468130703bcea24fef2ce3d22e00aa8 100644
(file)
--- a/
src/machine/machinectl.c
+++ b/
src/machine/machinectl.c
@@
-304,10
+304,8
@@
static int show(sd_bus *bus, char **args, unsigned n) {
/* If no argument is specified, inspect the manager
* itself */
r = show_properties(bus, "/org/freedesktop/machine1", &new_line);
/* If no argument is specified, inspect the manager
* itself */
r = show_properties(bus, "/org/freedesktop/machine1", &new_line);
- if (r < 0) {
- log_error("Failed to query properties: %s", strerror(-r));
+ if (r < 0)
return r;
return r;
- }
}
for (i = 1; i < n; i++) {
}
for (i = 1; i < n; i++) {
@@
-399,7
+397,7
@@
static int terminate_machine(sd_bus *bus, char **args, unsigned n) {
static int openpt_in_namespace(pid_t pid, int flags) {
_cleanup_close_pipe_ int pair[2] = { -1, -1 };
static int openpt_in_namespace(pid_t pid, int flags) {
_cleanup_close_pipe_ int pair[2] = { -1, -1 };
- _cleanup_close_ int nsfd = -1, rootfd = -1;
+ _cleanup_close_ int
pidnsfd = -1, mnt
nsfd = -1, rootfd = -1;
union {
struct cmsghdr cmsghdr;
uint8_t buf[CMSG_SPACE(sizeof(int))];
union {
struct cmsghdr cmsghdr;
uint8_t buf[CMSG_SPACE(sizeof(int))];
@@
-413,7
+411,7
@@
static int openpt_in_namespace(pid_t pid, int flags) {
pid_t child;
siginfo_t si;
pid_t child;
siginfo_t si;
- r = namespace_open(pid, &nsfd, &rootfd);
+ r = namespace_open(pid, &
pidnsfd, &mnt
nsfd, &rootfd);
if (r < 0)
return r;
if (r < 0)
return r;
@@
-428,7
+426,7
@@
static int openpt_in_namespace(pid_t pid, int flags) {
close_nointr_nofail(pair[0]);
pair[0] = -1;
close_nointr_nofail(pair[0]);
pair[0] = -1;
- r = namespace_enter(nsfd, rootfd);
+ r = namespace_enter(
pidnsfd, mnt
nsfd, rootfd);
if (r < 0)
_exit(EXIT_FAILURE);
if (r < 0)
_exit(EXIT_FAILURE);
@@
-453,6
+451,12
@@
static int openpt_in_namespace(pid_t pid, int flags) {
close_nointr_nofail(pair[1]);
pair[1] = -1;
close_nointr_nofail(pair[1]);
pair[1] = -1;
+ r = wait_for_terminate(child, &si);
+ if (r < 0 || si.si_code != CLD_EXITED || si.si_status != EXIT_SUCCESS) {
+
+ return r < 0 ? r : -EIO;
+ }
+
if (recvmsg(pair[0], &mh, MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) < 0)
return -errno;
if (recvmsg(pair[0], &mh, MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) < 0)
return -errno;
@@
-472,14
+476,8
@@
static int openpt_in_namespace(pid_t pid, int flags) {
master = fds[0];
}
master = fds[0];
}
- r = wait_for_terminate(child, &si);
- if (r < 0 || si.si_code != CLD_EXITED || si.si_status != EXIT_SUCCESS || master < 0) {
-
- if (master >= 0)
- close_nointr_nofail(master);
-
- return r < 0 ? r : -EIO;
- }
+ if (master < 0)
+ return -EIO;
return master;
}
return master;
}