• Maxime Austruy's avatar
    asus_acpi: fix oops on non-asus machines · 5ebffd7c
    Maxime Austruy authored
    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: default avatarMaxime 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: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    5ebffd7c
asus_acpi.c 37.7 KB