[36/67] oprofile, arm/sh: Fix oprofile_arch_exit() linkage issue
From: Greg KH <gregkh@suse.de>
Date: 2012-01-03 22:36:15
Also in:
lkml
3.0-stable review patch. If anyone has any objections, please let me know. ------------------ From: Vladimir Zapolskiy <redacted> commit 55205c916e179e09773d98d290334d319f45ac6b upstream. This change fixes a linking problem, which happens if oprofile is selected to be compiled as built-in: `oprofile_arch_exit' referenced in section `.init.text' of arch/arm/oprofile/built-in.o: defined in discarded section `.exit.text' of arch/arm/oprofile/built-in.o The problem is appeared after commit 87121ca504, which introduced oprofile_arch_exit() calls from __init function. Note that the aforementioned commit has been backported to stable branches, and the problem is known to be reproduced at least with 3.0.13 and 3.1.5 kernels. Signed-off-by: Vladimir Zapolskiy <redacted> Signed-off-by: Robert Richter <redacted> Cc: Will Deacon <redacted> Cc: oprofile-list <redacted> Link: http://lkml.kernel.org/r/20111222151540.GB16765@erda.amd.com Signed-off-by: Ingo Molnar <redacted> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- arch/arm/oprofile/common.c | 2 +- arch/sh/oprofile/common.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-)
--- a/arch/arm/oprofile/common.c
+++ b/arch/arm/oprofile/common.c@@ -116,7 +116,7 @@ int __init oprofile_arch_init(struct opr return oprofile_perf_init(ops); } -void __exit oprofile_arch_exit(void) +void oprofile_arch_exit(void) { oprofile_perf_exit(); } --- a/arch/sh/oprofile/common.c +++ b/arch/sh/oprofile/common.c
@@ -49,7 +49,7 @@ int __init oprofile_arch_init(struct opr return oprofile_perf_init(ops); } -void __exit oprofile_arch_exit(void) +void oprofile_arch_exit(void) { oprofile_perf_exit(); kfree(sh_pmu_op_name);
@@ -60,5 +60,5 @@ int __init oprofile_arch_init(struct opr ops->backtrace = sh_backtrace; return -ENODEV; } -void __exit oprofile_arch_exit(void) {} +void oprofile_arch_exit(void) {} #endif /* CONFIG_HW_PERF_EVENTS */