• Al Viro's avatar
    debugfs: leave freeing a symlink body until inode eviction · 915f4f86
    Al Viro authored
    commit 0db59e59 upstream.
    
    As it is, we have debugfs_remove() racing with symlink traversals.
    Supply ->evict_inode() and do freeing there - inode will remain
    pinned until we are done with the symlink body.
    
    And rip the idiocy with checking if dentry is positive right after
    we'd verified debugfs_positive(), which is a stronger check...
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.2:
     - Plumb in debugfs_super_operations, which we didn't previously define
     - Call truncate_inode_pages() instead of truncate_inode_pages_final()
     - Call end_writeback() instead of clear_inode()]
    Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
    915f4f86
inode.c 15.3 KB