From 3e6558b693dd1e69e3177bc248977f067a769f14 Mon Sep 17 00:00:00 2001 From: Arjan van de Ven Date: Sun, 20 Jul 2008 08:59:24 -0700 Subject: [PATCH] fastboot: hold the BKL over the async init call sequence Regular init calls are called with the BKL held; make sure the async init calls are also called with the BKL held. While this reduces parallelism a little, it does provide lock-for-lock compatibility. The hit to prallelism isn't too bad, most of the init calls are done immediately or actually block for their delays. Signed-off-by: Arjan van de Ven Signed-off-by: Ingo Molnar --- init/main.c | 6 ++++++ 1 file changed, 6 insertions(+) Index: linux-2.6.27/init/main.c =================================================================== --- linux-2.6.27.orig/init/main.c 2008-10-14 17:00:59.000000000 +0200 +++ linux-2.6.27/init/main.c 2008-10-14 17:01:38.000000000 +0200 @@ -751,8 +751,14 @@ static void __init do_async_initcalls(st { initcall_t *call; + /* + * For compatibility with normal init calls... take the BKL + * not pretty, not desirable, but compatibility first + */ + lock_kernel(); for (call = __async_initcall_start; call < __async_initcall_end; call++) do_one_initcall(*call); + unlock_kernel(); } static struct workqueue_struct *async_init_wq;