diff options
author | David Howells <dhowells@redhat.com> | 2009-09-02 04:13:45 -0400 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2009-09-02 07:29:04 -0400 |
commit | 5593122eec26b061cc0b6fbff32118f1aadf4a27 (patch) | |
tree | f148b182ada54b722962607567bd5b1ace06640a /security/keys/key.c | |
parent | e0e817392b9acf2c98d3be80c233dddb1b52003d (diff) |
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.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/security/keys/key.c b/security/keys/key.c index 4a1297d1ada4..3762d5b1ce64 100644 --- a/security/keys/key.c +++ b/security/keys/key.c | |||
@@ -642,10 +642,8 @@ struct key *key_lookup(key_serial_t id) | |||
642 | goto error; | 642 | goto error; |
643 | 643 | ||
644 | found: | 644 | found: |
645 | /* pretend it doesn't exist if it's dead */ | 645 | /* pretend it doesn't exist if it is awaiting deletion */ |
646 | if (atomic_read(&key->usage) == 0 || | 646 | if (atomic_read(&key->usage) == 0) |
647 | test_bit(KEY_FLAG_DEAD, &key->flags) || | ||
648 | key->type == &key_type_dead) | ||
649 | goto not_found; | 647 | goto not_found; |
650 | 648 | ||
651 | /* this races with key_put(), but that doesn't matter since key_put() | 649 | /* this races with key_put(), but that doesn't matter since key_put() |