aboutsummaryrefslogtreecommitdiff
path: root/e2fsck/pass1.c
diff options
context:
space:
mode:
authorEric Biggers <ebiggers@google.com>2018-03-02 16:59:22 -0800
committerTheodore Ts'o <tytso@mit.edu>2018-03-03 17:49:53 -0500
commit2c733c3f86fa83e2f7b9b5430fade71b11dce6f7 (patch)
treec1ea72ae01044cd89143cf9958fa6f793b0ae918 /e2fsck/pass1.c
parent9666fbfbd5d2f6a94566c427c3769ca73d3d01c7 (diff)
downloade2fsprogs-2c733c3f86fa83e2f7b9b5430fade71b11dce6f7.tar.gz
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 <ebiggers@google.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'e2fsck/pass1.c')
-rw-r--r--e2fsck/pass1.c6
1 files changed, 3 insertions, 3 deletions
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 {