blob: d54a4a11b5813781157794816c268ce1c666aefd [file] [log] [blame]
Subject: crypto: Make core builtin and init srcu early
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 12 Oct 2012 11:09:19 +0100
When the scru notifier is not initialized before the first user we
crash.
[ 0.281119] BUG: unable to handle kernel NULL pointer dereference at (null)
[ 0.281124] IP: [<ffffffff8108ee6d>] __srcu_read_lock+0x2f/0x79
Make the core code built-in for now and enfore early init.
FIXME: Create a static initializer for this.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
crypto/Kconfig | 2 +-
crypto/api.c | 7 +++++++
2 files changed, 8 insertions(+), 1 deletion(-)
Index: linux-stable/crypto/Kconfig
===================================================================
--- linux-stable.orig/crypto/Kconfig
+++ linux-stable/crypto/Kconfig
@@ -13,7 +13,7 @@ source "crypto/async_tx/Kconfig"
# Cryptographic API Configuration
#
menuconfig CRYPTO
- tristate "Cryptographic API"
+ bool "Cryptographic API"
help
This option provides the core Cryptographic API.
Index: linux-stable/crypto/api.c
===================================================================
--- linux-stable.orig/crypto/api.c
+++ linux-stable/crypto/api.c
@@ -34,6 +34,13 @@ EXPORT_SYMBOL_GPL(crypto_alg_sem);
struct srcu_notifier_head crypto_chain;
EXPORT_SYMBOL_GPL(crypto_chain);
+static int __init crypto_api_init(void)
+{
+ srcu_init_notifier_head(&crypto_chain);
+ return 0;
+}
+core_initcall(crypto_api_init);
+
static inline struct crypto_alg *crypto_alg_get(struct crypto_alg *alg)
{
atomic_inc(&alg->cra_refcnt);