summaryrefslogtreecommitdiff
path: root/security/keys/key.c
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2009-09-02 09:13:45 +0100
committerJames Morris <jmorris@namei.org>2009-09-02 21:29:04 +1000
commit5593122eec26b061cc0b6fbff32118f1aadf4a27 (patch)
treef148b182ada54b722962607567bd5b1ace06640a /security/keys/key.c
parente0e817392b9acf2c98d3be80c233dddb1b52003d (diff)
downloadlinux-3.10-5593122eec26b061cc0b6fbff32118f1aadf4a27.tar.gz
linux-3.10-5593122eec26b061cc0b6fbff32118f1aadf4a27.tar.bz2
linux-3.10-5593122eec26b061cc0b6fbff32118f1aadf4a27.zip
KEYS: Deal with dead-type keys appropriately [try #6]
Allow keys for which the key type has been removed to be unlinked. Currently dead-type keys can only be disposed of by completely clearing the keyrings that point to them. Signed-off-by: David Howells <dhowells@redhat.com> Acked-by: Serge Hallyn <serue@us.ibm.com> Signed-off-by: James Morris <jmorris@namei.org>
Diffstat (limited to 'security/keys/key.c')
-rw-r--r--security/keys/key.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/security/keys/key.c b/security/keys/key.c
index 4a1297d1ada..3762d5b1ce6 100644
--- a/security/keys/key.c
+++ b/security/keys/key.c
@@ -642,10 +642,8 @@ struct key *key_lookup(key_serial_t id)
goto error;
found:
- /* pretend it doesn't exist if it's dead */
- if (atomic_read(&key->usage) == 0 ||
- test_bit(KEY_FLAG_DEAD, &key->flags) ||
- key->type == &key_type_dead)
+ /* pretend it doesn't exist if it is awaiting deletion */
+ if (atomic_read(&key->usage) == 0)
goto not_found;
/* this races with key_put(), but that doesn't matter since key_put()