eeepc-laptop: fix ordering of init and exit functions
authorAlan Jenkins <alan-jenkins@tuffmail.co.uk>
Fri, 28 Aug 2009 12:56:35 +0000 (12:56 +0000)
committerLen Brown <len.brown@intel.com>
Fri, 28 Aug 2009 19:21:11 +0000 (15:21 -0400)
commit1e7798547fe6920ae27fb92c9202353e9e4c55db
tree0e8672632daf6501eb879e4772ef44ddd1ef2162
parent07e84aa98f6b3a7278d3267f6f657955ed3eb973
eeepc-laptop: fix ordering of init and exit functions

1. input and backlight devices were registered after acpi notifications
   are enabled.  This left a window where eeepc_hotk_notify() might
   find these devices in an inconsistent (half-initialized) state.

-> Move all device registration into eeepc_hotk_add(), which is called
   before enabling acpi notifications.

2. input and backlight devices were unregistered before acpi
   notifications are disabled.  This left a window where
   eeepc_hotk_notify() might find these devices in an inconsistent
   (half-destroyed) state.

-> Move all device unregistration into eeepc_hotk_remove(), which is
   called after disabling acpi notifications.

3. The acpi driver was not freed if an error occured further down in
   eeepc_laptop_init().

-> The rest of eeepc_laptop_init() has been moved to eeepc_hotk_add(),
   so this is no longer a problem.

4. The acpi driver was unregistered before the platform driver.  This
   left a window where a sysfs access could attempt to read the ehotk
   structure after it had been freed by eeepc_hotk_remove().

-> The acpi driver is now unregistered as the last step in
   eeepc_laptop_exit(), so this is no longer a problem.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/platform/x86/eeepc-laptop.c