52 lines
1.5 KiB
Diff
52 lines
1.5 KiB
Diff
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);
|