RPC: Unify AUTH_NULL credentials There is only one AUTH_NULL "credential". Signed-off-by: Trond Myklebust --- auth_null.c | 63 ++++++++++++++++++++++-------------------------------------- 1 files changed, 24 insertions(+), 39 deletions(-) Index: linux-2.6.11-rc2/net/sunrpc/auth_null.c =================================================================== --- linux-2.6.11-rc2.orig/net/sunrpc/auth_null.c +++ linux-2.6.11-rc2/net/sunrpc/auth_null.c @@ -18,32 +18,20 @@ # define RPCDBG_FACILITY RPCDBG_AUTH #endif -static struct rpc_credops null_credops; +static struct rpc_auth null_auth; +static struct rpc_cred null_cred; static struct rpc_auth * nul_create(struct rpc_clnt *clnt, rpc_authflavor_t flavor) { - struct rpc_auth *auth; - - dprintk("RPC: creating NULL authenticator for client %p\n", clnt); - if (!(auth = (struct rpc_auth *) kmalloc(sizeof(*auth),GFP_KERNEL))) - return NULL; - auth->au_cslack = 4; - auth->au_rslack = 2; - auth->au_ops = &authnull_ops; - auth->au_expire = 1800 * HZ; - atomic_set(&auth->au_count, 1); - rpcauth_init_credcache(auth); - - return (struct rpc_auth *) auth; + atomic_inc(&null_auth.au_count); + return &null_auth; } static void nul_destroy(struct rpc_auth *auth) { - dprintk("RPC: destroying NULL authenticator %p\n", auth); - rpcauth_free_credcache(auth); - kfree(auth); + atomic_dec(&null_auth.au_count); } /* @@ -52,25 +40,7 @@ nul_destroy(struct rpc_auth *auth) static struct rpc_cred * nul_lookup_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags) { - return rpcauth_lookup_credcache(auth, acred, flags); -} - -/* - * Create NULL creds for current process - */ -static struct rpc_cred * -nul_create_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags) -{ - struct rpc_cred *cred; - - if (!(cred = (struct rpc_cred *) kmalloc(sizeof(*cred),GFP_KERNEL))) - return NULL; - atomic_set(&cred->cr_count, 1); - cred->cr_flags = RPCAUTH_CRED_UPTODATE; - cred->cr_uid = acred->uid; - cred->cr_ops = &null_credops; - - return cred; + return get_rpccred(&null_cred); } /* @@ -79,7 +49,6 @@ nul_create_cred(struct rpc_auth *auth, s static void nul_destroy_cred(struct rpc_cred *cred) { - kfree(cred); } /* @@ -136,7 +105,7 @@ nul_validate(struct rpc_task *task, u32 return p; } -struct rpc_authops authnull_ops = { +struct rpc_authops authnull_ops = { .owner = THIS_MODULE, .au_flavor = RPC_AUTH_NULL, #ifdef RPC_DEBUG @@ -145,7 +114,13 @@ struct rpc_authops authnull_ops = { .create = nul_create, .destroy = nul_destroy, .lookup_cred = nul_lookup_cred, - .crcreate = nul_create_cred, +}; + +static +struct rpc_auth null_auth = { + .au_cslack = 4, + .au_rslack = 2, + .au_ops = &authnull_ops, }; static @@ -157,3 +132,13 @@ struct rpc_credops null_credops = { .crrefresh = nul_refresh, .crvalidate = nul_validate, }; + +static +struct rpc_cred null_cred = { + .cr_ops = &null_credops, + .cr_count = ATOMIC_INIT(1), + .cr_flags = RPCAUTH_CRED_UPTODATE, +#ifdef RPC_DEBUG + .cr_magic = RPCAUTH_CRED_MAGIC, +#endif +};