| From d2ff8d3296fc330f626934b74d61689fe9971081 Mon Sep 17 00:00:00 2001 |
| From: Yang Yang <yang.yang29@zte.com.cn> |
| Date: Fri, 30 Dec 2016 16:17:55 +0800 |
| Subject: [PATCH] futex: Move futex_init() to core_initcall |
| |
| commit 25f71d1c3e98ef0e52371746220d66458eac75bc upstream. |
| |
| The UEVENT user mode helper is enabled before the initcalls are executed |
| and is available when the root filesystem has been mounted. |
| |
| The user mode helper is triggered by device init calls and the executable |
| might use the futex syscall. |
| |
| futex_init() is marked __initcall which maps to device_initcall, but there |
| is no guarantee that futex_init() is invoked _before_ the first device init |
| call which triggers the UEVENT user mode helper. |
| |
| If the user mode helper uses the futex syscall before futex_init() then the |
| syscall crashes with a NULL pointer dereference because the futex subsystem |
| has not been initialized yet. |
| |
| Move futex_init() to core_initcall so futexes are initialized before the |
| root filesystem is mounted and the usermode helper becomes available. |
| |
| [ tglx: Rewrote changelog ] |
| |
| Signed-off-by: Yang Yang <yang.yang29@zte.com.cn> |
| Cc: jiang.biao2@zte.com.cn |
| Cc: jiang.zhengxiong@zte.com.cn |
| Cc: zhong.weidong@zte.com.cn |
| Cc: deng.huali@zte.com.cn |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: stable@vger.kernel.org |
| Link: http://lkml.kernel.org/r/1483085875-6130-1-git-send-email-yang.yang29@zte.com.cn |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/kernel/futex.c b/kernel/futex.c |
| index 46cb3a301bc1..e3b9561e9f8e 100644 |
| --- a/kernel/futex.c |
| +++ b/kernel/futex.c |
| @@ -3314,4 +3314,4 @@ static int __init futex_init(void) |
| |
| return 0; |
| } |
| -__initcall(futex_init); |
| +core_initcall(futex_init); |
| -- |
| 2.12.0 |
| |