OSDN Git Service

SUNRPC: Hoist init_encode out of svc_authenticate()
authorChuck Lever <chuck.lever@oracle.com>
Sun, 8 Jan 2023 16:30:34 +0000 (11:30 -0500)
committerChuck Lever <chuck.lever@oracle.com>
Mon, 20 Feb 2023 14:20:29 +0000 (09:20 -0500)
Now that each ->accept method has been converted, the
svcxdr_init_encode() calls can be hoisted back up into the generic
RPC server code.

Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
net/sunrpc/auth_gss/svcauth_gss.c
net/sunrpc/svc.c
net/sunrpc/svcauth_unix.c

index 3d82fbd..01080d4 100644 (file)
@@ -1589,8 +1589,6 @@ svcauth_gss_accept(struct svc_rqst *rqstp)
        int             ret;
        struct sunrpc_net *sn = net_generic(SVC_NET(rqstp), sunrpc_net_id);
 
-       svcxdr_init_encode(rqstp);
-
        rqstp->rq_auth_stat = rpc_autherr_badcred;
        if (!svcdata)
                svcdata = kmalloc(sizeof(*svcdata), GFP_KERNEL);
index dc23fe4..a5f4045 100644 (file)
@@ -1262,6 +1262,8 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *resv)
                if (rqstp->rq_prog == progp->pg_prog)
                        break;
 
+       svcxdr_init_encode(rqstp);
+
        /*
         * Decode auth data, and add verifier to reply buffer.
         * We do this before anything else in order to get a decent
index 632150a..b101700 100644 (file)
@@ -772,7 +772,6 @@ svcauth_null_accept(struct svc_rqst *rqstp)
        if (cred->cr_group_info == NULL)
                return SVC_CLOSE; /* kmalloc failure - client must retry */
 
-       svcxdr_init_encode(rqstp);
        if (xdr_stream_encode_opaque_auth(&rqstp->rq_res_stream,
                                          RPC_AUTH_NULL, NULL, 0) < 0)
                return SVC_CLOSE;
@@ -855,7 +854,6 @@ svcauth_tls_accept(struct svc_rqst *rqstp)
        if (cred->cr_group_info == NULL)
                return SVC_CLOSE;
 
-       svcxdr_init_encode(rqstp);
        if (rqstp->rq_xprt->xpt_ops->xpo_start_tls) {
                p = xdr_reserve_space(&rqstp->rq_res_stream, XDR_UNIT * 2 + 8);
                if (!p)
@@ -959,7 +957,6 @@ svcauth_unix_accept(struct svc_rqst *rqstp)
                return SVC_DENIED;
        }
 
-       svcxdr_init_encode(rqstp);
        if (xdr_stream_encode_opaque_auth(&rqstp->rq_res_stream,
                                          RPC_AUTH_NULL, NULL, 0) < 0)
                return SVC_CLOSE;