diff options
author | David Howells <dhowells@redhat.com> | 2019-06-19 18:10:15 +0300 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2019-06-19 18:10:15 +0300 |
commit | e59428f721ee096d8a020504ea908a6f0d952735 (patch) | |
tree | 4efe82c08f4a65a5a8834a7b75f831569e03c3ba /security/keys/request_key.c | |
parent | a09003b5d7cea71ce4b59e409d5a7158c789e1b4 (diff) | |
download | linux-e59428f721ee096d8a020504ea908a6f0d952735.tar.xz |
keys: Move the RCU locks outwards from the keyring search functions
Move the RCU locks outwards from the keyring search functions so that it
will become possible to provide an RCU-capable partial request_key()
function in a later commit.
Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'security/keys/request_key.c')
-rw-r--r-- | security/keys/request_key.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/security/keys/request_key.c b/security/keys/request_key.c index 244e538d113f..bf1d223ec21c 100644 --- a/security/keys/request_key.c +++ b/security/keys/request_key.c @@ -385,7 +385,9 @@ static int construct_alloc_key(struct keyring_search_context *ctx, * waited for locks */ mutex_lock(&key_construction_mutex); - key_ref = search_process_keyrings(ctx); + rcu_read_lock(); + key_ref = search_process_keyrings_rcu(ctx); + rcu_read_unlock(); if (!IS_ERR(key_ref)) goto key_already_present; @@ -561,7 +563,9 @@ struct key *request_key_and_link(struct key_type *type, } /* search all the process keyrings for a key */ - key_ref = search_process_keyrings(&ctx); + rcu_read_lock(); + key_ref = search_process_keyrings_rcu(&ctx); + rcu_read_unlock(); if (!IS_ERR(key_ref)) { if (dest_keyring) { |