fs/ntfs3: Break dir enumeration if directory contents error
authorKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
Tue, 23 Apr 2024 14:21:58 +0000 (17:21 +0300)
committerKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
Fri, 24 May 2024 09:50:12 +0000 (12:50 +0300)
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
fs/ntfs3/dir.c

index 5cf3d9decf646b1935517e8b564d807626e60e0f..45e556fd7c54fa61f2ea930895b6b3b96445a1f9 100644 (file)
@@ -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;
                }