KEYS: Define a __key_get() wrapper to use rather than atomic_inc()
Define a __key_get() wrapper to use rather than atomic_inc() on the key usage count as this makes it easier to hook in refcount error debugging. Signed-off-by: David Howells <dhowells@redhat.com>
This commit is contained in:
@@ -644,7 +644,7 @@ found:
|
||||
/* this races with key_put(), but that doesn't matter since key_put()
|
||||
* doesn't actually change the key
|
||||
*/
|
||||
atomic_inc(&key->usage);
|
||||
__key_get(key);
|
||||
|
||||
error:
|
||||
spin_unlock(&key_serial_lock);
|
||||
|
@@ -479,7 +479,7 @@ not_this_keyring:
|
||||
|
||||
/* we found a viable match */
|
||||
found:
|
||||
atomic_inc(&key->usage);
|
||||
__key_get(key);
|
||||
key->last_used_at = ctx->now.tv_sec;
|
||||
keyring->last_used_at = ctx->now.tv_sec;
|
||||
while (sp > 0)
|
||||
@@ -573,7 +573,7 @@ key_ref_t __keyring_search_one(key_ref_t keyring_ref,
|
||||
return ERR_PTR(-ENOKEY);
|
||||
|
||||
found:
|
||||
atomic_inc(&key->usage);
|
||||
__key_get(key);
|
||||
keyring->last_used_at = key->last_used_at =
|
||||
current_kernel_time().tv_sec;
|
||||
rcu_read_unlock();
|
||||
@@ -909,7 +909,7 @@ void __key_link(struct key *keyring, struct key *key,
|
||||
|
||||
klist = rcu_dereference_locked_keyring(keyring);
|
||||
|
||||
atomic_inc(&key->usage);
|
||||
__key_get(key);
|
||||
keyring->last_used_at = key->last_used_at =
|
||||
current_kernel_time().tv_sec;
|
||||
|
||||
|
@@ -235,7 +235,7 @@ int install_session_keyring_to_cred(struct cred *cred, struct key *keyring)
|
||||
if (IS_ERR(keyring))
|
||||
return PTR_ERR(keyring);
|
||||
} else {
|
||||
atomic_inc(&keyring->usage);
|
||||
__key_get(keyring);
|
||||
}
|
||||
|
||||
/* install the keyring */
|
||||
@@ -544,7 +544,7 @@ try_again:
|
||||
}
|
||||
|
||||
key = ctx.cred->thread_keyring;
|
||||
atomic_inc(&key->usage);
|
||||
__key_get(key);
|
||||
key_ref = make_key_ref(key, 1);
|
||||
break;
|
||||
|
||||
@@ -562,7 +562,7 @@ try_again:
|
||||
}
|
||||
|
||||
key = ctx.cred->process_keyring;
|
||||
atomic_inc(&key->usage);
|
||||
__key_get(key);
|
||||
key_ref = make_key_ref(key, 1);
|
||||
break;
|
||||
|
||||
@@ -593,7 +593,7 @@ try_again:
|
||||
|
||||
rcu_read_lock();
|
||||
key = rcu_dereference(ctx.cred->session_keyring);
|
||||
atomic_inc(&key->usage);
|
||||
__key_get(key);
|
||||
rcu_read_unlock();
|
||||
key_ref = make_key_ref(key, 1);
|
||||
break;
|
||||
@@ -606,7 +606,7 @@ try_again:
|
||||
}
|
||||
|
||||
key = ctx.cred->user->uid_keyring;
|
||||
atomic_inc(&key->usage);
|
||||
__key_get(key);
|
||||
key_ref = make_key_ref(key, 1);
|
||||
break;
|
||||
|
||||
@@ -618,7 +618,7 @@ try_again:
|
||||
}
|
||||
|
||||
key = ctx.cred->user->session_keyring;
|
||||
atomic_inc(&key->usage);
|
||||
__key_get(key);
|
||||
key_ref = make_key_ref(key, 1);
|
||||
break;
|
||||
|
||||
@@ -632,7 +632,7 @@ try_again:
|
||||
if (!key)
|
||||
goto error;
|
||||
|
||||
atomic_inc(&key->usage);
|
||||
__key_get(key);
|
||||
key_ref = make_key_ref(key, 1);
|
||||
break;
|
||||
|
||||
@@ -648,7 +648,7 @@ try_again:
|
||||
} else {
|
||||
rka = ctx.cred->request_key_auth->payload.data;
|
||||
key = rka->dest_keyring;
|
||||
atomic_inc(&key->usage);
|
||||
__key_get(key);
|
||||
}
|
||||
up_read(&ctx.cred->request_key_auth->sem);
|
||||
if (!key)
|
||||
|
مرجع در شماره جدید
Block a user