From bc6e853d4b27055056eebfd871aaf0fc60405b0f Mon Sep 17 00:00:00 2001 From: Richard Braun Date: Mon, 29 Jan 2018 00:52:40 +0100 Subject: Fix undefined behavior in conditional macro replacement MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See C11 6.10.3 ยง11 : If there are sequences of preprocessing tokens within the list of arguments that would otherwise act as preprocessing directives, the behavior is undefined. --- kern/thread.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'kern/thread.c') diff --git a/kern/thread.c b/kern/thread.c index 601cc3fe..330b5375 100644 --- a/kern/thread.c +++ b/kern/thread.c @@ -2310,6 +2310,15 @@ thread_setup(void) return 0; } +#ifdef CONFIG_THREAD_STACK_GUARD +#define THREAD_STACK_GUARD_INIT_OP_DEPS \ + INIT_OP_DEP(vm_kmem_setup, true), \ + INIT_OP_DEP(vm_map_setup, true), \ + INIT_OP_DEP(vm_page_setup, true), +#else /* CONFIG_THREAD_STACK_GUARD */ +#define THREAD_STACK_GUARD_INIT_OP_DEPS +#endif /* CONFIG_THREAD_STACK_GUARD */ + INIT_OP_DEFINE(thread_setup, INIT_OP_DEP(cpumap_setup, true), INIT_OP_DEP(kmem_setup, true), @@ -2318,12 +2327,8 @@ INIT_OP_DEFINE(thread_setup, INIT_OP_DEP(task_setup, true), INIT_OP_DEP(thread_bootstrap, true), INIT_OP_DEP(turnstile_setup, true), -#ifdef CONFIG_THREAD_STACK_GUARD - INIT_OP_DEP(vm_kmem_setup, true), - INIT_OP_DEP(vm_map_setup, true), - INIT_OP_DEP(vm_page_setup, true), -#endif - ); + THREAD_STACK_GUARD_INIT_OP_DEPS +); void __init thread_ap_setup(void) -- cgit v1.2.3