diff options
| author | Neil Brown <neilb@cse.unsw.edu.au> | 2003-06-23 22:15:28 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2003-06-23 22:15:28 -0700 |
| commit | 4f819f27863582154ae8a736dcf2e7f1636a6148 (patch) | |
| tree | a120535905db4315e4e60604053c0861291e0453 | |
| parent | 50030d57afc8c923af41b9ef4100f2a617ff8394 (diff) | |
[PATCH] Fix byte counting for NFSv3 readdir replies
The amount of free space is calculated wrongly so
nfsv3 readdir replies are shorted than they could be.
| -rw-r--r-- | fs/nfsd/nfs3xdr.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index b3bcce53d605..2e53ddd83935 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -780,7 +780,7 @@ encode_entry(struct readdir_cd *ccd, const char *name, { struct nfsd3_readdirres *cd = container_of(ccd, struct nfsd3_readdirres, common); u32 *p = cd->buffer; - int buflen, slen, elen; + int slen, elen; if (cd->offset) xdr_encode_hyper(cd->offset, (u64) offset); @@ -797,7 +797,7 @@ encode_entry(struct readdir_cd *ccd, const char *name, slen = XDR_QUADLEN(namlen); elen = slen + NFS3_ENTRY_BAGGAGE + (plus? NFS3_ENTRYPLUS_BAGGAGE : 0); - if ((buflen = cd->buflen - elen) < 0) { + if (cd->buflen < elen) { cd->common.err = nfserr_readdir_nospc; return -EINVAL; } @@ -836,7 +836,7 @@ encode_entry(struct readdir_cd *ccd, const char *name, } out: - cd->buflen = buflen; + cd->buflen -= p - cd->buffer; cd->buffer = p; cd->common.err = nfs_ok; return 0; |
