<p dir="ltr"><br>
On Jan 21, 2016 7:27 PM, &quot;Andrew Vagin&quot; &lt;<a href="mailto:avagin@virtuozzo.com">avagin@virtuozzo.com</a>&gt; wrote:<br>
&gt;<br>
&gt; On Tue, Jan 19, 2016 at 09:15:05AM -0700, Tycho Andersen wrote:<br>
&gt; &gt; If we happen to get 0 as the fd for the mountpoint, there is an error:<br>
&gt; &gt;<br>
&gt; &gt; (00.280617) Dumping task cwd id 0x2b root id 0x2b<br>
&gt; &gt; (00.280697) mnt: Dumping mountpoints<br>
&gt; &gt; (00.280702) mnt:        132: 34:/ @ ./run/lock<br>
&gt; &gt; (00.280714) mnt: Path `/run/lock&#39; resolved to `./run/lock&#39; mountpoint<br>
&gt; &gt; tar: /proc/self/fd/0: Cannot open: Not a directory<br>
&gt; &gt; tar: Error is not recoverable: exiting now<br>
&gt; &gt; (00.283581) Error (util.c:666): exited, status=2<br>
&gt; &gt; (00.283598) Error (mount.c:1220): mnt: Can&#39;t dump tmpfs content<br>
&gt; &gt;<br>
&gt; &gt; Instead, let&#39;s not ever use 0 as the mountpoint fd.<br>
&gt; &gt;<br>
&gt; &gt; Signed-off-by: Tycho Andersen &lt;<a href="mailto:tycho.andersen@canonical.com">tycho.andersen@canonical.com</a>&gt;<br>
&gt; &gt; ---<br>
&gt; &gt;  mount.c | 7 +++++++<br>
&gt; &gt;  1 file changed, 7 insertions(+)<br>
&gt; &gt;<br>
&gt; &gt; diff --git a/mount.c b/mount.c<br>
&gt; &gt; index 9d5667a..ae7bfae 100644<br>
&gt; &gt; --- a/mount.c<br>
&gt; &gt; +++ b/mount.c<br>
&gt; &gt; @@ -1190,6 +1190,13 @@ static int tmpfs_dump(struct mount_info *pm)<br>
&gt; &gt;       if (fd &lt; 0)<br>
&gt; &gt;               return -1;<br>
&gt; &gt;<br>
&gt; &gt; +     /* if fd happens to be 0 here, we need to move it to something<br>
&gt; &gt; +      * non-zero, because cr_system_userns closes STDIN_FILENO as we are not<br>
&gt; &gt; +      * interested in passing stdin to tar.<br>
&gt; &gt; +      */<br>
&gt; &gt; +     if (move_img_fd(&amp;fd, STDIN_FILENO) &lt; 0)<br>
&gt; &gt; +             goto out;<br>
&gt;<br>
&gt; Should we handle a case when fd is equal to STDOUT_FILENO or<br>
&gt; STDERR_FILENO?</p>
<p dir="ltr">Yes, I think so. I was thinking initially since we don&#39;t close them that it would be okay, but since we move them as well and potentially put the log fd in place, we could get the same problem. </p>
<p dir="ltr">I&#39;ll see about sending a patch soon, thanks.</p>
<p dir="ltr">Tycho </p>
<p dir="ltr">&gt; &gt; +<br>
&gt; &gt;       if (fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) &amp; ~FD_CLOEXEC) == -1) {<br>
&gt; &gt;               pr_perror(&quot;Can not drop FD_CLOEXEC&quot;);<br>
&gt; &gt;               goto out;<br>
&gt; &gt; --<br>
&gt; &gt; 2.7.0.rc3<br>
&gt; &gt;<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; CRIU mailing list<br>
&gt; &gt; <a href="mailto:CRIU@openvz.org">CRIU@openvz.org</a><br>
&gt; &gt; <a href="https://lists.openvz.org/mailman/listinfo/criu">https://lists.openvz.org/mailman/listinfo/criu</a><br>
</p>