diff options
author | avg <avg@FreeBSD.org> | 2009-03-03 13:10:25 +0000 |
---|---|---|
committer | avg <avg@FreeBSD.org> | 2009-03-03 13:10:25 +0000 |
commit | ccfe8ecd4e48b6707e4c7df47a9c5aeada53b21f (patch) | |
tree | dfafb587aded385c98fe2f9e2f9dbb0a1e98eb48 /sys/fs/udf | |
parent | 47970c8b692d1759ea7b6aa94441fcc1dd17994c (diff) | |
download | FreeBSD-src-ccfe8ecd4e48b6707e4c7df47a9c5aeada53b21f.zip FreeBSD-src-ccfe8ecd4e48b6707e4c7df47a9c5aeada53b21f.tar.gz |
udf_readdir: do not advance offset if entry can not be uio-ed
Previosly readdir missed some directory entries because there was
no space for them in current uio but directory stream offset
was advanced nevertheless.
jhb has discoved the issue and provided a test-case.
Reviewed by: bde
Approved by: jhb (mentor)
Diffstat (limited to 'sys/fs/udf')
-rw-r--r-- | sys/fs/udf/udf_vnops.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/fs/udf/udf_vnops.c b/sys/fs/udf/udf_vnops.c index aa1791e..a3c3fa2 100644 --- a/sys/fs/udf/udf_vnops.c +++ b/sys/fs/udf/udf_vnops.c @@ -859,11 +859,11 @@ udf_readdir(struct vop_readdir_args *a) } if (error) break; + uio->uio_offset = ds->offset + ds->off; } /* tell the calling layer whether we need to be called again */ *a->a_eofflag = uiodir.eofflag; - uio->uio_offset = ds->offset + ds->off; if (error < 0) error = 0; |