WMI: remove EC region handler when _WDG parsing fails
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 26 Aug 2010 07:14:42 +0000 (00:14 -0700)
committerMatthew Garrett <mjg@redhat.com>
Thu, 21 Oct 2010 13:36:46 +0000 (09:36 -0400)
Driver initialization was forgetting to remove EC address space handler
in cases when parse_wdg() method failed.

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Signed-off-by: Matthew Garrett <mjg@redhat.com>
drivers/platform/x86/wmi.c

index 4980682..63d0b65 100644 (file)
@@ -956,12 +956,17 @@ static int acpi_wmi_add(struct acpi_device *device)
                                                    ACPI_ADR_SPACE_EC,
                                                    &acpi_wmi_ec_space_handler,
                                                    NULL, NULL);
-       if (ACPI_FAILURE(status))
+       if (ACPI_FAILURE(status)) {
+               printk(KERN_ERR PREFIX "Error installing EC region handler\n");
                return -ENODEV;
+       }
 
        status = parse_wdg(device->handle);
        if (ACPI_FAILURE(status)) {
-               printk(KERN_ERR PREFIX "Error installing EC region handler\n");
+               acpi_remove_address_space_handler(device->handle,
+                                                 ACPI_ADR_SPACE_EC,
+                                                 &acpi_wmi_ec_space_handler);
+               printk(KERN_ERR PREFIX "Failed to parse WDG method\n");
                return -ENODEV;
        }