diff options
Diffstat (limited to 'fs/ext4/extents.c')
| -rw-r--r-- | fs/ext4/extents.c | 6 | 
1 files changed, 4 insertions, 2 deletions
| diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index e2eab196875f..e0aa4fe4f596 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -1122,7 +1122,8 @@ ext4_ext_search_right(struct inode *inode, struct ext4_ext_path *path,  	struct ext4_extent_idx *ix;  	struct ext4_extent *ex;  	ext4_fsblk_t block; -	int depth, ee_len; +	int depth;	/* Note, NOT eh_depth; depth from top of tree */ +	int ee_len;  	BUG_ON(path == NULL);  	depth = path->p_depth; @@ -1179,7 +1180,8 @@ got_index:  		if (bh == NULL)  			return -EIO;  		eh = ext_block_hdr(bh); -		if (ext4_ext_check_header(inode, eh, depth)) { +		/* subtract from p_depth to get proper eh_depth */ +		if (ext4_ext_check_header(inode, eh, path->p_depth - depth)) {  			put_bh(bh);  			return -EIO;  		} |