diff options
author | David Howells <dhowells@redhat.com> | 2011-08-22 14:09:28 +0100 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2011-08-23 09:57:36 +1000 |
commit | d199798bdf969873f78d48140600ff0a98a87e69 (patch) | |
tree | fb0fbfe0eda27054eae9c9efe0240ace297c3661 | |
parent | b072e9bc2fe9aeff4e104e80e479160349f474a9 (diff) | |
download | lwn-d199798bdf969873f78d48140600ff0a98a87e69.tar.gz lwn-d199798bdf969873f78d48140600ff0a98a87e69.zip |
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>
-rw-r--r-- | security/keys/gc.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/security/keys/gc.c b/security/keys/gc.c index b23db3fbb32d..d67e88b791f2 100644 --- a/security/keys/gc.c +++ b/security/keys/gc.c @@ -51,7 +51,7 @@ void key_schedule_gc(time_t gc_at) 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 @@ static void key_gc_timer_func(unsigned long data) { kenter(""); key_gc_next_run = LONG_MAX; - schedule_work(&key_gc_work); + queue_work(system_nrt_wq, &key_gc_work); } /* @@ -206,7 +206,7 @@ gc_released_our_lock: 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; |