Make the key reaper non-reentrant by sticking it on the appropriate system work
queue when we queue it. This will allow it to have global state and drop
locks. It should probably be non-reentrant already as it may spend a long time
holding the key serial spinlock, and so multiple entrants can spend long
periods of time just sitting there spinning, waiting to get the lock.
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: James Morris <jmorris@namei.org>
key_check(key);
if (atomic_dec_and_test(&key->usage))
- schedule_work(&key_gc_unused_work);
+ queue_work(system_nrt_wq, &key_gc_unused_work);
}
}
EXPORT_SYMBOL(key_put);