<div dir="ltr"><div><div>So I&#39;m adding support for Android binder, which assumes that a process will open the device only once. Based on the existing code flow, the device is opened two times during restore.<br><br></div>I see the following sequence open() -&gt; mmap() -&gt; close() -&gt; open()<br></div>This causes incorrect bookkeeping insider binder driver.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jun 26, 2015 at 5:25 AM, Pavel Emelyanov <span dir="ltr">&lt;<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 06/26/2015 09:47 AM, CRIU criu wrote:<br>
&gt; Hi,<br>
&gt;<br>
&gt; Does CRIU do multiple open() on a regular file during restore?<br>
<br>
</span>If it&#39;s opened and mapped multiple times, then yes. If a file is opened<br>
once and then fd is inherited then open is called once.<br>
<span class=""><br>
&gt; If yes, multiple open() on some device files may lead to incorrect<br>
&gt; bookkeeping inside the kernel driver.<br>
<br>
</span>It depends on the device.<br>
<span class=""><br>
&gt; Please correct me if my understanding is wrong. Thanks!<br>
&gt;<br>
&gt; I see the following code being executed:<br>
&gt; prepare_mappings() -&gt; premap_priv_vmas() -&gt;map_private_vma()-&gt;get_filemap_fd(vma)<br>
&gt;<br>
&gt; This is followed by close(vma-e-&gt;fd)<br>
<br>
</span>Yes, this is about mapped files. Right now criu doesn&#39;t support for<br>
mapped devices except for /dev/zero, so we&#39;re (still) safe here :)<br>
<span class="HOEnZb"><font color="#888888"><br>
-- Pavel<br>
<br>
</font></span></blockquote></div><br></div>