If a file is marked inline_data but its i_size isn't a multiple of four, it probably isn't an inline directory, because directory entries have sizes that are multiples of four. Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --- e2fsck/pass1.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c index 1a9e0d5..245a755 100644 --- a/e2fsck/pass1.c +++ b/e2fsck/pass1.c @@ -536,10 +536,17 @@ static void check_is_really_dir(e2fsck_t ctx, struct problem_context *pctx, inlinedata_fs = (ctx->fs->super->s_feature_incompat & EXT4_FEATURE_INCOMPAT_INLINE_DATA); if (inlinedata_fs && (inode->i_flags & EXT4_INLINE_DATA_FL)) { + int flags; size_t size; if (ext2fs_inline_data_size(ctx->fs, pctx->ino, &size)) return; + /* + * If the size isn't a multiple of 4, it's probably not a + * directory?? + */ + if (size & 3) + return; /* device files never have a "system.data" entry */ goto isdir; } else if (extent_fs && (inode->i_flags & EXT4_EXTENTS_FL)) { -- 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