forked from Minki/linux
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: Guillaume Chazarain <guichaz@yahoo.fr> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
b377fd3982
commit
e1996a69e1
@ -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)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user