Patch "perf/x86/intel/cstate: Prevent hotplug callback leak" has been added to the 4.9-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
perf/x86/intel/cstate: Prevent hotplug callback leak
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
perf-x86-intel-cstate-prevent-hotplug-callback-leak.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
834fcd298003c10ce450e66960c78893cb1cc4b5Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <[email protected]>
Date: Thu, 22 Dec 2016 11:02:08 +0100
Subject: perf/x86/intel/cstate: Prevent hotplug callback leak
From: Thomas Gleixner <[email protected]>
commit 834fcd298003c10ce450e66960c78893cb1cc4b5 upstream.
If the pmu registration fails the registered hotplug callbacks are not removed. Wrong in any case, but fatal in case of a modular driver.
Replace the nonsensical state names with proper ones while at it.
--- arch/x86/events/intel/cstate.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
arch/x86/events/intel/cstate.c +7 -7
@@ -594,6 +594,9 @@ static int __init cstate_probe(const strstatic inline void cstate_cleanup (void ) { +cpuhp_remove_state_nocalls (CPUHP_AP_PERF_X86_CSTATE_ONLINE ); +cpuhp_remove_state_nocalls (CPUHP_AP_PERF_X86_CSTATE_STARTING ); +if (has_cstate_core)perf_pmu_unregister (&cstate_core_pmu);
@@ -606,16 +609,16 @@ static int __init cstate_init(void)int err;cpuhp_setup_state (CPUHP_AP_PERF_X86_CSTATE_STARTING , -"AP_PERF_X86_CSTATE_STARTING" , cstate_cpu_init, -NULL ); +"perf/x86/cstate:starting" , cstate_cpu_init,NULL );cpuhp_setup_state (CPUHP_AP_PERF_X86_CSTATE_ONLINE , -"AP_PERF_X86_CSTATE_ONLINE" ,NULL , cstate_cpu_exit); +"perf/x86/cstate:online" ,NULL , cstate_cpu_exit);if (has_cstate_core) { err =perf_pmu_register (&cstate_core_pmu, cstate_core_pmu.name,-1 );if (err) { has_cstate_core = false;pr_info ("Failed to register cstate core pmu\n" ); +cstate_cleanup ();return err; } }
@@ -629,8 +632,7 @@ static int __init cstate_init(void)return err; } } - -return err; +return 0 ; }static int __init cstate_pmu_init (void )
@@ -655,8 +657,6 @@ module_init(cstate_pmu_init); static void __exit cstate_pmu_exit(void) { -cpuhp_remove_state_nocalls (CPUHP_AP_PERF_X86_CSTATE_ONLINE ); -cpuhp_remove_state_nocalls (CPUHP_AP_PERF_X86_CSTATE_STARTING );cstate_cleanup (); }module_exit (cstate_pmu_exit);
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/timekeeping_force_unsigned_clocksource_to_nanoseconds_conversion.patch queue-4.9/perf-x86-fix-exclusion-of-bts-and-lbr-for-goldmont.patch queue-4.9/perf-x86-intel-cstate-prevent-hotplug-callback-leak.patch