mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 11:46:19 +00:00
perf_counter: x86: Fix PMU resource leak
Dave noticed that we leak the PMU resource reservations when we fail the hardware counter init. Reported-by: David Miller <davem@davemloft.net> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Acked-by: David Miller <davem@davemloft.net> LKML-Reference: <1252483487.7746.164.camel@twins> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
611a546bec
commit
a1792cdaca
1 changed files with 6 additions and 3 deletions
|
@ -924,6 +924,8 @@ static int __hw_perf_counter_init(struct perf_counter *counter)
|
|||
if (err)
|
||||
return err;
|
||||
|
||||
counter->destroy = hw_perf_counter_destroy;
|
||||
|
||||
/*
|
||||
* Generate PMC IRQs:
|
||||
* (keep 'enabled' bit clear for now)
|
||||
|
@ -953,8 +955,6 @@ static int __hw_perf_counter_init(struct perf_counter *counter)
|
|||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
counter->destroy = hw_perf_counter_destroy;
|
||||
|
||||
/*
|
||||
* Raw event type provide the config in the event structure
|
||||
*/
|
||||
|
@ -2107,8 +2107,11 @@ const struct pmu *hw_perf_counter_init(struct perf_counter *counter)
|
|||
int err;
|
||||
|
||||
err = __hw_perf_counter_init(counter);
|
||||
if (err)
|
||||
if (err) {
|
||||
if (counter->destroy)
|
||||
counter->destroy(counter);
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
||||
return &pmu;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue