diff options
author | Eric Biggers <ebiggers@google.com> | 2018-03-02 16:59:22 -0800 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2018-03-03 17:49:53 -0500 |
commit | 2c733c3f86fa83e2f7b9b5430fade71b11dce6f7 (patch) | |
tree | c1ea72ae01044cd89143cf9958fa6f793b0ae918 /e2fsck/pass1.c | |
parent | 9666fbfbd5d2f6a94566c427c3769ca73d3d01c7 (diff) | |
download | e2fsprogs-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.c | 6 |
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 { |