From: Eryu Guan <guaneryu@gmail.com>
Date: Thu, 14 May 2015 23:00:45 +0000 (-0400)
Subject: ext4: check for zero length extent explicitly
X-Git-Tag: firefly_0821_release~176^2~1766^2~2
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=2f974865ffdfe7b9f46a9940836c8b167342563d;p=firefly-linux-kernel-4.4.55.git

ext4: check for zero length extent explicitly

The following commit introduced a bug when checking for zero length extent

5946d08 ext4: check for overlapping extents in ext4_valid_extent_entries()

Zero length extent could pass the check if lblock is zero.

Adding the explicit check for zero length back.

Signed-off-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Cc: stable@vger.kernel.org
---

diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index d74e08029643..451b92a9958a 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -377,7 +377,7 @@ static int ext4_valid_extent(struct inode *inode, struct ext4_extent *ext)
 	ext4_lblk_t lblock = le32_to_cpu(ext->ee_block);
 	ext4_lblk_t last = lblock + len - 1;
 
-	if (lblock > last)
+	if (len == 0 || lblock > last)
 		return 0;
 	return ext4_data_block_valid(EXT4_SB(inode->i_sb), block, len);
 }