The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxc/pull/3411
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) === otherwise weird things might happen. Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com>
From 661e7671a2f21115c5a7198d9a1abaaa2bc7e62b Mon Sep 17 00:00:00 2001 From: Christian Brauner <christian.brau...@ubuntu.com> Date: Thu, 14 May 2020 15:52:39 +0200 Subject: [PATCH] console: only create detached mount when a console is requested otherwise weird things might happen. Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com> --- src/lxc/conf.c | 16 +++++++++------- src/lxc/terminal.h | 8 ++++++++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/lxc/conf.c b/src/lxc/conf.c index 3753fd7a62..76c10dc374 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -1583,7 +1583,7 @@ static int lxc_setup_dev_console(const struct lxc_rootfs *rootfs, char path[PATH_MAX]; char *rootfs_path = rootfs->path ? rootfs->mount : ""; - if (console->path && !strcmp(console->path, "none")) + if (!lxc_terminal_path(console)) return 0; ret = snprintf(path, sizeof(path), "%s/dev/console", rootfs_path); @@ -1633,7 +1633,7 @@ static int lxc_setup_ttydir_console(const struct lxc_rootfs *rootfs, char path[PATH_MAX], lxcpath[PATH_MAX]; char *rootfs_path = rootfs->path ? rootfs->mount : ""; - if (console->path && !strcmp(console->path, "none")) + if (!lxc_terminal_path(console)) return 0; /* create rootfs/dev/<ttydir> directory */ @@ -3316,11 +3316,13 @@ int lxc_setup(struct lxc_handler *handler) return log_error(-1, "Failed to send network device names and ifindices to parent"); } - pts_mnt_fd = open_tree(-EBADF, lxc_conf->console.name, - OPEN_TREE_CLONE | OPEN_TREE_CLOEXEC | AT_EMPTY_PATH); - if (pts_mnt_fd < 0) - SYSTRACE("Failed to create detached mount for container's console \"%s\"", - lxc_conf->console.name); + if (lxc_terminal_path(&lxc_conf->console)) { + pts_mnt_fd = open_tree(-EBADF, lxc_conf->console.name, + OPEN_TREE_CLONE | OPEN_TREE_CLOEXEC | AT_EMPTY_PATH); + if (pts_mnt_fd < 0) + SYSTRACE("Failed to create detached mount for container's console \"%s\"", + lxc_conf->console.name); + } if (lxc_conf->autodev > 0) { ret = mount_autodev(name, &lxc_conf->rootfs, lxc_conf->autodevtmpfssize, lxcpath); diff --git a/src/lxc/terminal.h b/src/lxc/terminal.h index 1283cb3377..aa99c27eeb 100644 --- a/src/lxc/terminal.h +++ b/src/lxc/terminal.h @@ -254,4 +254,12 @@ extern void lxc_terminal_init(struct lxc_terminal *terminal); extern int lxc_terminal_map_ids(struct lxc_conf *c, struct lxc_terminal *terminal); +static inline const char *lxc_terminal_path(const struct lxc_terminal *terminal) +{ + if (terminal->path && strcmp(terminal->path, "none")) + return terminal->path; + + return NULL; +} + #endif /* __LXC_TERMINAL_H */
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel