summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/s390/crypto/pkey_base.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/s390/crypto/pkey_base.c b/drivers/s390/crypto/pkey_base.c
index d60cd987c16d..c5677e1e110a 100644
--- a/drivers/s390/crypto/pkey_base.c
+++ b/drivers/s390/crypto/pkey_base.c
@@ -60,6 +60,13 @@ int pkey_handler_register(struct pkey_handler *handler)
list_add_rcu(&handler->list, &handler_list);
spin_unlock(&handler_list_write_lock);
+ /*
+ * Fast path to push the info about the updated list to the other
+ * CPUs. If removed, the other CPUs may get the updated list when the
+ * RCU context is synched. As this code is in general not performance
+ * critical and the list update mostly only occurs at the early time in
+ * system startup the focus is on concurrency versus performance.
+ */
synchronize_rcu();
module_put(handler->module);