When checking inline data blocks, always zero pctx->errcode because otherwise a previous error condition could leak through and "cause" a fatal block iteration failure. I found this by corrupting an xattr block on an inline_data inode and fsck aborted when I tried to repair it. Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --- e2fsck/pass1.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c index 11b3dde..641b3fb 100644 --- a/e2fsck/pass1.c +++ b/e2fsck/pass1.c @@ -2158,8 +2158,10 @@ static void check_blocks_extents(e2fsck_t ctx, struct problem_context *pctx, static void check_blocks_inline_data(e2fsck_t ctx, struct problem_context *pctx, struct process_block_struct *pb) { - if (!pb->is_dir) + if (!pb->is_dir) { + pctx->errcode = 0; return; + } pctx->errcode = ext2fs_add_dir_block2(ctx->fs->dblist, pb->ino, 0, 0); if (pctx->errcode) { -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html