SUNRPC: Convert auth creds to use refcount_t
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Sun, 14 Oct 2018 14:34:31 +0000 (10:34 -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_null.c

index a7fc8f5..a71d4bd 100644 (file)
@@ -67,7 +67,7 @@ struct rpc_cred {
        const struct rpc_credops *cr_ops;
        unsigned long           cr_expire;      /* when to gc */
        unsigned long           cr_flags;       /* various flags */
-       atomic_t                cr_count;       /* ref count */
+       refcount_t              cr_count;       /* ref count */
 
        kuid_t                  cr_uid;
 
@@ -208,7 +208,7 @@ char *                      rpcauth_stringify_acceptor(struct rpc_cred *);
 static inline
 struct rpc_cred *get_rpccred(struct rpc_cred *cred)
 {
-       if (cred != NULL && atomic_inc_not_zero(&cred->cr_count))
+       if (cred != NULL && refcount_inc_not_zero(&cred->cr_count))
                return cred;
        return NULL;
 }
index 77748e5..4903eda 100644 (file)
@@ -495,7 +495,7 @@ rpcauth_prune_expired(struct list_head *free, int nr_to_scan)
 
                if (nr_to_scan-- == 0)
                        break;
-               if (atomic_read(&cred->cr_count) > 1) {
+               if (refcount_read(&cred->cr_count) > 1) {
                        rpcauth_lru_remove_locked(cred);
                        continue;
                }
@@ -589,7 +589,7 @@ rpcauth_lookup_credcache(struct rpc_auth *auth, struct auth_cred * acred,
                        continue;
                if (flags & RPCAUTH_LOOKUP_RCU) {
                        if (test_bit(RPCAUTH_CRED_NEW, &entry->cr_flags) ||
-                           atomic_read(&entry->cr_count) == 0)
+                           refcount_read(&entry->cr_count) == 0)
                                continue;
                        cred = entry;
                        break;
@@ -623,7 +623,7 @@ rpcauth_lookup_credcache(struct rpc_auth *auth, struct auth_cred * acred,
        if (cred == NULL) {
                cred = new;
                set_bit(RPCAUTH_CRED_HASHED, &cred->cr_flags);
-               atomic_inc(&cred->cr_count);
+               refcount_inc(&cred->cr_count);
                hlist_add_head_rcu(&cred->cr_hash, &cache->hashtable[nr]);
        } else
                list_add_tail(&new->cr_lru, &free);
@@ -670,7 +670,7 @@ rpcauth_init_cred(struct rpc_cred *cred, const struct auth_cred *acred,
 {
        INIT_HLIST_NODE(&cred->cr_hash);
        INIT_LIST_HEAD(&cred->cr_lru);
-       atomic_set(&cred->cr_count, 1);
+       refcount_set(&cred->cr_count, 1);
        cred->cr_auth = auth;
        cred->cr_ops = ops;
        cred->cr_expire = jiffies;
@@ -739,9 +739,9 @@ put_rpccred(struct rpc_cred *cred)
        if (cred == NULL)
                return;
        rcu_read_lock();
-       if (atomic_dec_and_test(&cred->cr_count))
+       if (refcount_dec_and_test(&cred->cr_count))
                goto destroy;
-       if (atomic_read(&cred->cr_count) != 1 ||
+       if (refcount_read(&cred->cr_count) != 1 ||
            !test_bit(RPCAUTH_CRED_HASHED, &cred->cr_flags))
                goto out;
        if (test_bit(RPCAUTH_CRED_UPTODATE, &cred->cr_flags) != 0) {
@@ -752,7 +752,7 @@ put_rpccred(struct rpc_cred *cred)
                        rpcauth_lru_remove(cred);
        } else if (rpcauth_unhash_cred(cred)) {
                rpcauth_lru_remove(cred);
-               if (atomic_dec_and_test(&cred->cr_count))
+               if (refcount_dec_and_test(&cred->cr_count))
                        goto destroy;
        }
 out:
index a7c00b4..ea816d7 100644 (file)
@@ -138,6 +138,6 @@ struct rpc_cred null_cred = {
        .cr_lru         = LIST_HEAD_INIT(null_cred.cr_lru),
        .cr_auth        = &null_auth,
        .cr_ops         = &null_credops,
-       .cr_count       = ATOMIC_INIT(2),
+       .cr_count       = REFCOUNT_INIT(2),
        .cr_flags       = 1UL << RPCAUTH_CRED_UPTODATE,
 };