<div dir="ltr">You are correct, don&#39;t know why I didn&#39;t use just open to start with. A new version is on the way.<div class="gmail_extra"><br><div class="gmail_quote">2017-03-16 1:45 GMT+00:00 Andrei Vagin <span dir="ltr">&lt;<a href="mailto:avagin@virtuozzo.com" target="_blank">avagin@virtuozzo.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>On Tue, Mar 14, 2017 at 11:18:30PM +0000, rodrigo-bruno wrote:<br>
&gt; ---<br>
&gt;  criu/image.c | 15 ++++++++++-----<br>
&gt;  criu/util.c  |  5 +++++<br>
&gt;  2 files changed, 15 insertions(+), 5 deletions(-)<br>
&gt;<br>
&gt; diff --git a/criu/image.c b/criu/image.c<br>
&gt; index 57d3c7b..e1bcea5 100644<br>
&gt; --- a/criu/image.c<br>
&gt; +++ b/criu/image.c<br>
&gt; @@ -332,9 +332,14 @@ int do_open_remote_image(int dfd, char *path, int flags)<br>
&gt;       /* When using namespaces, the current dir is changed so we need to<br>
&gt;        * change to previous working dir and back to correctly open the image<br>
&gt;        * proxy and cache sockets. */<br>
&gt; -     int save = dirfd(opendir(&quot;.&quot;));<br>
&gt; +     DIR *save = opendir(&quot;.&quot;);<br>
<br>
</span>you use only a file descriptor, so I think you can use open()<br>
<br>
        int old_cwd;<br>
<br>
        old_cwd = open(&quot;.&quot;, O_PATH);<br>
        if (old_cwd &lt; ) {<br>
                ...<br>
<div><div class="m_-4706333337570932392h5"><br>
<br>
&gt; +     if (save == NULL) {<br>
&gt; +             pr_perror(&quot;unable to open current working directory&quot;);<br>
&gt; +             return -1;<br>
&gt; +     }<br>
&gt; +<br>
&gt;       if (fchdir(get_service_fd(IMG_FD_<wbr>OFF)) &lt; 0) {<br>
&gt; -             pr_debug(&quot;fchdir to dfd failed!\n&quot;);<br>
&gt; +             pr_perror(&quot;fchdir to dfd failed!\n&quot;);<br>
&gt;               return -1;<br>
&gt;       }<br>
&gt;<br>
&gt; @@ -352,11 +357,11 @@ int do_open_remote_image(int dfd, char *path, int flags)<br>
&gt;               ret = write_remote_image_connection(<wbr>snapshot_id, path, O_WRONLY);<br>
&gt;       }<br>
&gt;<br>
&gt; -     if (fchdir(save) &lt; 0) {<br>
&gt; -             pr_debug(&quot;fchdir to save failed!\n&quot;);<br>
&gt; +     if (fchdir(dirfd(save)) &lt; 0) {<br>
&gt; +             pr_perror(&quot;fchdir to save failed&quot;);<br>
&gt;               return -1;<br>
&gt;       }<br>
&gt; -     close(save);<br>
&gt; +     closedir(save);<br>
&gt;<br>
&gt;       return ret;<br>
&gt;  }<br>
&gt; diff --git a/criu/util.c b/criu/util.c<br>
&gt; index 9fd8ba2..4156bf2 100644<br>
&gt; --- a/criu/util.c<br>
&gt; +++ b/criu/util.c<br>
&gt; @@ -522,6 +522,11 @@ int copy_file(int fd_in, int fd_out, size_t bytes)<br>
&gt;       char *buffer = (char*) malloc(chunk);<br>
&gt;       ssize_t ret;<br>
&gt;<br>
&gt; +     if (buffer == NULL) {<br>
&gt; +             pr_perror(&quot;failed to allocate buffer to copy file&quot;);<br>
&gt; +             return -1;<br>
&gt; +     }<br>
&gt; +<br>
&gt;       while (1) {<br>
&gt;               if (opts.remote) {<br>
&gt;                       ret = read(fd_in, buffer, chunk);<br>
&gt; --<br>
&gt; 2.1.4<br>
&gt;<br>
</div></div>&gt; ______________________________<wbr>_________________<br>
&gt; CRIU mailing list<br>
&gt; <a href="mailto:CRIU@openvz.org" target="_blank">CRIU@openvz.org</a><br>
&gt; <a href="https://lists.openvz.org/mailman/listinfo/criu" rel="noreferrer" target="_blank">https://lists.openvz.org/mailm<wbr>an/listinfo/criu</a><br>
</blockquote></div><br></div></div>