ACPI: ipmi: Remove address space handler in error path
authorHanjun Guo <guohanjun@huawei.com>
Mon, 24 May 2021 08:35:08 +0000 (16:35 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 24 May 2021 14:27:34 +0000 (16:27 +0200)
The acpi_install_address_space_handler() is coupled with
acpi_remove_address_space_handler() in ipmi module init/exit, but
it forgets to remove the handler in acpi_ipmi_init() if the
ipmi_smi_watcher_register() call fails, so add the removal of the
address space handler in error path.

Signed-off-by: Hanjun Guo <guohanjun@huawei.com>
[ rjw: Changelog edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpi_ipmi.c

index bbd00d9..a5fe292 100644 (file)
@@ -597,9 +597,14 @@ static int __init acpi_ipmi_init(void)
                pr_warn("Can't register IPMI opregion space handle\n");
                return -EINVAL;
        }
+
        result = ipmi_smi_watcher_register(&driver_data.bmc_events);
-       if (result)
+       if (result) {
+               acpi_remove_address_space_handler(ACPI_ROOT_OBJECT,
+                                                                                 ACPI_ADR_SPACE_IPMI,
+                                                                                 &acpi_ipmi_space_handler);
                pr_err("Can't register IPMI system interface watcher\n");
+       }
 
        return result;
 }