diff options
Diffstat (limited to 'fs/nfsd/nfs3xdr.c')
| -rw-r--r-- | fs/nfsd/nfs3xdr.c | 23 | 
1 files changed, 6 insertions, 17 deletions
| diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index 12feac6ee2fd..452334694a5d 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -334,11 +334,8 @@ nfs3svc_decode_readargs(struct svc_rqst *rqstp, __be32 *p,  	if (!p)  		return 0;  	p = xdr_decode_hyper(p, &args->offset); -	args->count = ntohl(*p++); - -	if (!xdr_argsize_check(rqstp, p)) -		return 0; +	args->count = ntohl(*p++);  	len = min(args->count, max_blocksize);  	/* set up the kvec */ @@ -352,7 +349,7 @@ nfs3svc_decode_readargs(struct svc_rqst *rqstp, __be32 *p,  		v++;  	}  	args->vlen = v; -	return 1; +	return xdr_argsize_check(rqstp, p);  }  int @@ -544,11 +541,9 @@ nfs3svc_decode_readlinkargs(struct svc_rqst *rqstp, __be32 *p,  	p = decode_fh(p, &args->fh);  	if (!p)  		return 0; -	if (!xdr_argsize_check(rqstp, p)) -		return 0;  	args->buffer = page_address(*(rqstp->rq_next_page++)); -	return 1; +	return xdr_argsize_check(rqstp, p);  }  int @@ -574,14 +569,10 @@ nfs3svc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p,  	args->verf   = p; p += 2;  	args->dircount = ~0;  	args->count  = ntohl(*p++); - -	if (!xdr_argsize_check(rqstp, p)) -		return 0; -  	args->count  = min_t(u32, args->count, PAGE_SIZE);  	args->buffer = page_address(*(rqstp->rq_next_page++)); -	return 1; +	return xdr_argsize_check(rqstp, p);  }  int @@ -599,9 +590,6 @@ nfs3svc_decode_readdirplusargs(struct svc_rqst *rqstp, __be32 *p,  	args->dircount = ntohl(*p++);  	args->count    = ntohl(*p++); -	if (!xdr_argsize_check(rqstp, p)) -		return 0; -  	len = args->count = min(args->count, max_blocksize);  	while (len > 0) {  		struct page *p = *(rqstp->rq_next_page++); @@ -609,7 +597,8 @@ nfs3svc_decode_readdirplusargs(struct svc_rqst *rqstp, __be32 *p,  			args->buffer = page_address(p);  		len -= PAGE_SIZE;  	} -	return 1; + +	return xdr_argsize_check(rqstp, p);  }  int |