diff options
Diffstat (limited to 'net/sunrpc/auth_null.c')
| -rw-r--r-- | net/sunrpc/auth_null.c | 60 |
1 files changed, 29 insertions, 31 deletions
diff --git a/net/sunrpc/auth_null.c b/net/sunrpc/auth_null.c index f112f63e3705..aa3dd1098f38 100644 --- a/net/sunrpc/auth_null.c +++ b/net/sunrpc/auth_null.c @@ -18,48 +18,29 @@ # 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; - 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); + atomic_dec(&null_auth.au_count); } /* - * Create NULL creds for current process + * Lookup NULL creds for current process */ static struct rpc_cred * -nul_create_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags) +nul_lookup_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, 0); - cred->cr_flags = RPCAUTH_CRED_UPTODATE; - cred->cr_uid = acred->uid; - cred->cr_ops = &null_credops; - - return cred; + return get_rpccred(&null_cred); } /* @@ -68,7 +49,6 @@ nul_create_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags) static void nul_destroy_cred(struct rpc_cred *cred) { - kfree(cred); } /* @@ -84,7 +64,7 @@ nul_match(struct auth_cred *acred, struct rpc_cred *cred, int taskflags) * Marshal credential. */ static u32 * -nul_marshal(struct rpc_task *task, u32 *p, int ruid) +nul_marshal(struct rpc_task *task, u32 *p) { *p++ = htonl(RPC_AUTH_NULL); *p++ = 0; @@ -125,7 +105,7 @@ nul_validate(struct rpc_task *task, u32 *p) return p; } -struct rpc_authops authnull_ops = { +struct rpc_authops authnull_ops = { .owner = THIS_MODULE, .au_flavor = RPC_AUTH_NULL, #ifdef RPC_DEBUG @@ -133,14 +113,32 @@ struct rpc_authops authnull_ops = { #endif .create = nul_create, .destroy = nul_destroy, - .crcreate = nul_create_cred, + .lookup_cred = nul_lookup_cred, +}; + +static +struct rpc_auth null_auth = { + .au_cslack = 4, + .au_rslack = 2, + .au_ops = &authnull_ops, }; static struct rpc_credops null_credops = { + .cr_name = "AUTH_NULL", .crdestroy = nul_destroy_cred, .crmatch = nul_match, .crmarshal = nul_marshal, .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 +}; |
