• Tejun Heo's avatar
    sysfs: fix race condition around sd->s_dentry, take#2 · dd14cbc9
    Tejun Heo authored
    Allowing attribute and symlink dentries to be reclaimed means
    sd->s_dentry can change dynamically.  However, updates to the field
    are unsynchronized leading to race conditions.  This patch adds
    sysfs_lock and use it to synchronize updates to sd->s_dentry.
    
    Due to the locking around ->d_iput, the check in sysfs_drop_dentry()
    is complex.  sysfs_lock only protect sd->s_dentry pointer itself.  The
    validity of the dentry is protected by dcache_lock, so whether dentry
    is alive or not can only be tested while holding both locks.
    
    This is minimal backport of sysfs_drop_dentry() rewrite in devel
    branch.
    Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    dd14cbc9
dir.c 16.4 KB