KEYS: The dead key link reaper should be non-reentrant
The dead key link reaper should be non-reentrant as it relies on global state
to keep track of where it's got to when it returns to the work queue manager to
give it some air.
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: James Morris <jmorris@namei.org>
diff --git a/security/keys/gc.c b/security/keys/gc.c
index b23db3f..d67e88b 100644
--- a/security/keys/gc.c
+++ b/security/keys/gc.c
@@ -51,7 +51,7 @@
kenter("%ld", gc_at - now);
if (gc_at <= now) {
- schedule_work(&key_gc_work);
+ queue_work(system_nrt_wq, &key_gc_work);
} else if (gc_at < key_gc_next_run) {
expires = jiffies + (gc_at - now) * HZ;
mod_timer(&key_gc_timer, expires);
@@ -65,7 +65,7 @@
{
kenter("");
key_gc_next_run = LONG_MAX;
- schedule_work(&key_gc_work);
+ queue_work(system_nrt_wq, &key_gc_work);
}
/*
@@ -206,7 +206,7 @@
key_gc_new_timer = new_timer;
key_gc_again = true;
clear_bit(0, &key_gc_executing);
- schedule_work(&key_gc_work);
+ queue_work(system_nrt_wq, &key_gc_work);
kleave(" [continue]");
return;