summaryrefslogtreecommitdiffstats
path: root/sys/nfs
diff options
context:
space:
mode:
authoriedowse <iedowse@FreeBSD.org>2001-12-31 06:56:31 +0000
committeriedowse <iedowse@FreeBSD.org>2001-12-31 06:56:31 +0000
commitbf54388d388d92a6ba752cd9a6bfd83ed0d371ad (patch)
tree6a45f188d2b7eb51d5942c16d5681dd3b621526d /sys/nfs
parent4687eb5aa56ad049323bc0289591eaf27fcf09ec (diff)
downloadFreeBSD-src-bf54388d388d92a6ba752cd9a6bfd83ed0d371ad.zip
FreeBSD-src-bf54388d388d92a6ba752cd9a6bfd83ed0d371ad.tar.gz
When the old nfsm_adv() macro was moved to nfsm_adv_xx(), a '>='
must have been inadvertently changed to '>'. This broke nfsm_adv() in the case where the advancement count is equal to the amount of data remaining in the current mbuf. Instead of moving the current position N bytes forward, nfs_adv() could end up moving it back to N bytes from the start of the mbuf data. This should fix the client-side readdirplus problems that have been reported since September.
Diffstat (limited to 'sys/nfs')
-rw-r--r--sys/nfs/nfs_common.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/nfs/nfs_common.c b/sys/nfs/nfs_common.c
index d4a957e..4b9aa16 100644
--- a/sys/nfs/nfs_common.c
+++ b/sys/nfs/nfs_common.c
@@ -305,7 +305,7 @@ nfsm_adv_xx(int s, struct mbuf **md, caddr_t *dpos)
int t1;
t1 = mtod(*md, caddr_t) + (*md)->m_len - *dpos;
- if (t1 > s) {
+ if (t1 >= s) {
*dpos += s;
return 0;
}
OpenPOWER on IntegriCloud