mirror of
https://github.com/torvalds/linux
synced 2024-09-20 11:07:02 +00:00
int340X/processor_thermal_device: Fix proc_thermal_rapl_remove()
Passing 0 to cpuhp_remove_state() triggers the BUG_ON() in
__cpuhp_remove_state_cpuslocked() and the argument passed to
powercap_unregister_control_type() is expected to be a valid
pointer, so avoid calling these functions with incorrect
arguments from proc_thermal_rapl_remove().
Fixes: 555c45fe0d
("int340X/processor_thermal_device: add support for MMIO RAPL")
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Zhang Rui <rui.zhang@intel.com>
This commit is contained in:
parent
f76cb066ed
commit
c528adefd6
|
@ -487,6 +487,7 @@ static int proc_thermal_rapl_add(struct pci_dev *pdev,
|
||||||
rapl_mmio_cpu_online, rapl_mmio_cpu_down_prep);
|
rapl_mmio_cpu_online, rapl_mmio_cpu_down_prep);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
powercap_unregister_control_type(rapl_mmio_priv.control_type);
|
powercap_unregister_control_type(rapl_mmio_priv.control_type);
|
||||||
|
rapl_mmio_priv.control_type = NULL;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
rapl_mmio_priv.pcap_rapl_online = ret;
|
rapl_mmio_priv.pcap_rapl_online = ret;
|
||||||
|
@ -496,6 +497,9 @@ static int proc_thermal_rapl_add(struct pci_dev *pdev,
|
||||||
|
|
||||||
static void proc_thermal_rapl_remove(void)
|
static void proc_thermal_rapl_remove(void)
|
||||||
{
|
{
|
||||||
|
if (IS_ERR_OR_NULL(rapl_mmio_priv.control_type))
|
||||||
|
return;
|
||||||
|
|
||||||
cpuhp_remove_state(rapl_mmio_priv.pcap_rapl_online);
|
cpuhp_remove_state(rapl_mmio_priv.pcap_rapl_online);
|
||||||
powercap_unregister_control_type(rapl_mmio_priv.control_type);
|
powercap_unregister_control_type(rapl_mmio_priv.control_type);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue