Whamcloud - gitweb
e2fsck: zero errcode when checking inline data blocks
authorDarrick J. Wong <darrick.wong@oracle.com>
Fri, 14 Mar 2014 13:26:21 +0000 (09:26 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 14 Mar 2014 13:26:22 +0000 (09:26 -0400)
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@oracle.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
e2fsck/pass1.c

index 11b3dde..641b3fb 100644 (file)
@@ -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) {