[lxc-devel] [PATCH 1/2] remove pivotdir only if it was created by us

Ferenc Wagner wferi at niif.hu
Wed May 12 17:04:30 UTC 2010


The removal does not account for possible leading path components that
were also created during creation of pivotdir.

Signed-off-by: Ferenc Wagner <wferi at niif.hu>
---
 src/lxc/conf.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index 2b8ddf4..6d9b6b0 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;
-- 
1.6.5





More information about the lxc-devel mailing list