From: David Howells Date: Mon, 22 Aug 2011 13:09:20 +0000 (+0100) Subject: KEYS: Make the key reaper non-reentrant X-Git-Tag: firefly_0821_release~3680^2~4222^2~50 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=b072e9bc2fe9aeff4e104e80e479160349f474a9;p=firefly-linux-kernel-4.4.55.git KEYS: Make the key reaper non-reentrant 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 Signed-off-by: James Morris --- diff --git a/security/keys/key.c b/security/keys/key.c index 991a15f1e85f..1f3ed44a83c0 100644 --- a/security/keys/key.c +++ b/security/keys/key.c @@ -602,7 +602,7 @@ void key_put(struct key *key) 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);