Browse Source

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>
David Howells 14 years ago
parent
commit
d199798bdf
1 changed files with 3 additions and 3 deletions
  1. 3 3
      security/keys/gc.c

+ 3 - 3
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;