From 521e761c60bb62759fa714f0fb7e7c22d9e5fc53 Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Wed, 11 Aug 2004 02:48:02 -0700 Subject: [PATCH] [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 Signed-off-by: Linus Torvalds --- fs/nfsd/nfs3xdr.c | 2 +- fs/nfsd/nfsxdr.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index 9764dfa1c5631..e7f907dfa2b95 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 d978123a68670..948b08287c990 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); -- 2.53.0