diff options
| author | Vladimir Zapolskiy <vladimir.zapolskiy@nokia.com> | 2011-12-22 10:15:40 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2011-12-23 05:58:34 -0500 |
| commit | 55205c916e179e09773d98d290334d319f45ac6b (patch) | |
| tree | b51bd159071588eaba54646a8a0d5e9f96112537 | |
| parent | b9e26dfdad5a4f9cbdaacafac6998614cc9c41bc (diff) | |
oprofile, arm/sh: Fix oprofile_arch_exit() linkage issue
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 <vladimir.zapolskiy@nokia.com>
Signed-off-by: Robert Richter <robert.richter@amd.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: oprofile-list <oprofile-list@lists.sourceforge.net>
Cc: <stable@kernel.org>
Link: http://lkml.kernel.org/r/20111222151540.GB16765@erda.amd.com
Signed-off-by: Ingo Molnar <mingo@elte.hu>
| -rw-r--r-- | arch/arm/oprofile/common.c | 2 | ||||
| -rw-r--r-- | arch/sh/oprofile/common.c | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/arch/arm/oprofile/common.c b/arch/arm/oprofile/common.c index c074e66ad224..4e0a371630b3 100644 --- a/arch/arm/oprofile/common.c +++ b/arch/arm/oprofile/common.c | |||
| @@ -116,7 +116,7 @@ int __init oprofile_arch_init(struct oprofile_operations *ops) | |||
| 116 | return oprofile_perf_init(ops); | 116 | return oprofile_perf_init(ops); |
| 117 | } | 117 | } |
| 118 | 118 | ||
| 119 | void __exit oprofile_arch_exit(void) | 119 | void oprofile_arch_exit(void) |
| 120 | { | 120 | { |
| 121 | oprofile_perf_exit(); | 121 | oprofile_perf_exit(); |
| 122 | } | 122 | } |
diff --git a/arch/sh/oprofile/common.c b/arch/sh/oprofile/common.c index b4c2d2b946dd..e4dd5d5a1115 100644 --- a/arch/sh/oprofile/common.c +++ b/arch/sh/oprofile/common.c | |||
| @@ -49,7 +49,7 @@ int __init oprofile_arch_init(struct oprofile_operations *ops) | |||
| 49 | return oprofile_perf_init(ops); | 49 | return oprofile_perf_init(ops); |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | void __exit oprofile_arch_exit(void) | 52 | void oprofile_arch_exit(void) |
| 53 | { | 53 | { |
| 54 | oprofile_perf_exit(); | 54 | oprofile_perf_exit(); |
| 55 | kfree(sh_pmu_op_name); | 55 | kfree(sh_pmu_op_name); |
| @@ -60,5 +60,5 @@ int __init oprofile_arch_init(struct oprofile_operations *ops) | |||
| 60 | ops->backtrace = sh_backtrace; | 60 | ops->backtrace = sh_backtrace; |
| 61 | return -ENODEV; | 61 | return -ENODEV; |
| 62 | } | 62 | } |
| 63 | void __exit oprofile_arch_exit(void) {} | 63 | void oprofile_arch_exit(void) {} |
| 64 | #endif /* CONFIG_HW_PERF_EVENTS */ | 64 | #endif /* CONFIG_HW_PERF_EVENTS */ |
