aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorNeil Brown <neilb@cse.unsw.edu.au>2004-08-11 02:48:02 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2004-08-11 02:48:02 -0700
commit521e761c60bb62759fa714f0fb7e7c22d9e5fc53 (patch)
tree9ee868d506c3d6da439d3875d64c583c4f9c6cd1 /fs
parent72414cc1befb259e9db38ead756b0e67b674e38e (diff)
downloadhistory-521e761c60bb62759fa714f0fb7e7c22d9e5fc53.tar.gz
[PATCH] Fix unsigned underflow in xdr decoding.
With 'len' being unsigned now, we must make sure it never tries to go negative... Thanks: griffon26@kfk4ever.com (Maurice van der Pot) Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs')
-rw-r--r--fs/nfsd/nfs3xdr.c2
-rw-r--r--fs/nfsd/nfsxdr.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c
index 9764dfa1c56319..e7f907dfa2b953 100644
--- a/fs/nfsd/nfs3xdr.c
+++ b/fs/nfsd/nfs3xdr.c
@@ -347,8 +347,8 @@ nfs3svc_decode_readargs(struct svc_rqst *rqstp, u32 *p,
svc_take_page(rqstp);
args->vec[v].iov_base = page_address(rqstp->rq_respages[pn]);
args->vec[v].iov_len = len < PAGE_SIZE? len : PAGE_SIZE;
+ len -= args->vec[v].iov_len;
v++;
- len -= PAGE_SIZE;
}
args->vlen = v;
return xdr_argsize_check(rqstp, p);
diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c
index d978123a686703..948b08287c9900 100644
--- a/fs/nfsd/nfsxdr.c
+++ b/fs/nfsd/nfsxdr.c
@@ -255,8 +255,8 @@ nfssvc_decode_readargs(struct svc_rqst *rqstp, u32 *p,
svc_take_page(rqstp);
args->vec[v].iov_base = page_address(rqstp->rq_respages[pn]);
args->vec[v].iov_len = len < PAGE_SIZE?len:PAGE_SIZE;
+ len -= args->vec[v].iov_len;
v++;
- len -= PAGE_SIZE;
}
args->vlen = v;
return xdr_argsize_check(rqstp, p);