diff options
author | Robert Richter <robert.richter@amd.com> | 2010-09-29 10:52:25 -0400 |
---|---|---|
committer | Robert Richter <robert.richter@amd.com> | 2010-10-11 13:27:10 -0400 |
commit | 81771974ae49bf79aab60c42eac7a6d730a9ef2b (patch) | |
tree | 82f6448db358d7850f52516ebab38f90a6f06190 /drivers/oprofile | |
parent | ad0f7cfaa85fc033523a09ab1f3dd6b8ded3dff5 (diff) |
oprofile, ARM: Release resources on failure
This patch fixes a resource leak on failure, where the
oprofilefs and some counters may not released properly.
Signed-off-by: Robert Richter <robert.richter@amd.com>
Acked-by: Will Deacon <will.deacon@arm.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: <stable@kernel.org> # .35.x
LKML-Reference: <20100929145225.GJ13563@erda.amd.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/oprofile')
-rw-r--r-- | drivers/oprofile/oprofile_perf.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/oprofile/oprofile_perf.c b/drivers/oprofile/oprofile_perf.c index ebb40cb87474..f3d3df229a43 100644 --- a/drivers/oprofile/oprofile_perf.c +++ b/drivers/oprofile/oprofile_perf.c | |||
@@ -84,6 +84,7 @@ static int op_create_counter(int cpu, int event) | |||
84 | if (IS_ERR(pevent)) { | 84 | if (IS_ERR(pevent)) { |
85 | ret = PTR_ERR(pevent); | 85 | ret = PTR_ERR(pevent); |
86 | } else if (pevent->state != PERF_EVENT_STATE_ACTIVE) { | 86 | } else if (pevent->state != PERF_EVENT_STATE_ACTIVE) { |
87 | perf_event_release_kernel(pevent); | ||
87 | pr_warning("oprofile: failed to enable event %d " | 88 | pr_warning("oprofile: failed to enable event %d " |
88 | "on CPU %d\n", event, cpu); | 89 | "on CPU %d\n", event, cpu); |
89 | ret = -EBUSY; | 90 | ret = -EBUSY; |