From 2c733c3f86fa83e2f7b9b5430fade71b11dce6f7 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Fri, 2 Mar 2018 16:59:22 -0800 Subject: e2fsck: require that fast symlinks don't have EXT4_EXTENTS_FL It doesn't make sense for EXT4_EXTENTS_FL to be set on a fast symlink. The kernel doesn't set it, and it ignores it if set. Meanwhile, e2fsck is stricter: it will try to validate the extent tree, which will almost certainly fail (assuming the symlink is, in fact, a fast symlink). Make this behavior more explicit by rejecting EXT4_EXTENTS_FL for fast symlinks, rather than going ahead and trying to validate an extent tree. Signed-off-by: Eric Biggers Signed-off-by: Theodore Ts'o --- e2fsck/pass1.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'e2fsck/pass1.c') diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c index 46d70d14..fccd8816 100644 --- a/e2fsck/pass1.c +++ b/e2fsck/pass1.c @@ -203,9 +203,9 @@ int e2fsck_pass1_check_symlink(ext2_filsys fs, ext2_ino_t ino, return 1; } - if (ext2fs_is_fast_symlink(inode) && - !(inode->i_flags & EXT4_EXTENTS_FL)) { - + if (ext2fs_is_fast_symlink(inode)) { + if (inode->i_flags & EXT4_EXTENTS_FL) + return 0; buf = (char *)inode->i_block; buflen = sizeof(inode->i_block); } else { -- cgit v1.2.3