diff options
Diffstat (limited to 'security/keys/key.c')
-rw-r--r-- | security/keys/key.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/security/keys/key.c b/security/keys/key.c index 06783cffb3af..c9bf66ac36e0 100644 --- a/security/keys/key.c +++ b/security/keys/key.c | |||
@@ -955,6 +955,28 @@ void key_revoke(struct key *key) | |||
955 | EXPORT_SYMBOL(key_revoke); | 955 | EXPORT_SYMBOL(key_revoke); |
956 | 956 | ||
957 | /** | 957 | /** |
958 | * key_invalidate - Invalidate a key. | ||
959 | * @key: The key to be invalidated. | ||
960 | * | ||
961 | * Mark a key as being invalidated and have it cleaned up immediately. The key | ||
962 | * is ignored by all searches and other operations from this point. | ||
963 | */ | ||
964 | void key_invalidate(struct key *key) | ||
965 | { | ||
966 | kenter("%d", key_serial(key)); | ||
967 | |||
968 | key_check(key); | ||
969 | |||
970 | if (!test_bit(KEY_FLAG_INVALIDATED, &key->flags)) { | ||
971 | down_write_nested(&key->sem, 1); | ||
972 | if (!test_and_set_bit(KEY_FLAG_INVALIDATED, &key->flags)) | ||
973 | key_schedule_gc_links(); | ||
974 | up_write(&key->sem); | ||
975 | } | ||
976 | } | ||
977 | EXPORT_SYMBOL(key_invalidate); | ||
978 | |||
979 | /** | ||
958 | * register_key_type - Register a type of key. | 980 | * register_key_type - Register a type of key. |
959 | * @ktype: The new key type. | 981 | * @ktype: The new key type. |
960 | * | 982 | * |
@@ -980,6 +1002,8 @@ int register_key_type(struct key_type *ktype) | |||
980 | 1002 | ||
981 | /* store the type */ | 1003 | /* store the type */ |
982 | list_add(&ktype->link, &key_types_list); | 1004 | list_add(&ktype->link, &key_types_list); |
1005 | |||
1006 | pr_notice("Key type %s registered\n", ktype->name); | ||
983 | ret = 0; | 1007 | ret = 0; |
984 | 1008 | ||
985 | out: | 1009 | out: |
@@ -1002,6 +1026,7 @@ void unregister_key_type(struct key_type *ktype) | |||
1002 | list_del_init(&ktype->link); | 1026 | list_del_init(&ktype->link); |
1003 | downgrade_write(&key_types_sem); | 1027 | downgrade_write(&key_types_sem); |
1004 | key_gc_keytype(ktype); | 1028 | key_gc_keytype(ktype); |
1029 | pr_notice("Key type %s unregistered\n", ktype->name); | ||
1005 | up_read(&key_types_sem); | 1030 | up_read(&key_types_sem); |
1006 | } | 1031 | } |
1007 | EXPORT_SYMBOL(unregister_key_type); | 1032 | EXPORT_SYMBOL(unregister_key_type); |