diff options
author | Konstantin Komarov <almaz.alexandrovich@paragon-software.com> | 2024-04-23 17:21:58 +0300 |
---|---|---|
committer | Konstantin Komarov <almaz.alexandrovich@paragon-software.com> | 2024-05-24 12:50:12 +0300 |
commit | 302e9dca8428979c9c99f2dbb44dc1783f5011c3 (patch) | |
tree | 1719b1852705651c5b0b7af3473d9d502827bccf /fs/ntfs3 | |
parent | 05afeeebcac850a016ec4fb1f681ceda11963562 (diff) | |
download | linux-302e9dca8428979c9c99f2dbb44dc1783f5011c3.tar.gz linux-302e9dca8428979c9c99f2dbb44dc1783f5011c3.tar.bz2 linux-302e9dca8428979c9c99f2dbb44dc1783f5011c3.zip |
fs/ntfs3: Break dir enumeration if directory contents error
If we somehow attempt to read beyond the directory size, an error
is supposed to be returned.
However, in some cases, read requests do not stop and instead enter
into a loop.
To avoid this, we set the position in the directory to the end.
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
Cc: stable@vger.kernel.org
Diffstat (limited to 'fs/ntfs3')
-rw-r--r-- | fs/ntfs3/dir.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/ntfs3/dir.c b/fs/ntfs3/dir.c index 5cf3d9decf64..45e556fd7c54 100644 --- a/fs/ntfs3/dir.c +++ b/fs/ntfs3/dir.c @@ -475,6 +475,7 @@ static int ntfs_readdir(struct file *file, struct dir_context *ctx) vbo = (u64)bit << index_bits; if (vbo >= i_size) { ntfs_inode_err(dir, "Looks like your dir is corrupt"); + ctx->pos = eod; err = -EINVAL; goto out; } |