aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd/nfs4xdr.c
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@redhat.com>2011-07-16 17:15:10 -0400
committerJ. Bruce Fields <bfields@redhat.com>2011-07-18 09:38:02 -0400
commit3e98abffd1665b884a322aedcd528577842f762f (patch)
tree3f94883dd56081c17e3bbfadbe196eb5cb2a7595 /fs/nfsd/nfs4xdr.c
parentab1350b2b3c1dd2e465a6abdda608d8c44facfb8 (diff)
nfsd4: call nfsd4_release_compoundargs from pc_release
This simplifies cleanup a bit. Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/nfs4xdr.c')
-rw-r--r--fs/nfsd/nfs4xdr.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index a8d83bd5c1d5..c43f56021501 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -3428,8 +3428,11 @@ nfs4svc_encode_voidres(struct svc_rqst *rqstp, __be32 *p, void *dummy)
3428 return xdr_ressize_check(rqstp, p); 3428 return xdr_ressize_check(rqstp, p);
3429} 3429}
3430 3430
3431void nfsd4_release_compoundargs(struct nfsd4_compoundargs *args) 3431int nfsd4_release_compoundargs(void *rq, __be32 *p, void *resp)
3432{ 3432{
3433 struct svc_rqst *rqstp = rq;
3434 struct nfsd4_compoundargs *args = rqstp->rq_argp;
3435
3433 if (args->ops != args->iops) { 3436 if (args->ops != args->iops) {
3434 kfree(args->ops); 3437 kfree(args->ops);
3435 args->ops = args->iops; 3438 args->ops = args->iops;
@@ -3442,13 +3445,12 @@ void nfsd4_release_compoundargs(struct nfsd4_compoundargs *args)
3442 tb->release(tb->buf); 3445 tb->release(tb->buf);
3443 kfree(tb); 3446 kfree(tb);
3444 } 3447 }
3448 return 1;
3445} 3449}
3446 3450
3447int 3451int
3448nfs4svc_decode_compoundargs(struct svc_rqst *rqstp, __be32 *p, struct nfsd4_compoundargs *args) 3452nfs4svc_decode_compoundargs(struct svc_rqst *rqstp, __be32 *p, struct nfsd4_compoundargs *args)
3449{ 3453{
3450 __be32 status;
3451
3452 args->p = p; 3454 args->p = p;
3453 args->end = rqstp->rq_arg.head[0].iov_base + rqstp->rq_arg.head[0].iov_len; 3455 args->end = rqstp->rq_arg.head[0].iov_base + rqstp->rq_arg.head[0].iov_len;
3454 args->pagelist = rqstp->rq_arg.pages; 3456 args->pagelist = rqstp->rq_arg.pages;
@@ -3458,11 +3460,7 @@ nfs4svc_decode_compoundargs(struct svc_rqst *rqstp, __be32 *p, struct nfsd4_comp
3458 args->ops = args->iops; 3460 args->ops = args->iops;
3459 args->rqstp = rqstp; 3461 args->rqstp = rqstp;
3460 3462
3461 status = nfsd4_decode_compound(args); 3463 return !nfsd4_decode_compound(args);
3462 if (status) {
3463 nfsd4_release_compoundargs(args);
3464 }
3465 return !status;
3466} 3464}
3467 3465
3468int 3466int