• Mark Fasheh's avatar
    vfs: allow dedupe of user owned read-only files · 5de4480a
    Mark Fasheh authored
    The permission check in vfs_dedupe_file_range_one() is too coarse - We only
    allow dedupe of the destination file if the user is root, or they have the
    file open for write.
    
    This effectively limits a non-root user from deduping their own read-only
    files. In addition, the write file descriptor that the user is forced to
    hold open can prevent execution of files. As file data during a dedupe
    does not change, the behavior is unexpected and this has caused a number of
    issue reports. For an example, see:
    
    https://github.com/markfasheh/duperemove/issues/129
    
    So change the check so we allow dedupe on the target if:
    
    - the root or admin is asking for it
    - the process has write access
    - the owner of the file is asking for the dedupe
    - the process could get write access
    
    That way users can open read-only and still get dedupe.
    Signed-off-by: default avatarMark Fasheh <mfasheh@suse.de>
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    5de4480a
read_write.c 48 KB