• Eric W. Biederman's avatar
    sysfs: Serialize updates to the vfs inode · f8d4f618
    Eric W. Biederman authored
    The vfs depends upon filesystem methods to update the
    vfs inode.   Sysfs adds to the normal number of places
    where the vfs inode is updated by also updatng the
    vfs inode in sysfs_refresh_inode.
    
    Typically the inode mutex is used to serialize updates
    to the vfs inode, but grabbing the inode mutex in
    sysfs_permission and sysfs_getattr causes deadlocks,
    because sometimes the vfs calls those operations with
    the inode mutex held.  Therefore sysfs  can not use the
    inode mutex to serial updates to the vfs inode.
    
    The sysfs_mutex is acquired in all of the routines
    where sysfs updates the vfs inode, and with a small
    change we can consistently protext sysfs vfs inode
    updates with the sysfs_mutex. To protect the sysfs
    vfs inode updates with the sysfs_mutex simply requires
    extending the scope of sysfs_mutex in sysfs_setattr
    over inode_setattr, and over inode_change_ok (so we
    have an unchanging inode when we perform the check).
    Acked-by: default avatarSerge Hallyn <serue@us.ibm.com>
    Signed-off-by: default avatarEric W. Biederman <ebiederm@aristanetworks.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    f8d4f618
inode.c 8.26 KB