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 <dhowells@redhat.com>
Signed-off-by: James Morris <jmorris@namei.org>
diff --git a/security/keys/key.c b/security/keys/key.c
index 991a15f..1f3ed44 100644
--- a/security/keys/key.c
+++ b/security/keys/key.c
@@ -602,7 +602,7 @@
 		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);