diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index d3936a78dc39cd599a59a57b5c6fa1057f9bc15f..fc00a781631174ecf86dffc64cbee19e1a3cc84d 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -590,6 +590,14 @@ __read_extent_tree_block(const char *function, unsigned int line, goto errout; } if (buffer_verified(bh)) { + if (unlikely(ext_block_hdr(bh)->eh_magic != EXT4_EXT_MAGIC)) { + err = -EFSCORRUPTED; + ext4_error_inode(inode, function, line, 0, + "invalid magic for verified extent block %llu", + (unsigned long long)bh->b_blocknr); + goto errout; + } + if (!(flags & EXT4_EX_FORCE_CACHE)) return bh; } else {