• Joel Becker's avatar
    configfs: Fix race between configfs_readdir() and configfs_d_iput() · 24307aa1
    Joel Becker authored
    configfs_readdir() will use the existing inode numbers of inodes in the
    dcache, but it makes them up for attribute files that aren't currently
    instantiated.  There is a race where a closing attribute file can be
    tearing down at the same time as configfs_readdir() is trying to get its
    inode number.
    
    We want to get the inode number of open attribute files, because they
    should match while instantiated.  We can't lock down the transition
    where dentry->d_inode is set to NULL, so we just check for NULL there.
    We can, however, ensure that an inode we find isn't iput() in
    configfs_d_iput() until after we've accessed it.
    Signed-off-by: default avatarJoel Becker <jlbec@evilplan.org>
    24307aa1
dir.c 44.3 KB