linux/drivers/acpi
Maxime Austruy 5ebffd7c05 asus_acpi: fix oops on non-asus machines
If asus_acpi_init doesn't find any device it knows about, it mistakenly
returns a "success" error code even though it cleans up after itself.  Later
when trying to rmmod asus_acpi, the module_exit routine would try to clean up
one more time and we would end up calling
acpi_bus_unregister_driver(&asus_hotk_driver) twice.  This patch addresses
this first problem by returning -ENODEV when no appropriate device is found.

Then there was also another bug with the code handling the return value of
backlight_device_register.  If this function ever failed, the driver would
cleanup by calling the module_exit routine from module_init, but it would
still return "success".  So any attempt to rmmod this module would result in
asus_acpi_exit being called twice but it's not ready to handle it (I haven't
hit this bug, just found it by code inspection).  This patch fixes that by
inserting a return -ENODEV; at the end of this error handling path.

Signed-off-by: Maxime Austruy <maxime@tralhalla.org>
Cc: Len Brown <lenb@kernel.org>
Cc: Richard Purdie <rpurdie@rpsys.net>
Cc: Jan Engelhardt <jengelh@computergmbh.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-07-01 12:29:44 -07:00
..
dispatcher ACPICA: Lindent 2007-05-09 23:34:35 -04:00
events ACPICA: Lindent 2007-05-09 23:34:35 -04:00
executer ACPICA: Lindent 2007-05-09 23:34:35 -04:00
hardware ACPICA: Lindent 2007-05-09 23:34:35 -04:00
namespace ACPICA: Lindent 2007-05-09 23:34:35 -04:00
parser ACPICA: Lindent 2007-05-09 23:34:35 -04:00
resources ACPICA: Lindent 2007-05-09 23:34:35 -04:00
sleep ACPICA: Lindent 2007-05-09 23:34:35 -04:00
tables ACPICA: allow Load(OEMx) tables 2007-05-29 18:29:50 -04:00
utilities ACPICA: fix error path in new external package objects as method arguments 2007-06-18 00:51:47 -04:00
Kconfig Pull sbs into release branch 2007-04-28 23:16:59 -04:00
Makefile Pull sbs into release branch 2007-04-28 23:16:59 -04:00
ac.c ACPI: delete extra #defines in /drivers/acpi/ drivers 2007-02-12 23:50:52 -05:00
acpi_memhotplug.c ACPI: Remove duplicate definitions for _STA bits 2007-04-25 14:17:39 -04:00
asus_acpi.c asus_acpi: fix oops on non-asus machines 2007-07-01 12:29:44 -07:00
battery.c Pull bugzilla-7200 into release branch 2007-02-16 22:11:37 -05:00
bay.c Pull fluff into release branch 2007-02-16 22:10:32 -05:00
blacklist.c ACPI: make blacklist more verbose 2007-03-09 21:19:05 -05:00
bus.c ACPI: use _STA bit names rather than 0x0F 2007-04-25 14:20:58 -04:00
button.c ACPI: delete extra #defines in /drivers/acpi/ drivers 2007-02-12 23:50:52 -05:00
cm_sbs.c ACPI: clean up ACPI_MODULE_NAME() use 2007-02-12 22:42:12 -05:00
container.c ACPI: Remove duplicate definitions for _STA bits 2007-04-25 14:17:39 -04:00
debug.c ACPI: clean up ACPI_MODULE_NAME() use 2007-02-12 22:42:12 -05:00
dock.c ACPI: dock: use NULL for pointer 2007-03-28 23:31:43 -04:00
ec.c acpi,msi-laptop: Fall back to EC polling mode for MSI laptop specific EC commands 2007-05-10 03:52:22 -04:00
event.c ACPI: clean up ACPI_MODULE_NAME() use 2007-02-12 22:42:12 -05:00
fan.c ACPI: delete extra #defines in /drivers/acpi/ drivers 2007-02-12 23:50:52 -05:00
glue.c workaround rtc-related acpi table bugs 2007-05-08 11:15:18 -07:00
numa.c ACPI: Section mismatch ... acpi_map_pxm_to_node 2007-06-02 00:20:07 -04:00
osl.c ACPI: add __init to acpi_initialize_subsystem() 2007-05-30 00:26:11 -04:00
pci_bind.c ACPI: clean up ACPI_MODULE_NAME() use 2007-02-12 22:42:12 -05:00
pci_irq.c ACPI: clean up ACPI_MODULE_NAME() use 2007-02-12 22:42:12 -05:00
pci_link.c ACPI: delete extra #defines in /drivers/acpi/ drivers 2007-02-12 23:50:52 -05:00
pci_root.c ACPI: delete extra #defines in /drivers/acpi/ drivers 2007-02-12 23:50:52 -05:00
power.c Pull misc-for-upstream into release branch 2007-03-09 23:19:50 -05:00
processor_core.c ACPI: Remove duplicate definitions for _STA bits 2007-04-25 14:17:39 -04:00
processor_idle.c ACPI: fix 2.6.20 SMP boot regression 2007-06-23 10:57:28 -04:00
processor_perflib.c [CPUFREQ] Remove deprecated /proc/acpi/processor/performance write support 2007-04-26 14:32:02 -04:00
processor_thermal.c ACPI: delete extra #defines in /drivers/acpi/ drivers 2007-02-12 23:50:52 -05:00
processor_throttling.c ACPI: delete extra #defines in /drivers/acpi/ drivers 2007-02-12 23:50:52 -05:00
sbs.c ACPI: sbs: Common interface with CM battery 2007-03-22 01:15:58 -04:00
scan.c PNPACPI sets pnpdev->dev.archdata 2007-05-08 11:15:08 -07:00
system.c ACPI: delete extra #defines in /drivers/acpi/ drivers 2007-02-12 23:50:52 -05:00
tables.c Revert "ACPI: parse 2nd MADT by default" 2007-03-30 14:16:10 -04:00
thermal.c ACPI: gracefully print null trip-point device 2007-06-18 00:40:51 -04:00
toshiba_acpi.c toshiba_acpi: fix section mismatch in allyesconfig 2007-06-16 13:16:15 -07:00
utils.c ACPI: clean up ACPI_MODULE_NAME() use 2007-02-12 22:42:12 -05:00
video.c ACPI: video: Fix spelling and grammar mistakes 2007-03-09 21:37:07 -05:00