x86, percpu: Fix DECLARE/DEFINE_PER_CPU_PAGE_ALIGNED()
authorTejun Heo <tj@kernel.org>
Mon, 3 Aug 2009 05:10:11 +0000 (14:10 +0900)
committerTejun Heo <tj@kernel.org>
Mon, 3 Aug 2009 16:29:24 +0000 (01:29 +0900)
DECLARE/DEFINE_PER_CPU_PAGE_ALIGNED() put percpu variables in
.page_aligned section without adding any alignment restrictions.
Currently, this doesn't cause any problem because all users of the
macros have explicit page alignment and page-sized but it's much safer
to enforce page alignment from the macros.  After all, it's what they
claim to do.

Add __aligned(PAGE_SIZE) to DECLARE/DEFINE_PER_CPU_PAGE_ALIGNED() and
drop explicit alignment from it users.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
arch/x86/kernel/cpu/common.c
include/linux/percpu-defs.h

index f1961c0..12493c5 100644 (file)
@@ -1008,8 +1008,7 @@ static const unsigned int exception_stack_sizes[N_EXCEPTION_STACKS] = {
 };
 
 static DEFINE_PER_CPU_PAGE_ALIGNED(char, exception_stacks
-       [(N_EXCEPTION_STACKS - 1) * EXCEPTION_STKSZ + DEBUG_STKSZ])
-       __aligned(PAGE_SIZE);
+       [(N_EXCEPTION_STACKS - 1) * EXCEPTION_STKSZ + DEBUG_STKSZ]);
 
 /* May not be marked __init: used by software suspend */
 void syscall_init(void)
index 68438e1..afd5f8b 100644 (file)
 /*
  * Declaration/definition used for per-CPU variables that must be page aligned.
  */
-#define DECLARE_PER_CPU_PAGE_ALIGNED(type, name)                               \
-       DECLARE_PER_CPU_SECTION(type, name, ".page_aligned")
+#define DECLARE_PER_CPU_PAGE_ALIGNED(type, name)                       \
+       DECLARE_PER_CPU_SECTION(type, name, ".page_aligned")            \
+       __aligned(PAGE_SIZE)
 
 #define DEFINE_PER_CPU_PAGE_ALIGNED(type, name)                                \
-       DEFINE_PER_CPU_SECTION(type, name, ".page_aligned")
+       DEFINE_PER_CPU_SECTION(type, name, ".page_aligned")             \
+       __aligned(PAGE_SIZE)
 
 /*
  * Intermodule exports for per-CPU variables.