@@ -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)) {
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@oracle.com> --- e2fsck/pass1.c | 7 +++++++ 1 file changed, 7 insertions(+) -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html