[CRIU] [PATCH] tmpfs: don't try to dump mountpoint at 0 fd
Tycho Andersen
tycho.andersen at canonical.com
Tue Jan 19 08:15:05 PST 2016
If we happen to get 0 as the fd for the mountpoint, there is an error:
(00.280617) Dumping task cwd id 0x2b root id 0x2b
(00.280697) mnt: Dumping mountpoints
(00.280702) mnt: 132: 34:/ @ ./run/lock
(00.280714) mnt: Path `/run/lock' resolved to `./run/lock' mountpoint
tar: /proc/self/fd/0: Cannot open: Not a directory
tar: Error is not recoverable: exiting now
(00.283581) Error (util.c:666): exited, status=2
(00.283598) Error (mount.c:1220): mnt: Can't dump tmpfs content
Instead, let's not ever use 0 as the mountpoint fd.
Signed-off-by: Tycho Andersen <tycho.andersen at canonical.com>
---
mount.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/mount.c b/mount.c
index 9d5667a..ae7bfae 100644
--- a/mount.c
+++ b/mount.c
@@ -1190,6 +1190,13 @@ static int tmpfs_dump(struct mount_info *pm)
if (fd < 0)
return -1;
+ /* if fd happens to be 0 here, we need to move it to something
+ * non-zero, because cr_system_userns closes STDIN_FILENO as we are not
+ * interested in passing stdin to tar.
+ */
+ if (move_img_fd(&fd, STDIN_FILENO) < 0)
+ goto out;
+
if (fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) & ~FD_CLOEXEC) == -1) {
pr_perror("Can not drop FD_CLOEXEC");
goto out;
--
2.7.0.rc3
More information about the CRIU
mailing list