perf/hw_breakpoint: use ERR_PTR_PCPU(), IS_ERR_PCPU() and PTR_ERR_PCPU() macros

Use ERR_PTR_PCPU() when returning error pointer in the percpu address
space.  Use IS_ERR_PCPU() and PTR_ERR_PCPU() when returning the error
pointer from the percpu address space.  These macros add intermediate cast
to unsigned long when switching named address spaces.

The patch will avoid future build errors due to pointer address space
mismatch with enabled strict percpu address space checks.

Link: https://lkml.kernel.org/r/20240924090813.1353586-1-ubizjak@gmail.com
Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: "Liang, Kan" <kan.liang@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Uros Bizjak 2024-09-24 11:07:13 +02:00 committed by Andrew Morton
parent 1bb5d66097
commit ad8f63f935
2 changed files with 4 additions and 4 deletions

View File

@ -849,7 +849,7 @@ register_wide_hw_breakpoint(struct perf_event_attr *attr,
cpu_events = alloc_percpu(typeof(*cpu_events)); cpu_events = alloc_percpu(typeof(*cpu_events));
if (!cpu_events) if (!cpu_events)
return (void __percpu __force *)ERR_PTR(-ENOMEM); return ERR_PTR_PCPU(-ENOMEM);
cpus_read_lock(); cpus_read_lock();
for_each_online_cpu(cpu) { for_each_online_cpu(cpu) {
@ -868,7 +868,7 @@ register_wide_hw_breakpoint(struct perf_event_attr *attr,
return cpu_events; return cpu_events;
unregister_wide_hw_breakpoint(cpu_events); unregister_wide_hw_breakpoint(cpu_events);
return (void __percpu __force *)ERR_PTR(err); return ERR_PTR_PCPU(err);
} }
EXPORT_SYMBOL_GPL(register_wide_hw_breakpoint); EXPORT_SYMBOL_GPL(register_wide_hw_breakpoint);

View File

@ -52,8 +52,8 @@ static int __init hw_break_module_init(void)
attr.bp_type = HW_BREAKPOINT_W; attr.bp_type = HW_BREAKPOINT_W;
sample_hbp = register_wide_hw_breakpoint(&attr, sample_hbp_handler, NULL); sample_hbp = register_wide_hw_breakpoint(&attr, sample_hbp_handler, NULL);
if (IS_ERR((void __force *)sample_hbp)) { if (IS_ERR_PCPU(sample_hbp)) {
ret = PTR_ERR((void __force *)sample_hbp); ret = PTR_ERR_PCPU(sample_hbp);
goto fail; goto fail;
} }