diff options
author | Takashi Iwai <tiwai@suse.de> | 2021-02-15 09:06:39 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2021-02-15 09:07:01 +0100 |
commit | de1528ee7cb7c161444dadbc971d050bebb5cbe7 (patch) | |
tree | a1f53cd279966802de097c0f0f6625b49e6903f1 /fs/btrfs/tree-checker.c | |
parent | 0d3070f5e6551d8a759619e85736e49a3bf40398 (diff) | |
parent | 15447b64789d9ade71eb374d5ae1f37d0bbce0bd (diff) |
Merge branch 'for-next' into for-linus
Unification of 5.12-devel branches.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'fs/btrfs/tree-checker.c')
-rw-r--r-- | fs/btrfs/tree-checker.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/btrfs/tree-checker.c b/fs/btrfs/tree-checker.c index 028e733e42f3..582061c7b547 100644 --- a/fs/btrfs/tree-checker.c +++ b/fs/btrfs/tree-checker.c @@ -760,6 +760,7 @@ int btrfs_check_chunk_valid(struct extent_buffer *leaf, { struct btrfs_fs_info *fs_info = leaf->fs_info; u64 length; + u64 chunk_end; u64 stripe_len; u16 num_stripes; u16 sub_stripes; @@ -814,6 +815,12 @@ int btrfs_check_chunk_valid(struct extent_buffer *leaf, "invalid chunk length, have %llu", length); return -EUCLEAN; } + if (unlikely(check_add_overflow(logical, length, &chunk_end))) { + chunk_err(leaf, chunk, logical, +"invalid chunk logical start and length, have logical start %llu length %llu", + logical, length); + return -EUCLEAN; + } if (unlikely(!is_power_of_2(stripe_len) || stripe_len != BTRFS_STRIPE_LEN)) { chunk_err(leaf, chunk, logical, "invalid chunk stripe length: %llu", |