• Tejun Heo's avatar
    kernfs: invoke kernfs_unmap_bin_file() directly from kernfs_deactivate() · ccf02aaf
    Tejun Heo authored
    kernfs_unmap_bin_file() is supposed to unmap all memory mappings of
    the target file before kernfs_remove() finishes; however, it currently
    is being called from kernfs_addrm_finish() and has the same race
    problem as the original implementation of deactivation when there are
    multiple removers - only the remover which snatches the node to its
    addrm_cxt->removed list is guaranteed to wait for its completion
    before returning.
    
    It can be easily fixed by moving kernfs_unmap_bin_file() invocation
    from kernfs_addrm_finish() to kernfs_deactivated().  The function may
    be called multiple times but that shouldn't do any harm.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    ccf02aaf
dir.c 25.4 KB