• Tejun Heo's avatar
    kernfs: invoke dir_ops while holding active ref of the target node · 07c7530d
    Tejun Heo authored
    kernfs_dir_ops are currently being invoked without any active
    reference, which makes it tricky for the invoked operations to
    determine whether the objects associated those nodes are safe to
    access and will remain that way for the duration of such operations.
    
    kernfs already has active_ref mechanism to deal with this which makes
    the removal of a given node the synchronization point for gating the
    file operations.  There's no reason for dir_ops to be any different.
    Update the dir_ops handling so that active_ref is held while the
    dir_ops are executing.  This guarantees that while a dir_ops is
    executing the target nodes stay alive.
    
    As kernfs_dir_ops doesn't have any in-kernel user at this point, this
    doesn't affect anybody.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    07c7530d
dir.c 29.4 KB