[tip: perf/core] perf/x86: Unregister PMI handler on PMU init failure
"tip-bot2 for Dapeng Mi" <[email protected]>
| Newsgroups | org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <178654388916.442315.10720421634068939626.tip-bot2@tip-bot2> |
The following commit has been merged into the perf/core branch of tip: Commit-ID: 91787047b1dc52b1fee68b07f79af70aae5fce47 Gitweb: https://git.kernel.org/tip/91787047b1dc52b1fee68b07f79af70aae5fce47 Author: Dapeng Mi <[email protected]> AuthorDate: Fri, 17 Jul 2026 16:03:35 +08:00 Committer: Peter Zijlstra <[email protected]> CommitterDate: Mon, 10 Aug 2026 15:05:47 +02:00 perf/x86: Unregister PMI handler on PMU init failure Fix an NMI handler leak in init_hw_perf_events(). When PMU initialization fails after register_nmi_handler(), the error path exits without calling unregister_nmi_handler(), leaving a stale NMI_LOCAL "PMI" handler registered. Add the missing call before clearing x86_pmu state. Signed-off-by: Dapeng Mi <[email protected]> Signed-off-by: Peter Zijlstra (Intel) <[email protected]> Reviewed-by: Thomas Falcon <[email protected]> Reviewed-by: Zide Chen <[email protected]> Link: https://patch.msgid.link/[email protected] --- arch/x86/events/core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c index af0b67f..872d07a 100644 --- a/arch/x86/events/core.c +++ b/arch/x86/events/core.c @@ -2219,7 +2219,7 @@ static int __init init_hw_perf_events(void) err = cpuhp_setup_state(CPUHP_PERF_X86_PREPARE, "perf/x86:prepare", x86_pmu_prepare_cpu, x86_pmu_dead_cpu); if (err) - return err; + goto pmi_unregister; err = cpuhp_setup_state(CPUHP_AP_PERF_X86_STARTING, "perf/x86:starting", x86_pmu_starting_cpu, @@ -2273,6 +2273,8 @@ out1: cpuhp_remove_state(CPUHP_AP_PERF_X86_STARTING); out: cpuhp_remove_state(CPUHP_PERF_X86_PREPARE); +pmi_unregister: + unregister_nmi_handler(NMI_LOCAL, "PMI"); out_bad_pmu: memset(&x86_pmu, 0, sizeof(x86_pmu)); return err;