|
@@ -134,8 +134,10 @@ static noinline void key_gc_unused_keys(struct list_head *keys)
|
|
kdebug("- %u", key->serial);
|
|
kdebug("- %u", key->serial);
|
|
key_check(key);
|
|
key_check(key);
|
|
|
|
|
|
- /* Throw away the key data */
|
|
|
|
- if (key->type->destroy)
|
|
|
|
|
|
+ /* Throw away the key data if the key is instantiated */
|
|
|
|
+ if (test_bit(KEY_FLAG_INSTANTIATED, &key->flags) &&
|
|
|
|
+ !test_bit(KEY_FLAG_NEGATIVE, &key->flags) &&
|
|
|
|
+ key->type->destroy)
|
|
key->type->destroy(key);
|
|
key->type->destroy(key);
|
|
|
|
|
|
security_key_free(key);
|
|
security_key_free(key);
|