diff options
author | Tejun Heo <tj@kernel.org> | 2010-02-16 20:50:50 -0500 |
---|---|---|
committer | Frederic Weisbecker <fweisbec@gmail.com> | 2010-02-27 10:23:39 -0500 |
commit | 44ee63587dce85593c22497140db16f4e5027860 (patch) | |
tree | 0b3d45f9755080f1c7362a8a2eb69e326b0e2f85 /samples/hw_breakpoint | |
parent | 018cbffe6819f6f8db20a0a3acd9bab9bfd667e4 (diff) |
percpu: Add __percpu sparse annotations to hw_breakpoint
Add __percpu sparse annotations to hw_breakpoint.
These annotations are to make sparse consider percpu variables to be
in a different address space and warn if accessed without going
through percpu accessors. This patch doesn't affect normal builds.
In kernel/hw_breakpoint.c, per_cpu(nr_task_bp_pinned, cpu)'s will
trigger spurious noderef related warnings from sparse. Changing it to
&per_cpu(nr_task_bp_pinned[0], cpu) will work around the problem but
deemed to ugly by the maintainer. Leave it alone until better
solution can be found.
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: K.Prasad <prasad@linux.vnet.ibm.com>
LKML-Reference: <4B7B4B7A.9050902@kernel.org>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Diffstat (limited to 'samples/hw_breakpoint')
-rw-r--r-- | samples/hw_breakpoint/data_breakpoint.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/samples/hw_breakpoint/data_breakpoint.c b/samples/hw_breakpoint/data_breakpoint.c index c69cbe9b2426..bd0f337afcab 100644 --- a/samples/hw_breakpoint/data_breakpoint.c +++ b/samples/hw_breakpoint/data_breakpoint.c | |||
@@ -34,7 +34,7 @@ | |||
34 | #include <linux/perf_event.h> | 34 | #include <linux/perf_event.h> |
35 | #include <linux/hw_breakpoint.h> | 35 | #include <linux/hw_breakpoint.h> |
36 | 36 | ||
37 | struct perf_event **sample_hbp; | 37 | struct perf_event * __percpu *sample_hbp; |
38 | 38 | ||
39 | static char ksym_name[KSYM_NAME_LEN] = "pid_max"; | 39 | static char ksym_name[KSYM_NAME_LEN] = "pid_max"; |
40 | module_param_string(ksym, ksym_name, KSYM_NAME_LEN, S_IRUGO); | 40 | module_param_string(ksym, ksym_name, KSYM_NAME_LEN, S_IRUGO); |
@@ -61,8 +61,8 @@ static int __init hw_break_module_init(void) | |||
61 | attr.bp_type = HW_BREAKPOINT_W | HW_BREAKPOINT_R; | 61 | attr.bp_type = HW_BREAKPOINT_W | HW_BREAKPOINT_R; |
62 | 62 | ||
63 | sample_hbp = register_wide_hw_breakpoint(&attr, sample_hbp_handler); | 63 | sample_hbp = register_wide_hw_breakpoint(&attr, sample_hbp_handler); |
64 | if (IS_ERR(sample_hbp)) { | 64 | if (IS_ERR((void __force *)sample_hbp)) { |
65 | ret = PTR_ERR(sample_hbp); | 65 | ret = PTR_ERR((void __force *)sample_hbp); |
66 | goto fail; | 66 | goto fail; |
67 | } | 67 | } |
68 | 68 | ||