Commit c528adef authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

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: 555c45fe ("int340X/processor_thermal_device: add support for MMIO RAPL")
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: default avatarZhang Rui <rui.zhang@intel.com>
parent f76cb066
...@@ -487,6 +487,7 @@ static int proc_thermal_rapl_add(struct pci_dev *pdev, ...@@ -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, ...@@ -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);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment