• David Sterba's avatar
    btrfs: add missing check for nocow and compression inode flags · f37c563b
    David Sterba authored
    User Forza reported on IRC that some invalid combinations of file
    attributes are accepted by chattr.
    
    The NODATACOW and compression file flags/attributes are mutually
    exclusive, but they could be set by 'chattr +c +C' on an empty file. The
    nodatacow will be in effect because it's checked first in
    btrfs_run_delalloc_range.
    
    Extend the flag validation to catch the following cases:
    
      - input flags are conflicting
      - old and new flags are conflicting
      - initialize the local variable with inode flags after inode ls locked
    
    Inode attributes take precedence over mount options and are an
    independent setting.
    
    Nocompress would be a no-op with nodatacow, but we don't want to mix
    any compression-related options with nodatacow.
    
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    f37c563b
ioctl.c 120 KB