nfsd4: call nfsd4_release_compoundargs from pc_release
This simplifies cleanup a bit. Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
parent
ab1350b2b3
commit
3e98abffd1
|
@ -1218,7 +1218,6 @@ encode_op:
|
||||||
fh_put(&resp->cstate.save_fh);
|
fh_put(&resp->cstate.save_fh);
|
||||||
BUG_ON(resp->cstate.replay_owner);
|
BUG_ON(resp->cstate.replay_owner);
|
||||||
out:
|
out:
|
||||||
nfsd4_release_compoundargs(args);
|
|
||||||
/* Reset deferral mechanism for RPC deferrals */
|
/* Reset deferral mechanism for RPC deferrals */
|
||||||
rqstp->rq_usedeferral = 1;
|
rqstp->rq_usedeferral = 1;
|
||||||
dprintk("nfsv4 compound returned %d\n", ntohl(status));
|
dprintk("nfsv4 compound returned %d\n", ntohl(status));
|
||||||
|
@ -1473,6 +1472,7 @@ static struct svc_procedure nfsd_procedures4[2] = {
|
||||||
.pc_encode = (kxdrproc_t) nfs4svc_encode_compoundres,
|
.pc_encode = (kxdrproc_t) nfs4svc_encode_compoundres,
|
||||||
.pc_argsize = sizeof(struct nfsd4_compoundargs),
|
.pc_argsize = sizeof(struct nfsd4_compoundargs),
|
||||||
.pc_ressize = sizeof(struct nfsd4_compoundres),
|
.pc_ressize = sizeof(struct nfsd4_compoundres),
|
||||||
|
.pc_release = nfsd4_release_compoundargs,
|
||||||
.pc_cachetype = RC_NOCACHE,
|
.pc_cachetype = RC_NOCACHE,
|
||||||
.pc_xdrressize = NFSD_BUFSIZE/4,
|
.pc_xdrressize = NFSD_BUFSIZE/4,
|
||||||
},
|
},
|
||||||
|
|
|
@ -3428,8 +3428,11 @@ nfs4svc_encode_voidres(struct svc_rqst *rqstp, __be32 *p, void *dummy)
|
||||||
return xdr_ressize_check(rqstp, p);
|
return xdr_ressize_check(rqstp, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
void nfsd4_release_compoundargs(struct nfsd4_compoundargs *args)
|
int nfsd4_release_compoundargs(void *rq, __be32 *p, void *resp)
|
||||||
{
|
{
|
||||||
|
struct svc_rqst *rqstp = rq;
|
||||||
|
struct nfsd4_compoundargs *args = rqstp->rq_argp;
|
||||||
|
|
||||||
if (args->ops != args->iops) {
|
if (args->ops != args->iops) {
|
||||||
kfree(args->ops);
|
kfree(args->ops);
|
||||||
args->ops = args->iops;
|
args->ops = args->iops;
|
||||||
|
@ -3442,13 +3445,12 @@ void nfsd4_release_compoundargs(struct nfsd4_compoundargs *args)
|
||||||
tb->release(tb->buf);
|
tb->release(tb->buf);
|
||||||
kfree(tb);
|
kfree(tb);
|
||||||
}
|
}
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
nfs4svc_decode_compoundargs(struct svc_rqst *rqstp, __be32 *p, struct nfsd4_compoundargs *args)
|
nfs4svc_decode_compoundargs(struct svc_rqst *rqstp, __be32 *p, struct nfsd4_compoundargs *args)
|
||||||
{
|
{
|
||||||
__be32 status;
|
|
||||||
|
|
||||||
args->p = p;
|
args->p = p;
|
||||||
args->end = rqstp->rq_arg.head[0].iov_base + rqstp->rq_arg.head[0].iov_len;
|
args->end = rqstp->rq_arg.head[0].iov_base + rqstp->rq_arg.head[0].iov_len;
|
||||||
args->pagelist = rqstp->rq_arg.pages;
|
args->pagelist = rqstp->rq_arg.pages;
|
||||||
|
@ -3458,11 +3460,7 @@ nfs4svc_decode_compoundargs(struct svc_rqst *rqstp, __be32 *p, struct nfsd4_comp
|
||||||
args->ops = args->iops;
|
args->ops = args->iops;
|
||||||
args->rqstp = rqstp;
|
args->rqstp = rqstp;
|
||||||
|
|
||||||
status = nfsd4_decode_compound(args);
|
return !nfsd4_decode_compound(args);
|
||||||
if (status) {
|
|
||||||
nfsd4_release_compoundargs(args);
|
|
||||||
}
|
|
||||||
return !status;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
|
@ -580,7 +580,7 @@ extern __be32
|
||||||
nfsd4_release_lockowner(struct svc_rqst *rqstp,
|
nfsd4_release_lockowner(struct svc_rqst *rqstp,
|
||||||
struct nfsd4_compound_state *,
|
struct nfsd4_compound_state *,
|
||||||
struct nfsd4_release_lockowner *rlockowner);
|
struct nfsd4_release_lockowner *rlockowner);
|
||||||
extern void nfsd4_release_compoundargs(struct nfsd4_compoundargs *);
|
extern int nfsd4_release_compoundargs(void *rq, __be32 *p, void *resp);
|
||||||
extern __be32 nfsd4_delegreturn(struct svc_rqst *rqstp,
|
extern __be32 nfsd4_delegreturn(struct svc_rqst *rqstp,
|
||||||
struct nfsd4_compound_state *, struct nfsd4_delegreturn *dr);
|
struct nfsd4_compound_state *, struct nfsd4_delegreturn *dr);
|
||||||
extern __be32 nfsd4_renew(struct svc_rqst *rqstp,
|
extern __be32 nfsd4_renew(struct svc_rqst *rqstp,
|
||||||
|
|
Loading…
Reference in New Issue