lxccontainer: fix temporary path removal

Needed-by: https://github.com/lxc/lxd/issues/5227

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
This commit is contained in:
Christian Brauner 2018-10-30 23:48:14 +01:00 committed by Stéphane Graber
parent 6437f1c173
commit ecce75a68c
No known key found for this signature in database
GPG Key ID: C638974D64792D67

View File

@ -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,6 +5091,9 @@ static int do_lxcapi_mount(struct lxc_container *c, const char *source,
ret = 0;
(void)umount2(template, MNT_DETACH);
if (is_dir)
(void)rmdir(template);
else
(void)unlink(template);
out: