aboutsummaryrefslogtreecommitdiff
path: root/security/keys/request_key.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2009-04-13 14:41:05 -0700
committerDavid S. Miller <davem@davemloft.net>2009-04-13 14:41:05 -0700
commit83400207a07584539366f6859362db6872809a12 (patch)
treefad187f8b3bebf1b387ec42ef8143e6f4e49a256 /security/keys/request_key.c
parent0d489ffb76de0fe804cf06a9d4d11fa7342d74b9 (diff)
parent80a04d3f2f94fb68b5df05e3ac6697130bc3467a (diff)
Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
Conflicts: MAINTAINERS
Diffstat (limited to 'security/keys/request_key.c')
-rw-r--r--security/keys/request_key.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/security/keys/request_key.c b/security/keys/request_key.c
index 22a31582bfa..03fe63ed55b 100644
--- a/security/keys/request_key.c
+++ b/security/keys/request_key.c
@@ -311,7 +311,8 @@ static int construct_alloc_key(struct key_type *type,
set_bit(KEY_FLAG_USER_CONSTRUCT, &key->flags);
- down_write(&dest_keyring->sem);
+ if (dest_keyring)
+ down_write(&dest_keyring->sem);
/* attach the key to the destination keyring under lock, but we do need
* to do another check just in case someone beat us to it whilst we
@@ -322,10 +323,12 @@ static int construct_alloc_key(struct key_type *type,
if (!IS_ERR(key_ref))
goto key_already_present;
- __key_link(dest_keyring, key);
+ if (dest_keyring)
+ __key_link(dest_keyring, key);
mutex_unlock(&key_construction_mutex);
- up_write(&dest_keyring->sem);
+ if (dest_keyring)
+ up_write(&dest_keyring->sem);
mutex_unlock(&user->cons_lock);
*_key = key;
kleave(" = 0 [%d]", key_serial(key));