Commit e1996a69 authored by Guillaume Chazarain's avatar Guillaume Chazarain Committed by Len Brown

asus-laptop: Fix rmmod of asus_laptop

The asus laptop driver conditionnaly registers leds in asus_led_register()
depending on their availability, but unconditionnaly unregisters them all at
exit time or when the module fails to load. Unregistering not registered leds
result in the following Oops. So we should check before unregistering.

 [<c032d2f9>] do_page_fault+0x511/0x5e9
 [<c032bae2>] error_code+0x6a/0x70
 [<c026abf8>] device_unregister+0x26/0x32
 [<f8864218>] led_classdev_unregister+0x58/0x94 [led_class]
 [<f88a90f8>] asus_led_exit+0x17/0x41 [asus_laptop]
 [<f88a91c9>] asus_laptop_exit+0xd/0x3f [asus_laptop]
 [<c013cee1>] sys_delete_module+0x17b/0x1a2
 [<c0106eae>] sysenter_past_esp+0x6b/0xa1

EIP: [<c026a9a3>] device_del+0xb/0x23a SS:ESP 0068:f594ef0c
Signed-off-by: default avatarGuillaume Chazarain <guichaz@yahoo.fr>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent b377fd39
...@@ -1072,7 +1072,8 @@ static void asus_backlight_exit(void) ...@@ -1072,7 +1072,8 @@ static void asus_backlight_exit(void)
} }
#define ASUS_LED_UNREGISTER(object) \ #define ASUS_LED_UNREGISTER(object) \
led_classdev_unregister(&object##_led) if (object##_led.dev) \
led_classdev_unregister(&object##_led)
static void asus_led_exit(void) static void asus_led_exit(void)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment