Hi, [This fix is not very good for the global variable, any comments are welcome.] The thinkpad_acpi module_init fail out entrace is not very properly. if failing before register driver or before create sysfs file, the module_exit will try to remove nonexist sysfs files, the kernel will oops. Signed-off-by: Dave Young <hidave.darkstar@xxxxxxxxx> --- drivers/misc/thinkpad_acpi.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff -upr linux/drivers/misc/thinkpad_acpi.c linux.new/drivers/misc/thinkpad_acpi.c --- linux/drivers/misc/thinkpad_acpi.c 2007-08-08 16:28:19.000000000 +0000 +++ linux.new/drivers/misc/thinkpad_acpi.c 2007-08-08 16:35:11.000000000 +0000 @@ -91,6 +91,8 @@ MODULE_LICENSE("GPL"); /* Please remove this in year 2009 */ MODULE_ALIAS("ibm_acpi"); +static int sysfs_ret = 1; +static int driver_ret = 1; /* * DMI matching for module autoloading @@ -4662,14 +4664,14 @@ static int __init thinkpad_acpi_module_i } proc_dir->owner = THIS_MODULE; - ret = platform_driver_register(&tpacpi_pdriver); - if (ret) { + driver_ret = platform_driver_register(&tpacpi_pdriver); + if (driver_ret) { printk(IBM_ERR "unable to register platform driver\n"); thinkpad_acpi_module_exit(); return ret; } - ret = tpacpi_create_driver_attributes(&tpacpi_pdriver.driver); - if (ret) { + sysfs_ret = tpacpi_create_driver_attributes(&tpacpi_pdriver.driver); + if (sysfs_ret) { printk(IBM_ERR "unable to create sysfs driver attributes\n"); thinkpad_acpi_module_exit(); return ret; @@ -4756,8 +4758,13 @@ static void thinkpad_acpi_module_exit(vo if (tpacpi_pdev) platform_device_unregister(tpacpi_pdev); - tpacpi_remove_driver_attributes(&tpacpi_pdriver.driver); - platform_driver_unregister(&tpacpi_pdriver); + if(!sysfs_ret){ + tpacpi_remove_driver_attributes(&tpacpi_pdriver.driver); + } + + if(!driver_ret){ + platform_driver_unregister(&tpacpi_pdriver); + } if (proc_dir) remove_proc_entry(IBM_PROC_DIR, acpi_root_dir); - To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html