diff options
| author | Alex Shi <alex.shi@linaro.org> | 2016-08-18 12:33:31 +0800 |
|---|---|---|
| committer | Alex Shi <alex.shi@linaro.org> | 2016-08-18 12:33:31 +0800 |
| commit | fdd85431d91c9da37e9e696eb8fe80f1a2dcdbeb (patch) | |
| tree | ac60b28ebed345df274ce42aa3c9f3ee091875d1 /fs/ext4/extents.c | |
| parent | e01035c1a71d7cceebc3df92f79577df7438523a (diff) | |
| parent | e779279da78339ec75fa72571ef901a447762cc6 (diff) | |
Merge branch 'linux-linaro-lsk-v4.4' into linux-linaro-lsk-v4.4-android
Diffstat (limited to 'fs/ext4/extents.c')
| -rw-r--r-- | fs/ext4/extents.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 62880586ed85..8eac7d586997 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -376,9 +376,13 @@ static int ext4_valid_extent(struct inode *inode, struct ext4_extent *ext) ext4_fsblk_t block = ext4_ext_pblock(ext); int len = ext4_ext_get_actual_len(ext); ext4_lblk_t lblock = le32_to_cpu(ext->ee_block); - ext4_lblk_t last = lblock + len - 1; - if (len == 0 || lblock > last) + /* + * We allow neither: + * - zero length + * - overflow/wrap-around + */ + if (lblock + len <= lblock) return 0; return ext4_data_block_valid(EXT4_SB(inode->i_sb), block, len); } |
