SUNRPC: Convert the auth cred cache to use refcount_t
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Sun, 14 Oct 2018 14:40:29 +0000 (10:40 -0400)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Tue, 23 Oct 2018 16:24:33 +0000 (12:24 -0400)
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
include/linux/sunrpc/auth.h
net/sunrpc/auth.c
net/sunrpc/auth_generic.c
net/sunrpc/auth_gss/auth_gss.c
net/sunrpc/auth_null.c
net/sunrpc/auth_unix.c

index a71d4bd191e73ae35cd647449253885f1d30d33d..c4db9424b63bc743bcf34c0ee92c46cba903d2ff 100644 (file)
@@ -100,7 +100,7 @@ struct rpc_auth {
                                                 * differ from the flavor in
                                                 * au_ops->au_flavor in gss
                                                 * case) */
-       atomic_t                au_count;       /* Reference counter */
+       refcount_t              au_count;       /* Reference counter */
 
        struct rpc_cred_cache * au_credcache;
        /* per-flavor data */
index 4903eda5dd618285ebd9eb6173663c925190392e..ad8ead73898115d18c905597b1c18ebb0d4b58c8 100644 (file)
@@ -284,7 +284,7 @@ EXPORT_SYMBOL_GPL(rpcauth_create);
 void
 rpcauth_release(struct rpc_auth *auth)
 {
-       if (!atomic_dec_and_test(&auth->au_count))
+       if (!refcount_dec_and_test(&auth->au_count))
                return;
        auth->au_ops->destroy(auth);
 }
index f1df9837f1acaf0161d360c6e4f02122dc6ff5d8..d8831b988b1e7a3273c73ee2457615b26c24b529 100644 (file)
@@ -274,7 +274,7 @@ static const struct rpc_authops generic_auth_ops = {
 
 static struct rpc_auth generic_auth = {
        .au_ops = &generic_auth_ops,
-       .au_count = ATOMIC_INIT(0),
+       .au_count = REFCOUNT_INIT(1),
 };
 
 static bool generic_key_to_expire(struct rpc_cred *cred)
index c898a7c75e846f770a9ffa1b77f7249c417d5101..30f970cdc7f66375d45e5363dfa07cab233f4978 100644 (file)
@@ -1058,7 +1058,7 @@ gss_create_new(const struct rpc_auth_create_args *args, struct rpc_clnt *clnt)
        auth->au_flavor = flavor;
        if (gss_pseudoflavor_to_datatouch(gss_auth->mech, flavor))
                auth->au_flags |= RPCAUTH_AUTH_DATATOUCH;
-       atomic_set(&auth->au_count, 1);
+       refcount_set(&auth->au_count, 1);
        kref_init(&gss_auth->kref);
 
        err = rpcauth_init_credcache(auth);
@@ -1187,7 +1187,7 @@ gss_auth_find_or_add_hashed(const struct rpc_auth_create_args *args,
                        if (strcmp(gss_auth->target_name, args->target_name))
                                continue;
                }
-               if (!atomic_inc_not_zero(&gss_auth->rpc_auth.au_count))
+               if (!refcount_inc_not_zero(&gss_auth->rpc_auth.au_count))
                        continue;
                goto out;
        }
index ea816d7000a4707b46772ce1e9a07d09d151f988..2694a1bc026b89f8f53af6bebd257f652f3378d4 100644 (file)
@@ -21,7 +21,7 @@ static struct rpc_cred null_cred;
 static struct rpc_auth *
 nul_create(const struct rpc_auth_create_args *args, struct rpc_clnt *clnt)
 {
-       atomic_inc(&null_auth.au_count);
+       refcount_inc(&null_auth.au_count);
        return &null_auth;
 }
 
@@ -119,7 +119,7 @@ struct rpc_auth null_auth = {
        .au_flags       = RPCAUTH_AUTH_NO_CRKEY_TIMEOUT,
        .au_ops         = &authnull_ops,
        .au_flavor      = RPC_AUTH_NULL,
-       .au_count       = ATOMIC_INIT(0),
+       .au_count       = REFCOUNT_INIT(1),
 };
 
 static
index 185e56d4f9aee4da149dc73556ae0e35abed4424..4c1c7e56288f50fe268c49c0c6f10e2bcb4be401 100644 (file)
@@ -34,7 +34,7 @@ unx_create(const struct rpc_auth_create_args *args, struct rpc_clnt *clnt)
 {
        dprintk("RPC:       creating UNIX authenticator for client %p\n",
                        clnt);
-       atomic_inc(&unix_auth.au_count);
+       refcount_inc(&unix_auth.au_count);
        return &unix_auth;
 }
 
@@ -239,7 +239,7 @@ struct rpc_auth             unix_auth = {
        .au_flags       = RPCAUTH_AUTH_NO_CRKEY_TIMEOUT,
        .au_ops         = &authunix_ops,
        .au_flavor      = RPC_AUTH_UNIX,
-       .au_count       = ATOMIC_INIT(0),
+       .au_count       = REFCOUNT_INIT(1),
 };
 
 static