SUNRPC: Convert auth creds to use refcount_t
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
parent
07d02a67b7
commit
79b1818102
|
@ -67,7 +67,7 @@ struct rpc_cred {
|
||||||
const struct rpc_credops *cr_ops;
|
const struct rpc_credops *cr_ops;
|
||||||
unsigned long cr_expire; /* when to gc */
|
unsigned long cr_expire; /* when to gc */
|
||||||
unsigned long cr_flags; /* various flags */
|
unsigned long cr_flags; /* various flags */
|
||||||
atomic_t cr_count; /* ref count */
|
refcount_t cr_count; /* ref count */
|
||||||
|
|
||||||
kuid_t cr_uid;
|
kuid_t cr_uid;
|
||||||
|
|
||||||
|
@ -208,7 +208,7 @@ char * rpcauth_stringify_acceptor(struct rpc_cred *);
|
||||||
static inline
|
static inline
|
||||||
struct rpc_cred *get_rpccred(struct rpc_cred *cred)
|
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 cred;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -495,7 +495,7 @@ rpcauth_prune_expired(struct list_head *free, int nr_to_scan)
|
||||||
|
|
||||||
if (nr_to_scan-- == 0)
|
if (nr_to_scan-- == 0)
|
||||||
break;
|
break;
|
||||||
if (atomic_read(&cred->cr_count) > 1) {
|
if (refcount_read(&cred->cr_count) > 1) {
|
||||||
rpcauth_lru_remove_locked(cred);
|
rpcauth_lru_remove_locked(cred);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -589,7 +589,7 @@ rpcauth_lookup_credcache(struct rpc_auth *auth, struct auth_cred * acred,
|
||||||
continue;
|
continue;
|
||||||
if (flags & RPCAUTH_LOOKUP_RCU) {
|
if (flags & RPCAUTH_LOOKUP_RCU) {
|
||||||
if (test_bit(RPCAUTH_CRED_NEW, &entry->cr_flags) ||
|
if (test_bit(RPCAUTH_CRED_NEW, &entry->cr_flags) ||
|
||||||
atomic_read(&entry->cr_count) == 0)
|
refcount_read(&entry->cr_count) == 0)
|
||||||
continue;
|
continue;
|
||||||
cred = entry;
|
cred = entry;
|
||||||
break;
|
break;
|
||||||
|
@ -623,7 +623,7 @@ rpcauth_lookup_credcache(struct rpc_auth *auth, struct auth_cred * acred,
|
||||||
if (cred == NULL) {
|
if (cred == NULL) {
|
||||||
cred = new;
|
cred = new;
|
||||||
set_bit(RPCAUTH_CRED_HASHED, &cred->cr_flags);
|
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]);
|
hlist_add_head_rcu(&cred->cr_hash, &cache->hashtable[nr]);
|
||||||
} else
|
} else
|
||||||
list_add_tail(&new->cr_lru, &free);
|
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_HLIST_NODE(&cred->cr_hash);
|
||||||
INIT_LIST_HEAD(&cred->cr_lru);
|
INIT_LIST_HEAD(&cred->cr_lru);
|
||||||
atomic_set(&cred->cr_count, 1);
|
refcount_set(&cred->cr_count, 1);
|
||||||
cred->cr_auth = auth;
|
cred->cr_auth = auth;
|
||||||
cred->cr_ops = ops;
|
cred->cr_ops = ops;
|
||||||
cred->cr_expire = jiffies;
|
cred->cr_expire = jiffies;
|
||||||
|
@ -739,9 +739,9 @@ put_rpccred(struct rpc_cred *cred)
|
||||||
if (cred == NULL)
|
if (cred == NULL)
|
||||||
return;
|
return;
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
if (atomic_dec_and_test(&cred->cr_count))
|
if (refcount_dec_and_test(&cred->cr_count))
|
||||||
goto destroy;
|
goto destroy;
|
||||||
if (atomic_read(&cred->cr_count) != 1 ||
|
if (refcount_read(&cred->cr_count) != 1 ||
|
||||||
!test_bit(RPCAUTH_CRED_HASHED, &cred->cr_flags))
|
!test_bit(RPCAUTH_CRED_HASHED, &cred->cr_flags))
|
||||||
goto out;
|
goto out;
|
||||||
if (test_bit(RPCAUTH_CRED_UPTODATE, &cred->cr_flags) != 0) {
|
if (test_bit(RPCAUTH_CRED_UPTODATE, &cred->cr_flags) != 0) {
|
||||||
|
@ -752,7 +752,7 @@ put_rpccred(struct rpc_cred *cred)
|
||||||
rpcauth_lru_remove(cred);
|
rpcauth_lru_remove(cred);
|
||||||
} else if (rpcauth_unhash_cred(cred)) {
|
} else if (rpcauth_unhash_cred(cred)) {
|
||||||
rpcauth_lru_remove(cred);
|
rpcauth_lru_remove(cred);
|
||||||
if (atomic_dec_and_test(&cred->cr_count))
|
if (refcount_dec_and_test(&cred->cr_count))
|
||||||
goto destroy;
|
goto destroy;
|
||||||
}
|
}
|
||||||
out:
|
out:
|
||||||
|
|
|
@ -138,6 +138,6 @@ struct rpc_cred null_cred = {
|
||||||
.cr_lru = LIST_HEAD_INIT(null_cred.cr_lru),
|
.cr_lru = LIST_HEAD_INIT(null_cred.cr_lru),
|
||||||
.cr_auth = &null_auth,
|
.cr_auth = &null_auth,
|
||||||
.cr_ops = &null_credops,
|
.cr_ops = &null_credops,
|
||||||
.cr_count = ATOMIC_INIT(2),
|
.cr_count = REFCOUNT_INIT(2),
|
||||||
.cr_flags = 1UL << RPCAUTH_CRED_UPTODATE,
|
.cr_flags = 1UL << RPCAUTH_CRED_UPTODATE,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue