From a91d897a7b5ef5ef07ede977fa35d5895947665a Mon Sep 17 00:00:00 2001 From: Ferenc Wagner Date: Wed, 12 May 2010 23:47:55 +0200 Subject: [PATCH] remove pivotdir only if it was created by us The removal does not account for possible leading path components that were also created during creation of pivotdir. Signed-off-by: Ferenc Wagner Signed-off-by: Daniel Lezcano --- src/lxc/conf.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/lxc/conf.c b/src/lxc/conf.c index 57b8c1a3c..39aa98202 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -464,6 +464,7 @@ static int setup_rootfs_pivot_root(const char *rootfs, const char *pivotdir) void *cbparm[2]; struct lxc_list mountlist, *iterator; int ok, still_mounted, last_still_mounted; + int remove_pivotdir = 0; /* change into new root fs */ if (chdir(rootfs)) { @@ -484,6 +485,7 @@ static int setup_rootfs_pivot_root(const char *rootfs, const char *pivotdir) return -1; } + remove_pivotdir = 1; DEBUG("created '%s' directory", path); } @@ -573,8 +575,8 @@ static int setup_rootfs_pivot_root(const char *rootfs, const char *pivotdir) /* remove temporary mount point, we don't consider the removing * as fatal */ - if (rmdir(pivotdir)) - WARN("can't remove mountpoint: %m"); + if (remove_pivotdir && rmdir(pivotdir)) + WARN("can't remove mountpoint '%s': %m", pivotdir); INFO("pivoted to '%s'", rootfs); return 0;