diff options
Diffstat (limited to 'arch/mips/kernel/perf_event_mipsxx.c')
-rw-r--r-- | arch/mips/kernel/perf_event_mipsxx.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/arch/mips/kernel/perf_event_mipsxx.c b/arch/mips/kernel/perf_event_mipsxx.c index b22cc5fd596d..bda4bc9e6988 100644 --- a/arch/mips/kernel/perf_event_mipsxx.c +++ b/arch/mips/kernel/perf_event_mipsxx.c | |||
@@ -633,11 +633,7 @@ static int mipspmu_event_init(struct perf_event *event) | |||
633 | if (err) | 633 | if (err) |
634 | return err; | 634 | return err; |
635 | 635 | ||
636 | err = __hw_perf_event_init(event); | 636 | return __hw_perf_event_init(event); |
637 | if (err) | ||
638 | hw_perf_event_destroy(event); | ||
639 | |||
640 | return err; | ||
641 | } | 637 | } |
642 | 638 | ||
643 | static struct pmu pmu = { | 639 | static struct pmu pmu = { |
@@ -1262,13 +1258,14 @@ static int __hw_perf_event_init(struct perf_event *event) | |||
1262 | } | 1258 | } |
1263 | 1259 | ||
1264 | err = 0; | 1260 | err = 0; |
1265 | if (event->group_leader != event) { | 1261 | if (event->group_leader != event) |
1266 | err = validate_group(event); | 1262 | err = validate_group(event); |
1267 | if (err) | ||
1268 | return -EINVAL; | ||
1269 | } | ||
1270 | 1263 | ||
1271 | event->destroy = hw_perf_event_destroy; | 1264 | event->destroy = hw_perf_event_destroy; |
1265 | |||
1266 | if (err) | ||
1267 | event->destroy(event); | ||
1268 | |||
1272 | return err; | 1269 | return err; |
1273 | } | 1270 | } |
1274 | 1271 | ||