Re: OOPS : 2.4.27-pre2 + latest ACPI

From: O.Sezer
Date: Mon May 10 2004 - 15:26:38 EST


Sergey Vlasov wrote:


Looks like a free memory access - at acpi_button_remove() button->handle
was trashed by 0x5a5a5a5a.

Does the patch below (on top of the new ACPI changes) fix this? Seems
that the special handling for fixed-feature buttons is unneeded at least
for 2.4.x - acpi_bus_unregister_driver() works for them.


--- linux/drivers/acpi/button.c.button-rmmod-oops 2004-05-09 19:45:09 +0400
+++ linux/drivers/acpi/button.c 2004-05-10 21:18:56 +0400
@@ -69,8 +69,6 @@
-------------------------------------------------------------------------- */
static struct proc_dir_entry *acpi_button_dir;
-extern struct acpi_device *acpi_fixed_pwr_button;
-extern struct acpi_device *acpi_fixed_sleep_button;
static int
acpi_button_read_info (
@@ -514,12 +512,6 @@
{
ACPI_FUNCTION_TRACE("acpi_button_exit");
- if(acpi_fixed_pwr_button) - acpi_button_remove(acpi_fixed_pwr_button, ACPI_BUS_TYPE_POWER_BUTTON);
-
- if(acpi_fixed_sleep_button)
- acpi_button_remove(acpi_fixed_sleep_button, ACPI_BUS_TYPE_SLEEP_BUTTON);
-
acpi_bus_unregister_driver(&acpi_button_driver);
remove_proc_entry(ACPI_BUTTON_CLASS, acpi_root_dir);
--- linux/drivers/acpi/bus.c.button-rmmod-oops 2004-05-09 19:45:09 +0400
+++ linux/drivers/acpi/bus.c 2004-05-10 21:21:06 +0400
@@ -1769,23 +1769,15 @@
}
-struct acpi_device *acpi_fixed_pwr_button;
-struct acpi_device *acpi_fixed_sleep_button;
-
-EXPORT_SYMBOL(acpi_fixed_pwr_button);
-EXPORT_SYMBOL(acpi_fixed_sleep_button);
-
static int
acpi_bus_scan_fixed (
struct acpi_device *root)
{
int result = 0;
+ struct acpi_device *device = NULL;
ACPI_FUNCTION_TRACE("acpi_bus_scan_fixed");
- acpi_fixed_pwr_button = NULL;
- acpi_fixed_sleep_button = NULL;
-
if (!root)
return_VALUE(-ENODEV);
@@ -1793,11 +1785,11 @@
* Enumerate all fixed-feature devices.
*/
if (acpi_fadt.pwr_button == 0)
- result = acpi_bus_add(&acpi_fixed_pwr_button, acpi_root, + result = acpi_bus_add(&device, acpi_root, NULL, ACPI_BUS_TYPE_POWER_BUTTON);
if (acpi_fadt.sleep_button == 0)
- result = acpi_bus_add(&acpi_fixed_sleep_button, acpi_root, + result = acpi_bus_add(&device, acpi_root, NULL, ACPI_BUS_TYPE_SLEEP_BUTTON);
return_VALUE(result);


Yes, this patch cures the oops. Thank you very much.

Best regards;
Özkan Sezer

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/