|
@@ -4668,12 +4668,15 @@ static int __init thinkpad_acpi_module_init(void)
|
|
|
thinkpad_acpi_module_exit();
|
|
|
return ret;
|
|
|
}
|
|
|
+ tp_features.platform_drv_registered = 1;
|
|
|
+
|
|
|
ret = tpacpi_create_driver_attributes(&tpacpi_pdriver.driver);
|
|
|
if (ret) {
|
|
|
printk(IBM_ERR "unable to create sysfs driver attributes\n");
|
|
|
thinkpad_acpi_module_exit();
|
|
|
return ret;
|
|
|
}
|
|
|
+ tp_features.platform_drv_attrs_registered = 1;
|
|
|
|
|
|
|
|
|
/* Device initialization */
|
|
@@ -4756,8 +4759,11 @@ static void thinkpad_acpi_module_exit(void)
|
|
|
if (tpacpi_pdev)
|
|
|
platform_device_unregister(tpacpi_pdev);
|
|
|
|
|
|
- tpacpi_remove_driver_attributes(&tpacpi_pdriver.driver);
|
|
|
- platform_driver_unregister(&tpacpi_pdriver);
|
|
|
+ if (tp_features.platform_drv_attrs_registered)
|
|
|
+ tpacpi_remove_driver_attributes(&tpacpi_pdriver.driver);
|
|
|
+
|
|
|
+ if (tp_features.platform_drv_registered)
|
|
|
+ platform_driver_unregister(&tpacpi_pdriver);
|
|
|
|
|
|
if (proc_dir)
|
|
|
remove_proc_entry(IBM_PROC_DIR, acpi_root_dir);
|