[PATCH] trigger a syntax error if percpu macros are incorrectly used
get_cpu_var()/per_cpu()/__get_cpu_var() arguments must be simple identifiers. Otherwise the arch dependent implementations might break. This patch enforces the correct usage of the macros by producing a syntax error if the variable is not a simple identifier. Signed-off-by: Jan Blunck <jblunck@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:

committed by
Linus Torvalds

parent
0a2966b48f
commit
632bbfeee4
@@ -14,7 +14,9 @@ extern unsigned long __per_cpu_offset[NR_CPUS];
|
||||
__attribute__((__section__(".data.percpu"))) __typeof__(type) per_cpu__##name
|
||||
|
||||
/* var is in discarded region: offset to particular copy we want */
|
||||
#define per_cpu(var, cpu) (*RELOC_HIDE(&per_cpu__##var, __per_cpu_offset[cpu]))
|
||||
#define per_cpu(var, cpu) (*({ \
|
||||
extern int simple_indentifier_##var(void); \
|
||||
RELOC_HIDE(&per_cpu__##var, __per_cpu_offset[cpu]); }))
|
||||
#define __get_cpu_var(var) per_cpu(var, smp_processor_id())
|
||||
#define __raw_get_cpu_var(var) per_cpu(var, raw_smp_processor_id())
|
||||
|
||||
|
Reference in New Issue
Block a user