Commit 3be59f74 authored by David Howells's avatar David Howells

keys: Change keyring_serialise_link_sem to a mutex

Change keyring_serialise_link_sem to a mutex as it's only ever
write-locked.
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
parent 9fd16537
...@@ -100,7 +100,7 @@ EXPORT_SYMBOL(key_type_keyring); ...@@ -100,7 +100,7 @@ EXPORT_SYMBOL(key_type_keyring);
* Semaphore to serialise link/link calls to prevent two link calls in parallel * Semaphore to serialise link/link calls to prevent two link calls in parallel
* introducing a cycle. * introducing a cycle.
*/ */
static DECLARE_RWSEM(keyring_serialise_link_sem); static DEFINE_MUTEX(keyring_serialise_link_lock);
/* /*
* Publish the name of a keyring so that it can be found by name (if it has * Publish the name of a keyring so that it can be found by name (if it has
...@@ -1206,7 +1206,7 @@ int __key_link_begin(struct key *keyring, ...@@ -1206,7 +1206,7 @@ int __key_link_begin(struct key *keyring,
const struct keyring_index_key *index_key, const struct keyring_index_key *index_key,
struct assoc_array_edit **_edit) struct assoc_array_edit **_edit)
__acquires(&keyring->sem) __acquires(&keyring->sem)
__acquires(&keyring_serialise_link_sem) __acquires(&keyring_serialise_link_lock)
{ {
struct assoc_array_edit *edit; struct assoc_array_edit *edit;
int ret; int ret;
...@@ -1228,7 +1228,7 @@ int __key_link_begin(struct key *keyring, ...@@ -1228,7 +1228,7 @@ int __key_link_begin(struct key *keyring,
/* serialise link/link calls to prevent parallel calls causing a cycle /* serialise link/link calls to prevent parallel calls causing a cycle
* when linking two keyring in opposite orders */ * when linking two keyring in opposite orders */
if (index_key->type == &key_type_keyring) if (index_key->type == &key_type_keyring)
down_write(&keyring_serialise_link_sem); mutex_lock(&keyring_serialise_link_lock);
/* Create an edit script that will insert/replace the key in the /* Create an edit script that will insert/replace the key in the
* keyring tree. * keyring tree.
...@@ -1260,7 +1260,7 @@ int __key_link_begin(struct key *keyring, ...@@ -1260,7 +1260,7 @@ int __key_link_begin(struct key *keyring,
assoc_array_cancel_edit(edit); assoc_array_cancel_edit(edit);
error_sem: error_sem:
if (index_key->type == &key_type_keyring) if (index_key->type == &key_type_keyring)
up_write(&keyring_serialise_link_sem); mutex_unlock(&keyring_serialise_link_lock);
error_krsem: error_krsem:
up_write(&keyring->sem); up_write(&keyring->sem);
kleave(" = %d", ret); kleave(" = %d", ret);
...@@ -1307,13 +1307,13 @@ void __key_link_end(struct key *keyring, ...@@ -1307,13 +1307,13 @@ void __key_link_end(struct key *keyring,
const struct keyring_index_key *index_key, const struct keyring_index_key *index_key,
struct assoc_array_edit *edit) struct assoc_array_edit *edit)
__releases(&keyring->sem) __releases(&keyring->sem)
__releases(&keyring_serialise_link_sem) __releases(&keyring_serialise_link_lock)
{ {
BUG_ON(index_key->type == NULL); BUG_ON(index_key->type == NULL);
kenter("%d,%s,", keyring->serial, index_key->type->name); kenter("%d,%s,", keyring->serial, index_key->type->name);
if (index_key->type == &key_type_keyring) if (index_key->type == &key_type_keyring)
up_write(&keyring_serialise_link_sem); mutex_unlock(&keyring_serialise_link_lock);
if (edit) { if (edit) {
if (!edit->dead_leaf) { if (!edit->dead_leaf) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment