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

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
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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;
}

/*
+0 −2
Original line number Diff line number Diff line
@@ -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);
+1 −2
Original line number Diff line number Diff line
@@ -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
+4 −20
Original line number Diff line number Diff line
@@ -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;