summaryrefslogtreecommitdiffstats
path: root/sys/fs/udf/udf_vnops.c
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2009-03-03 13:10:25 +0000
committeravg <avg@FreeBSD.org>2009-03-03 13:10:25 +0000
commitccfe8ecd4e48b6707e4c7df47a9c5aeada53b21f (patch)
treedfafb587aded385c98fe2f9e2f9dbb0a1e98eb48 /sys/fs/udf/udf_vnops.c
parent47970c8b692d1759ea7b6aa94441fcc1dd17994c (diff)
downloadFreeBSD-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/udf_vnops.c')
-rw-r--r--sys/fs/udf/udf_vnops.c2
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;
OpenPOWER on IntegriCloud