Clear the verified flag from the modified bh when failed in ext4_ext_rm_idx or ext4_ext_correct_indexes. In this way, the start value of the logical block itself and its parents' will be checked in ext4_valid_extent_entries. Reported-by: kernel test robot <lkp@xxxxxxxxx> Signed-off-by: zhanchengbin <zhanchengbin1@xxxxxxxxxx> Link: https://lore.kernel.org/oe-kbuild-all/202302131414.5RKeHgAZ-lkp@xxxxxxxxx/ Link: https://lore.kernel.org/oe-kbuild-all/202302131407.XrieHNuN-lkp@xxxxxxxxx/ --- fs/ext4/extents.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 0f95e857089e..bbf34679e10c 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -1756,6 +1756,8 @@ static int ext4_ext_correct_indexes(handle_t *handle, struct inode *inode, if (err) break; } + while (!(k < 0) && k++ < depth) + clear_buffer_verified(path[k].p_bh); return err; } @@ -2304,6 +2306,7 @@ static int ext4_ext_rm_idx(handle_t *handle, struct inode *inode, { int err; ext4_fsblk_t leaf; + int b_depth = depth; /* free index block */ depth--; @@ -2345,6 +2348,9 @@ static int ext4_ext_rm_idx(handle_t *handle, struct inode *inode, if (err) break; } + while (!(depth < 0) && depth++ < b_depth - 1) + clear_buffer_verified(path[depth].p_bh); + return err; } -- 2.31.1