<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
    <title></title>
  </head>
  <body bgcolor="#ffffff" text="#000000">
    <tt>On 04/19/2011 05:20 PM, Sunil Mushran wrote:</tt>
    <blockquote cite="mid:4DAE26BA.3010203@oracle.com" type="cite">
      <meta content="text/html; charset=ISO-8859-1"
        http-equiv="Content-Type">
      <tt> On 04/19/2011 12:48 PM, Joel Becker wrote:<br>
      </tt>
      <blockquote cite="mid:20110419194840.GA27826@noexit" type="cite">
        <pre wrap=""><tt>        You're too late here.  This is in the echo process (bash,
really).  getdents() isn't happening.
        The problem is almost certainly in configfs.  It's a race
between setup and teardown of the virtual attribute files.  If anyone
else has a cycle to look at it, great, otherwise I'll try to get to it
later this week.
</tt></pre>
      </blockquote>
      <tt><br>
        <span id="mainframespan"> So we ran into it internally. This is
          what I wrote in the bug.<br>
          <br>
          <i>@ The matching code in configfs_readir() is:</i> <br>
          <i>@&nbsp;&nbsp;&nbsp;&nbsp; name = configfs_get_name(next);</i> <br>
          <i>@&nbsp;&nbsp;&nbsp;&nbsp; len = strlen(name);</i> <br>
          <i>@&nbsp;&nbsp;&nbsp;&nbsp; if (next-&gt;s_dentry)</i> <br>
          <i>@&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ino =
            next-&gt;s_dentry-&gt;d_inode-&gt;i_ino;&nbsp;&nbsp; &lt;===</i> <br>
          <i>@&nbsp;&nbsp;&nbsp;&nbsp; else</i> <br>
          <i>@&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ino = iunique(configfs_sb, 2);</i> <br>
          <i>@ .</i> <br>
          <i>@&nbsp;&nbsp;&nbsp;&nbsp; if (filldir(dirent, name, len, filp-&gt;f_pos, ino,</i>
          <br>
          <i>@&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dt_type(next)) &lt; 0)</i> <br>
          <i>@&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;</i> <br>
          <i>@ .</i> <br>
          <i>@ The oops indicates that next-&gt;s_dentry-&gt;d_inode is
            NULL.</i></span><br>
        <br>
      </tt><tt><span id="mainframespan">Joel, does this give you any
          clues?<br>
        </span><br>
      </tt> <tt>BTW, thanks for the testcase. And yes, I can reproduce
        it easily.<br>
      </tt></blockquote>
    <tt><br>
      configfs_readdir() is racing configfs_d_delete(). And I cannot<br>
      see how we can use the existing spinlock to prevent the race.<br>
      <br>
      sysfs uses a coarse lock sysfs_mutex to prevent against this.<br>
      I think we should do the same in configfs.<br>
      <br>
      Comments?<br>
      <br>
      =============================================<br>
      commit 3007e997de91ec59af39a3f9c91595b31ae6e08b<br>
      Author: Tejun Heo <a class="moz-txt-link-rfc2396E" href="mailto:htejun@gmail.com">&lt;htejun@gmail.com&gt;</a><br>
      Date:&nbsp;&nbsp; Thu Jun 14 04:27:23 2007 +0900<br>
      <br>
      &nbsp;&nbsp;&nbsp; sysfs: use sysfs_mutex to protect the sysfs_dirent tree<br>
      &nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; As kobj sysfs dentries and inodes are gonna be made
      reclaimable,<br>
      &nbsp;&nbsp;&nbsp; i_mutex can't be used to protect sysfs_dirent tree.&nbsp; Use
      sysfs_mutex<br>
      &nbsp;&nbsp;&nbsp; globally instead.&nbsp; As the whole tree is protected with
      sysfs_mutex,<br>
      &nbsp;&nbsp;&nbsp; there is no reason to keep sysfs_rename_sem.&nbsp; Drop it.<br>
      &nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; While at it, add docbook comments to functions which require<br>
      &nbsp;&nbsp;&nbsp; sysfs_mutex locking.<br>
      &nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; Signed-off-by: Tejun Heo <a class="moz-txt-link-rfc2396E" href="mailto:htejun@gmail.com">&lt;htejun@gmail.com&gt;</a><br>
      &nbsp;&nbsp;&nbsp; Signed-off-by: Greg Kroah-Hartman <a class="moz-txt-link-rfc2396E" href="mailto:gregkh@suse.de">&lt;gregkh@suse.de&gt;</a><br>
    </tt><tt>=============================================</tt><br>
  </body>
</html>