Skip to content
  • Tejun Heo's avatar
    sysfs: give different locking key to regular and bin files · a8b14744
    Tejun Heo authored
    027a485d
    
     ("sysfs: use a separate locking class for open files
    depending on mmap") assigned different lockdep key to
    sysfs_open_file->mutex depending on whether the file implements mmap
    or not in an attempt to avoid spurious lockdep warning caused by
    merging of regular and bin file paths.
    
    While this restored some of the original behavior of using different
    locks (at least lockdep is concerned) for the different clases of
    files.  The restoration wasn't full because now the lockdep key
    assignment depends on whether the file has mmap or not instead of
    whether it's a regular file or not.
    
    This means that bin files which don't implement mmap will get assigned
    the same lockdep class as regular files.  This is problematic because
    file_operations for bin files still implements the mmap file operation
    and checking whether the sysfs file actually implements mmap happens
    in the file operation after grabbing @sysfs_open_file->mutex.  We
    still end up adding locking dependency from mmap locking to
    sysfs_open_file->mutex to the regular file mutex which triggers
    spurious circular locking warning.
    
    Fix it by restoring the original behavior fully by differentiating
    lockdep key by whether the file is regular or bin, instead of the
    existence of mmap.
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Reported-by: default avatarDave Jones <davej@redhat.com>
    Link: http://lkml.kernel.org/g/20131203184324.GA11320@redhat.com
    
    
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    a8b14744