[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:
parent
0a2966b48f
commit
632bbfeee4
4 changed files with 31 additions and 15 deletions
|
|
@ -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())
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue