From ecce75a68ccbe347ce04a2c7e085dcb10aeb2251 Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Tue, 30 Oct 2018 23:48:14 +0100 Subject: [PATCH] lxccontainer: fix temporary path removal Needed-by: https://github.com/lxc/lxd/issues/5227 Signed-off-by: Christian Brauner --- src/lxc/lxccontainer.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c index 6c35ab653..83ff24253 100644 --- a/src/lxc/lxccontainer.c +++ b/src/lxc/lxccontainer.c @@ -4976,6 +4976,7 @@ static int do_lxcapi_mount(struct lxc_container *c, const char *source, char template[PATH_MAX], path[PATH_MAX]; pid_t pid, init_pid; struct stat sb; + bool is_dir; int ret = -1, fd = -EBADF; if (!c || !c->lxc_conf) { @@ -5006,7 +5007,8 @@ static int do_lxcapi_mount(struct lxc_container *c, const char *source, } } - if (S_ISDIR(sb.st_mode)) { + is_dir = (S_ISDIR(sb.st_mode) != 0); + if (is_dir) { sret = mkdtemp(template); if (!sret) { SYSERROR("Could not create shmounts temporary dir"); @@ -5089,7 +5091,10 @@ static int do_lxcapi_mount(struct lxc_container *c, const char *source, ret = 0; (void)umount2(template, MNT_DETACH); - (void)unlink(template); + if (is_dir) + (void)rmdir(template); + else + (void)unlink(template); out: if (fd >= 0) -- 2.39.2