diff options
author | Tejun Heo <tj@kernel.org> | 2009-10-29 09:34:15 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2009-10-29 09:34:15 -0400 |
commit | 545695fb41da117928ab946067a42d9e15fd009d (patch) | |
tree | 1ea32c45a6f6efb03a88f99278f065054a5de3e2 /include/linux/percpu.h | |
parent | e0fdb0e050eae331046385643618f12452aa7e73 (diff) |
percpu: make accessors check for percpu pointer in sparse
The previous patch made sparse warn about percpu variables being used
directly without going through percpu accessors. This patch
implements the other half - checking whether non percpu variable is
passed into percpu accessors.
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'include/linux/percpu.h')
-rw-r--r-- | include/linux/percpu.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/percpu.h b/include/linux/percpu.h index 2c0d31a3f6b6..42878f0cd0e2 100644 --- a/include/linux/percpu.h +++ b/include/linux/percpu.h | |||
@@ -237,6 +237,7 @@ extern void __bad_size_call_parameter(void); | |||
237 | 237 | ||
238 | #define __pcpu_size_call_return(stem, variable) \ | 238 | #define __pcpu_size_call_return(stem, variable) \ |
239 | ({ typeof(variable) pscr_ret__; \ | 239 | ({ typeof(variable) pscr_ret__; \ |
240 | __verify_pcpu_ptr(&(variable)); \ | ||
240 | switch(sizeof(variable)) { \ | 241 | switch(sizeof(variable)) { \ |
241 | case 1: pscr_ret__ = stem##1(variable);break; \ | 242 | case 1: pscr_ret__ = stem##1(variable);break; \ |
242 | case 2: pscr_ret__ = stem##2(variable);break; \ | 243 | case 2: pscr_ret__ = stem##2(variable);break; \ |
@@ -250,6 +251,7 @@ extern void __bad_size_call_parameter(void); | |||
250 | 251 | ||
251 | #define __pcpu_size_call(stem, variable, ...) \ | 252 | #define __pcpu_size_call(stem, variable, ...) \ |
252 | do { \ | 253 | do { \ |
254 | __verify_pcpu_ptr(&(variable)); \ | ||
253 | switch(sizeof(variable)) { \ | 255 | switch(sizeof(variable)) { \ |
254 | case 1: stem##1(variable, __VA_ARGS__);break; \ | 256 | case 1: stem##1(variable, __VA_ARGS__);break; \ |
255 | case 2: stem##2(variable, __VA_ARGS__);break; \ | 257 | case 2: stem##2(variable, __VA_ARGS__);break; \ |