From: David Howells Date: Mon, 22 Aug 2011 13:09:28 +0000 (+0100) Subject: KEYS: The dead key link reaper should be non-reentrant X-Git-Tag: v3.12-rc1~4548^2~49 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d199798bdf969873f78d48140600ff0a98a87e69;p=kernel%2Fkernel-generic.git 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 Signed-off-by: James Morris --- 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 @@ 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;