• Qu Wenruo's avatar
    btrfs: tree-checker: Check if the file extent end overflows · 4c094c33
    Qu Wenruo authored
    Under certain conditions, we could have strange file extent item in log
    tree like:
    
      item 18 key (69599 108 397312) itemoff 15208 itemsize 53
    	extent data disk bytenr 0 nr 0
    	extent data offset 0 nr 18446744073709547520 ram 18446744073709547520
    
    The num_bytes + ram_bytes overflow 64 bit type.
    
    For num_bytes part, we can detect such overflow along with file offset
    (key->offset), as file_offset + num_bytes should never go beyond u64.
    
    For ram_bytes part, it's about the decompressed size of the extent, not
    directly related to the size.
    In theory it is OK to have a large value, and put extra limitation
    on RAM bytes may cause unexpected false alerts.
    
    So in tree-checker, we only check if the file offset and num bytes
    overflow.
    Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    4c094c33
tree-checker.c 30.4 KB