Commit faca8978 authored by Chuck Lever's avatar Chuck Lever

SUNRPC: Move svcxdr_init_encode() into ->accept methods

Refactor: So that the overhaul of each ->accept method can be done
in separate smaller patches, temporarily move the
svcxdr_init_encode() call into those methods.
Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent 8dd41d70
...@@ -1250,6 +1250,7 @@ svcauth_gss_legacy_init(struct svc_rqst *rqstp, ...@@ -1250,6 +1250,7 @@ svcauth_gss_legacy_init(struct svc_rqst *rqstp,
goto out; goto out;
ret = SVC_COMPLETE; ret = SVC_COMPLETE;
svcxdr_init_encode(rqstp);
out: out:
cache_put(&rsip->h, sn->rsi_cache); cache_put(&rsip->h, sn->rsi_cache);
return ret; return ret;
...@@ -1378,6 +1379,7 @@ static int svcauth_gss_proxy_init(struct svc_rqst *rqstp, ...@@ -1378,6 +1379,7 @@ static int svcauth_gss_proxy_init(struct svc_rqst *rqstp,
goto out; goto out;
ret = SVC_COMPLETE; ret = SVC_COMPLETE;
svcxdr_init_encode(rqstp);
out: out:
gss_free_in_token_pages(&ud.in_token); gss_free_in_token_pages(&ud.in_token);
gssp_free_upcall_data(&ud); gssp_free_upcall_data(&ud);
...@@ -1680,6 +1682,7 @@ svcauth_gss_accept(struct svc_rqst *rqstp) ...@@ -1680,6 +1682,7 @@ svcauth_gss_accept(struct svc_rqst *rqstp)
rqstp->rq_auth_stat = rpc_autherr_badcred; rqstp->rq_auth_stat = rpc_autherr_badcred;
switch (gc->gc_svc) { switch (gc->gc_svc) {
case RPC_GSS_SVC_NONE: case RPC_GSS_SVC_NONE:
svcxdr_init_encode(rqstp);
break; break;
case RPC_GSS_SVC_INTEGRITY: case RPC_GSS_SVC_INTEGRITY:
/* placeholders for length and seq. number: */ /* placeholders for length and seq. number: */
...@@ -1689,6 +1692,7 @@ svcauth_gss_accept(struct svc_rqst *rqstp) ...@@ -1689,6 +1692,7 @@ svcauth_gss_accept(struct svc_rqst *rqstp)
rsci->mechctx)) rsci->mechctx))
goto garbage_args; goto garbage_args;
rqstp->rq_auth_slack = RPC_MAX_AUTH_SIZE; rqstp->rq_auth_slack = RPC_MAX_AUTH_SIZE;
svcxdr_init_encode(rqstp);
break; break;
case RPC_GSS_SVC_PRIVACY: case RPC_GSS_SVC_PRIVACY:
/* placeholders for length and seq. number: */ /* placeholders for length and seq. number: */
...@@ -1698,6 +1702,7 @@ svcauth_gss_accept(struct svc_rqst *rqstp) ...@@ -1698,6 +1702,7 @@ svcauth_gss_accept(struct svc_rqst *rqstp)
rsci->mechctx)) rsci->mechctx))
goto garbage_args; goto garbage_args;
rqstp->rq_auth_slack = RPC_MAX_AUTH_SIZE * 2; rqstp->rq_auth_slack = RPC_MAX_AUTH_SIZE * 2;
svcxdr_init_encode(rqstp);
break; break;
default: default:
goto auth_err; goto auth_err;
......
...@@ -1312,16 +1312,14 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *resv) ...@@ -1312,16 +1312,14 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *resv)
serv->sv_stats->rpccnt++; serv->sv_stats->rpccnt++;
trace_svc_process(rqstp, progp->pg_name); trace_svc_process(rqstp, progp->pg_name);
/* Build the reply header. */ statp = xdr_reserve_space(&rqstp->rq_res_stream, XDR_UNIT);
statp = resv->iov_base +resv->iov_len; *statp = rpc_success;
svc_putnl(resv, RPC_SUCCESS);
/* un-reserve some of the out-queue now that we have a /* un-reserve some of the out-queue now that we have a
* better idea of reply size * better idea of reply size
*/ */
if (procp->pc_xdrressize) if (procp->pc_xdrressize)
svc_reserve_auth(rqstp, procp->pc_xdrressize<<2); svc_reserve_auth(rqstp, procp->pc_xdrressize<<2);
svcxdr_init_encode(rqstp);
/* Call the function that processes the request. */ /* Call the function that processes the request. */
rc = process.dispatch(rqstp, statp); rc = process.dispatch(rqstp, statp);
......
...@@ -778,6 +778,7 @@ svcauth_null_accept(struct svc_rqst *rqstp) ...@@ -778,6 +778,7 @@ svcauth_null_accept(struct svc_rqst *rqstp)
svc_putnl(resv, 0); svc_putnl(resv, 0);
rqstp->rq_cred.cr_flavor = RPC_AUTH_NULL; rqstp->rq_cred.cr_flavor = RPC_AUTH_NULL;
svcxdr_init_encode(rqstp);
return SVC_OK; return SVC_OK;
} }
...@@ -865,6 +866,7 @@ svcauth_tls_accept(struct svc_rqst *rqstp) ...@@ -865,6 +866,7 @@ svcauth_tls_accept(struct svc_rqst *rqstp)
svc_putnl(resv, 0); svc_putnl(resv, 0);
rqstp->rq_cred.cr_flavor = RPC_AUTH_TLS; rqstp->rq_cred.cr_flavor = RPC_AUTH_TLS;
svcxdr_init_encode(rqstp);
return SVC_OK; return SVC_OK;
} }
...@@ -960,6 +962,7 @@ svcauth_unix_accept(struct svc_rqst *rqstp) ...@@ -960,6 +962,7 @@ svcauth_unix_accept(struct svc_rqst *rqstp)
svc_putnl(resv, 0); svc_putnl(resv, 0);
rqstp->rq_cred.cr_flavor = RPC_AUTH_UNIX; rqstp->rq_cred.cr_flavor = RPC_AUTH_UNIX;
svcxdr_init_encode(rqstp);
return SVC_OK; return SVC_OK;
badcred: badcred:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment