diff options
author | iedowse <iedowse@FreeBSD.org> | 2001-12-31 06:56:31 +0000 |
---|---|---|
committer | iedowse <iedowse@FreeBSD.org> | 2001-12-31 06:56:31 +0000 |
commit | bf54388d388d92a6ba752cd9a6bfd83ed0d371ad (patch) | |
tree | 6a45f188d2b7eb51d5942c16d5681dd3b621526d | |
parent | 4687eb5aa56ad049323bc0289591eaf27fcf09ec (diff) | |
download | FreeBSD-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.
-rw-r--r-- | sys/nfs/nfs_common.c | 2 |
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; } |