Commit 9082e1d9 authored by Chuck Lever's avatar Chuck Lever Committed by Anna Schumaker

SUNRPC: Eliminate the RQ_AUTHERR flag

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: default avatarChuck Lever <chuck.lever@oracle.com>
Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
parent 5c2465df
...@@ -988,7 +988,8 @@ static __be32 nfs4_callback_compound(struct svc_rqst *rqstp) ...@@ -988,7 +988,8 @@ static __be32 nfs4_callback_compound(struct svc_rqst *rqstp)
out_invalidcred: out_invalidcred:
pr_warn_ratelimited("NFS: NFSv4 callback contains invalid cred\n"); 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;
} }
/* /*
......
...@@ -275,7 +275,6 @@ struct svc_rqst { ...@@ -275,7 +275,6 @@ struct svc_rqst {
#define RQ_VICTIM (5) /* about to be shut down */ #define RQ_VICTIM (5) /* about to be shut down */
#define RQ_BUSY (6) /* request is busy */ #define RQ_BUSY (6) /* request is busy */
#define RQ_DATA (7) /* request has data */ #define RQ_DATA (7) /* request has data */
#define RQ_AUTHERR (8) /* Request status is auth error */
unsigned long rq_flags; /* flags field */ unsigned long rq_flags; /* flags field */
ktime_t rq_qtime; /* enqueue time */ ktime_t rq_qtime; /* enqueue time */
...@@ -533,7 +532,6 @@ unsigned int svc_fill_write_vector(struct svc_rqst *rqstp, ...@@ -533,7 +532,6 @@ unsigned int svc_fill_write_vector(struct svc_rqst *rqstp,
char *svc_fill_symlink_pathname(struct svc_rqst *rqstp, char *svc_fill_symlink_pathname(struct svc_rqst *rqstp,
struct kvec *first, void *p, struct kvec *first, void *p,
size_t total); size_t total);
__be32 svc_return_autherr(struct svc_rqst *rqstp, __be32 auth_err);
__be32 svc_generic_init_request(struct svc_rqst *rqstp, __be32 svc_generic_init_request(struct svc_rqst *rqstp,
const struct svc_program *progp, const struct svc_program *progp,
struct svc_process_info *procinfo); struct svc_process_info *procinfo);
......
...@@ -1539,8 +1539,7 @@ DEFINE_SVCXDRBUF_EVENT(sendto); ...@@ -1539,8 +1539,7 @@ DEFINE_SVCXDRBUF_EVENT(sendto);
svc_rqst_flag(SPLICE_OK) \ svc_rqst_flag(SPLICE_OK) \
svc_rqst_flag(VICTIM) \ svc_rqst_flag(VICTIM) \
svc_rqst_flag(BUSY) \ svc_rqst_flag(BUSY) \
svc_rqst_flag(DATA) \ svc_rqst_flag_end(DATA)
svc_rqst_flag_end(AUTHERR)
#undef svc_rqst_flag #undef svc_rqst_flag
#undef svc_rqst_flag_end #undef svc_rqst_flag_end
......
...@@ -1163,22 +1163,6 @@ void svc_printk(struct svc_rqst *rqstp, const char *fmt, ...) ...@@ -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, ...) {} static __printf(2,3) void svc_printk(struct svc_rqst *rqstp, const char *fmt, ...) {}
#endif #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 static int
svc_generic_dispatch(struct svc_rqst *rqstp, __be32 *statp) svc_generic_dispatch(struct svc_rqst *rqstp, __be32 *statp)
{ {
...@@ -1202,7 +1186,7 @@ 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)) test_bit(RQ_DROPME, &rqstp->rq_flags))
return 0; return 0;
if (test_bit(RQ_AUTHERR, &rqstp->rq_flags)) if (rqstp->rq_auth_stat != rpc_auth_ok)
return 1; return 1;
if (*statp != rpc_success) if (*statp != rpc_success)
...@@ -1390,15 +1374,15 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *argv, struct kvec *resv) ...@@ -1390,15 +1374,15 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *argv, struct kvec *resv)
goto release_dropit; goto release_dropit;
if (*statp == rpc_garbage_args) if (*statp == rpc_garbage_args)
goto err_garbage; 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 { } else {
dprintk("svc: calling dispatcher\n"); dprintk("svc: calling dispatcher\n");
if (!process.dispatch(rqstp, statp)) if (!process.dispatch(rqstp, statp))
goto release_dropit; /* Release reply info */ goto release_dropit; /* Release reply info */
} }
if (rqstp->rq_auth_stat != rpc_auth_ok)
goto err_release_bad_auth;
/* Check RPC status result */ /* Check RPC status result */
if (*statp != rpc_success) if (*statp != rpc_success)
resv->iov_len = ((void*)statp) - resv->iov_base + 4; resv->iov_len = ((void*)statp) - resv->iov_base + 4;
......
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