ACPI / button: remove pointer to old lid_sysfs on unbind
authorBenjamin Tissoires <benjamin.tissoires@redhat.com>
Fri, 29 Jul 2016 15:08:41 +0000 (17:08 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 2 Aug 2016 23:27:20 +0000 (01:27 +0200)
When we removed the procfs dir on error or if the driver is
unbound, the two variables acpi_lid_dir and acpi_button_dir
were not reset. On the next rebind, those static variables
were not null and we couldn't re-register the device again.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Acked-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/button.c

index 148f4e5ca104b5a392008f6ebf9e864c8afaddbc..31abb0bdd4f29881a9590bed57f9f0113fc5da19 100644 (file)
@@ -232,8 +232,10 @@ remove_dev_dir:
        acpi_device_dir(device) = NULL;
 remove_lid_dir:
        remove_proc_entry(ACPI_BUTTON_SUBCLASS_LID, acpi_button_dir);
+       acpi_lid_dir = NULL;
 remove_button_dir:
        remove_proc_entry(ACPI_BUTTON_CLASS, acpi_root_dir);
+       acpi_button_dir = NULL;
        goto done;
 }
 
@@ -250,7 +252,9 @@ static int acpi_button_remove_fs(struct acpi_device *device)
                          acpi_lid_dir);
        acpi_device_dir(device) = NULL;
        remove_proc_entry(ACPI_BUTTON_SUBCLASS_LID, acpi_button_dir);
+       acpi_lid_dir = NULL;
        remove_proc_entry(ACPI_BUTTON_CLASS, acpi_root_dir);
+       acpi_button_dir = NULL;
 
        return 0;
 }