SUNRPC: Eliminate the RQ_AUTHERR flag
authorChuck Lever <chuck.lever@oracle.com>
Thu, 15 Jul 2021 19:52:19 +0000 (15:52 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Tue, 10 Aug 2021 18:18:35 +0000 (14:18 -0400)
Now that there is an alternate method for returning an auth_stat
value, replace the RQ_AUTHERR flag with use of that new method.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
fs/nfs/callback_xdr.c
include/linux/sunrpc/svc.h
include/trace/events/sunrpc.h
net/sunrpc/svc.c

index c5348ba..7ff9915 100644 (file)
@@ -988,7 +988,8 @@ static __be32 nfs4_callback_compound(struct svc_rqst *rqstp)
 
 out_invalidcred:
        pr_warn_ratelimited("NFS: NFSv4 callback contains invalid cred\n");
-       return svc_return_autherr(rqstp, rpc_autherr_badcred);
+       rqstp->rq_auth_stat = rpc_autherr_badcred;
+       return rpc_success;
 }
 
 /*
index 35f1296..63c9210 100644 (file)
@@ -275,7 +275,6 @@ struct svc_rqst {
 #define        RQ_VICTIM       (5)                     /* about to be shut down */
 #define        RQ_BUSY         (6)                     /* request is busy */
 #define        RQ_DATA         (7)                     /* request has data */
-#define RQ_AUTHERR     (8)                     /* Request status is auth error */
        unsigned long           rq_flags;       /* flags field */
        ktime_t                 rq_qtime;       /* enqueue time */
 
@@ -533,7 +532,6 @@ unsigned int           svc_fill_write_vector(struct svc_rqst *rqstp,
 char             *svc_fill_symlink_pathname(struct svc_rqst *rqstp,
                                             struct kvec *first, void *p,
                                             size_t total);
-__be32            svc_return_autherr(struct svc_rqst *rqstp, __be32 auth_err);
 __be32            svc_generic_init_request(struct svc_rqst *rqstp,
                                            const struct svc_program *progp,
                                            struct svc_process_info *procinfo);
index c7d9e6c..169b93e 100644 (file)
@@ -1539,8 +1539,7 @@ DEFINE_SVCXDRBUF_EVENT(sendto);
        svc_rqst_flag(SPLICE_OK)                                        \
        svc_rqst_flag(VICTIM)                                           \
        svc_rqst_flag(BUSY)                                             \
-       svc_rqst_flag(DATA)                                             \
-       svc_rqst_flag_end(AUTHERR)
+       svc_rqst_flag_end(DATA)
 
 #undef svc_rqst_flag
 #undef svc_rqst_flag_end
index 2019d12..95836bf 100644 (file)
@@ -1163,22 +1163,6 @@ void svc_printk(struct svc_rqst *rqstp, const char *fmt, ...)
 static __printf(2,3) void svc_printk(struct svc_rqst *rqstp, const char *fmt, ...) {}
 #endif
 
-__be32
-svc_return_autherr(struct svc_rqst *rqstp, __be32 auth_err)
-{
-       set_bit(RQ_AUTHERR, &rqstp->rq_flags);
-       return auth_err;
-}
-EXPORT_SYMBOL_GPL(svc_return_autherr);
-
-static __be32
-svc_get_autherr(struct svc_rqst *rqstp, __be32 *statp)
-{
-       if (test_and_clear_bit(RQ_AUTHERR, &rqstp->rq_flags))
-               return *statp;
-       return rpc_auth_ok;
-}
-
 static int
 svc_generic_dispatch(struct svc_rqst *rqstp, __be32 *statp)
 {
@@ -1202,7 +1186,7 @@ svc_generic_dispatch(struct svc_rqst *rqstp, __be32 *statp)
            test_bit(RQ_DROPME, &rqstp->rq_flags))
                return 0;
 
-       if (test_bit(RQ_AUTHERR, &rqstp->rq_flags))
+       if (rqstp->rq_auth_stat != rpc_auth_ok)
                return 1;
 
        if (*statp != rpc_success)
@@ -1390,15 +1374,15 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *argv, struct kvec *resv)
                        goto release_dropit;
                if (*statp == rpc_garbage_args)
                        goto err_garbage;
-               rqstp->rq_auth_stat = svc_get_autherr(rqstp, statp);
-               if (rqstp->rq_auth_stat != rpc_auth_ok)
-                       goto err_release_bad_auth;
        } else {
                dprintk("svc: calling dispatcher\n");
                if (!process.dispatch(rqstp, statp))
                        goto release_dropit; /* Release reply info */
        }
 
+       if (rqstp->rq_auth_stat != rpc_auth_ok)
+               goto err_release_bad_auth;
+
        /* Check RPC status result */
        if (*statp != rpc_success)
                resv->iov_len = ((void*)statp)  - resv->iov_base + 4;