SUNRPC: Push svcxdr_init_decode() into svc_process_common()
authorChuck Lever <chuck.lever@oracle.com>
Mon, 2 Jan 2023 17:05:30 +0000 (12:05 -0500)
committerChuck Lever <chuck.lever@oracle.com>
Mon, 20 Feb 2023 14:20:09 +0000 (09:20 -0500)
Now that all vs_dispatch functions invoke svcxdr_init_decode(), it
is common code and can be pushed down into the generic RPC server.

Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
fs/lockd/svc.c
fs/nfs/callback_xdr.c
fs/nfsd/nfssvc.c
net/sunrpc/svc.c

index 59ef8a1f843f3510bcbbc157e44696df6afdb6d4..e56d8533559902ecb0cf51397b00abd12a715cc5 100644 (file)
@@ -695,7 +695,6 @@ static int nlmsvc_dispatch(struct svc_rqst *rqstp, __be32 *statp)
 {
        const struct svc_procedure *procp = rqstp->rq_procinfo;
 
-       svcxdr_init_decode(rqstp);
        if (!procp->pc_decode(rqstp, &rqstp->rq_arg_stream))
                goto out_decode_err;
 
index d0cccddb7d0885fe98f477324fdd50012faf3cb7..46d3f5986b4e5a2b23a5a99b7c9ac80f2b2d000e 100644 (file)
@@ -984,7 +984,6 @@ nfs_callback_dispatch(struct svc_rqst *rqstp, __be32 *statp)
 {
        const struct svc_procedure *procp = rqstp->rq_procinfo;
 
-       svcxdr_init_decode(rqstp);
        svcxdr_init_encode(rqstp);
 
        *statp = procp->pc_func(rqstp);
index 325d3d3f121109abfbdccabf05ab9d383f47adc1..1ed29eac80ed50b8ae3218474b715b3c9c4e0280 100644 (file)
@@ -1040,7 +1040,6 @@ int nfsd_dispatch(struct svc_rqst *rqstp, __be32 *statp)
         */
        rqstp->rq_cachetype = proc->pc_cachetype;
 
-       svcxdr_init_decode(rqstp);
        if (!proc->pc_decode(rqstp, &rqstp->rq_arg_stream))
                goto out_decode_err;
 
index f06622814a958a5248d8407dd60024360c9019c9..8d1700e2ce1d8f79a8746b4caaaba7909d72322e 100644 (file)
@@ -1302,6 +1302,7 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *argv, struct kvec *resv)
        if (progp == NULL)
                goto err_bad_prog;
 
+       svcxdr_init_decode(rqstp);
        rpc_stat = progp->pg_init_request(rqstp, progp, &process);
        switch (rpc_stat) {
        case rpc_success: