Skip to content

Commit

Permalink
asus-laptop: Fix rmmod of asus_laptop
Browse files Browse the repository at this point in the history
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: Guillaume Chazarain <guichaz@yahoo.fr>
Signed-off-by: Len Brown <len.brown@intel.com>
  • Loading branch information
Guillaume Chazarain authored and Len Brown committed Aug 24, 2007
1 parent b377fd3 commit e1996a6
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion drivers/misc/asus-laptop.c
Original file line number Diff line number Diff line change
Expand Up @@ -1072,7 +1072,8 @@ static void asus_backlight_exit(void)
}

#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)
{
Expand Down

0 comments on commit e1996a6

Please sign in to comment.