mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-28 05:12:49 +00:00
fuse: fix READDIRPLUS skipping an entry
commitc6cdd51404
upstream. Marios Titas running a Haskell program noticed a problem with fuse's readdirplus: when it is interrupted by a signal, it skips one directory entry. The reason is that fuse erronously updates ctx->pos after a failed dir_emit(). The issue originates from the patch adding readdirplus support. Reported-by: Jakob Unterwurzacher <jakobunt@gmail.com> Tested-by: Marios Titas <redneb@gmx.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com> Fixes:0b05b18381
("fuse: implement NFS-like readdirplus support") Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
d8e5f2f8d5
commit
8783885ea7
1 changed files with 2 additions and 1 deletions
|
@ -1312,7 +1312,8 @@ static int parse_dirplusfile(char *buf, size_t nbytes, struct file *file,
|
|||
*/
|
||||
over = !dir_emit(ctx, dirent->name, dirent->namelen,
|
||||
dirent->ino, dirent->type);
|
||||
ctx->pos = dirent->off;
|
||||
if (!over)
|
||||
ctx->pos = dirent->off;
|
||||
}
|
||||
|
||||
buf += reclen;
|
||||
|
|
Loading…
Reference in a new issue