acpi-cpufreq: De-register CPU notifier and free struct msr on error.

If cpufreq_register_driver() fails we would free the acpi driver
related structures but not free the ones allocated
by acpi_cpufreq_boost_init() function. This meant that as
the driver error-ed out and a CPU online/offline event came
we would crash and burn as one of the CPU notifiers would point
to garbage.

Fixes: cfc9c8ed03e4 (acpi-cpufreq: Adjust the code to use the common boost attribute)
Acked-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

authored by Konrad Rzeszutek Wilk and committed by Rafael J. Wysocki eb8c68ef 4f11b85a

+4 -3
+4 -3
drivers/cpufreq/acpi-cpufreq.c
··· 919 919 } 920 920 } 921 921 922 - static void __exit acpi_cpufreq_boost_exit(void) 922 + static void acpi_cpufreq_boost_exit(void) 923 923 { 924 924 if (msrs) { 925 925 unregister_cpu_notifier(&boost_nb); ··· 969 969 acpi_cpufreq_boost_init(); 970 970 971 971 ret = cpufreq_register_driver(&acpi_cpufreq_driver); 972 - if (ret) 972 + if (ret) { 973 973 free_acpi_perf_data(); 974 - 974 + acpi_cpufreq_boost_exit(); 975 + } 975 976 return ret; 976 977 } 977 978