[CRIU] [PATCH] files: simplify fchroot()
Andrey Vagin
avagin at openvz.org
Mon Jun 13 22:16:34 PDT 2016
From: Andrew Vagin <avagin at virtuozzo.com>
We can call fchdir into the taget directory and call chroot(".")
Signed-off-by: Andrew Vagin <avagin at virtuozzo.com>
---
criu/files.c | 16 ++++------------
1 file changed, 4 insertions(+), 12 deletions(-)
diff --git a/criu/files.c b/criu/files.c
index e206dba..dfcb562 100644
--- a/criu/files.c
+++ b/criu/files.c
@@ -1224,26 +1224,18 @@ out:
static int fchroot(int fd)
{
- char fd_path[PSFDS];
- int proc;
-
/*
* There's no such thing in syscalls. We can emulate
- * it using the /proc/self/fd/ :)
- *
- * But since there might be no /proc mount in our mount
- * namespace, we will have to ... workaround it.
+ * it using fchdir()
*/
- proc = get_service_fd(PROC_FD_OFF);
- if (fchdir(proc) < 0) {
+ if (fchdir(fd) < 0) {
pr_perror("Can't chdir to proc");
return -1;
}
- sprintf(fd_path, "./self/fd/%d", fd);
- pr_debug("Going to chroot into %s\n", fd_path);
- return chroot(fd_path);
+ pr_debug("Going to chroot into /proc/self/fd/%d\n", fd);
+ return chroot(".");
}
int restore_fs(struct pstree_item *me)
--
2.7.4
More information about the CRIU
mailing list