Skip to content
  • Tejun Heo's avatar
    sysfs, kernfs: revamp sysfs_dirent active_ref lockdep annotation · 517e64f5
    Tejun Heo authored
    
    
    Currently, sysfs_dirent active_ref lockdep annotation uses
    attribute->[s]key as the lockdep key, which forces
    kernfs_create_file_ns() to assume that sysfs_dirent->priv is pointing
    to a struct attribute which may not be true for non-sysfs users.  This
    patch restructures the lockdep annotation such that
    
    * kernfs_ops contains lockdep_key which is used by default for files
      created kernfs_create_file_ns().
    
    * kernfs_create_file_ns_key() is introduced which takes an extra @key
      argument.  The created file will use the specified key for
      active_ref lockdep annotation.  If NULL is specified, lockdep for
      the file is disabled.
    
    * sysfs_add_file_mode_ns() is updated to use
      kernfs_create_file_ns_key() with the appropriate key from the
      attribute or NULL if ignore_lockdep is set.
    
    This makes the lockdep annotation properly contained in kernfs while
    allowing sysfs to cleanly keep its current behavior.  This patch
    doesn't introduce any behavior differences.
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    517e64f5