patch-2.4.27 linux-2.4.27/drivers/acpi/button.c
Next file: linux-2.4.27/drivers/acpi/ec.c
Previous file: linux-2.4.27/drivers/acpi/bus.c
Back to the patch index
Back to the overall index
- Lines: 79
- Date:
2004-08-07 16:26:04.651346654 -0700
- Orig file:
linux-2.4.26/drivers/acpi/button.c
- Orig date:
2004-02-18 05:36:31.000000000 -0800
diff -urN linux-2.4.26/drivers/acpi/button.c linux-2.4.27/drivers/acpi/button.c
@@ -171,10 +171,15 @@
acpi_button_dir);
break;
}
+
+ if (!entry)
+ return_VALUE(-ENODEV);
+ entry->owner = THIS_MODULE;
acpi_device_dir(device) = proc_mkdir(acpi_device_bid(device), entry);
if (!acpi_device_dir(device))
return_VALUE(-ENODEV);
+ acpi_device_dir(device)->owner = THIS_MODULE;
/* 'info' [R] */
entry = create_proc_entry(ACPI_BUTTON_FILE_INFO,
@@ -186,6 +191,7 @@
else {
entry->read_proc = acpi_button_read_info;
entry->data = acpi_driver_data(device);
+ entry->owner = THIS_MODULE;
}
if (button->type==ACPI_BUTTON_TYPE_LID){
@@ -199,6 +205,7 @@
else {
entry->read_proc = acpi_button_lid_read_state;
entry->data = acpi_driver_data(device);
+ entry->owner = THIS_MODULE;
}
}
@@ -210,10 +217,37 @@
acpi_button_remove_fs (
struct acpi_device *device)
{
+ struct acpi_button *button = NULL;
+
ACPI_FUNCTION_TRACE("acpi_button_remove_fs");
+ button = acpi_driver_data(device);
if (acpi_device_dir(device)) {
- remove_proc_entry(acpi_device_bid(device), acpi_button_dir);
+ if (button->type == ACPI_BUTTON_TYPE_LID)
+ remove_proc_entry(ACPI_BUTTON_FILE_STATE,
+ acpi_device_dir(device));
+ remove_proc_entry(ACPI_BUTTON_FILE_INFO,
+ acpi_device_dir(device));
+
+ remove_proc_entry(acpi_device_bid(device),
+ acpi_device_dir(device)->parent);
+
+ switch (button->type) {
+ case ACPI_BUTTON_TYPE_POWER:
+ case ACPI_BUTTON_TYPE_POWERF:
+ remove_proc_entry(ACPI_BUTTON_SUBCLASS_POWER,
+ acpi_button_dir);
+ break;
+ case ACPI_BUTTON_TYPE_SLEEP:
+ case ACPI_BUTTON_TYPE_SLEEPF:
+ remove_proc_entry(ACPI_BUTTON_SUBCLASS_SLEEP,
+ acpi_button_dir);
+ break;
+ case ACPI_BUTTON_TYPE_LID:
+ remove_proc_entry(ACPI_BUTTON_SUBCLASS_LID,
+ acpi_button_dir);
+ break;
+ }
acpi_device_dir(device) = NULL;
}
@@ -470,6 +504,7 @@
acpi_button_dir = proc_mkdir(ACPI_BUTTON_CLASS, acpi_root_dir);
if (!acpi_button_dir)
return_VALUE(-ENODEV);
+ acpi_button_dir->owner = THIS_MODULE;
result = acpi_bus_register_driver(&acpi_button_driver);
if (result < 0) {
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)