From 8b89920feaa7778188eca5e40fef5f4470f7c57f Mon Sep 17 00:00:00 2001 From: David Howells Date: Tue, 27 Apr 2010 13:13:08 -0700 Subject: [PATCH] --- yaml --- r: 190318 b: refs/heads/master c: 03449cd9eaa4fa3a7faa4a59474bafe2e90bd143 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/security/keys/request_key.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 34258f45f684..3d41c64c5966 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a2cb9aeb3c9b2475955cec328487484034f414e4 +refs/heads/master: 03449cd9eaa4fa3a7faa4a59474bafe2e90bd143 diff --git a/trunk/security/keys/request_key.c b/trunk/security/keys/request_key.c index ea97c3120d66..d737cea5347c 100644 --- a/trunk/security/keys/request_key.c +++ b/trunk/security/keys/request_key.c @@ -339,8 +339,10 @@ static int construct_alloc_key(struct key_type *type, key_already_present: mutex_unlock(&key_construction_mutex); - if (dest_keyring) + if (dest_keyring) { + __key_link(dest_keyring, key_ref_to_ptr(key_ref)); up_write(&dest_keyring->sem); + } mutex_unlock(&user->cons_lock); key_put(key); *_key = key = key_ref_to_ptr(key_ref); @@ -431,6 +433,11 @@ struct key *request_key_and_link(struct key_type *type, if (!IS_ERR(key_ref)) { key = key_ref_to_ptr(key_ref); + if (dest_keyring) { + construct_get_dest_keyring(&dest_keyring); + key_link(dest_keyring, key); + key_put(dest_keyring); + } } else if (PTR_ERR(key_ref) != -EAGAIN) { key = ERR_CAST(key_ref); } else {