dell-wmi: fix a memory leak
If dell_new_hk_type is true, dell_legacy_wmi_keymap will point to a memory allocated in setup_new_hk_map(). In this case, the memory is not freed in current implementation. This patch fixes the leak by kfree(dell_wmi_keymap) if dell_new_hk_type is true. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
This commit is contained in:
parent
d53bf0f324
commit
32ab72e7ca
1 changed files with 8 additions and 1 deletions
|
@ -339,13 +339,18 @@ static int __init dell_wmi_init(void)
|
||||||
acpi_video = acpi_video_backlight_support();
|
acpi_video = acpi_video_backlight_support();
|
||||||
|
|
||||||
err = dell_wmi_input_setup();
|
err = dell_wmi_input_setup();
|
||||||
if (err)
|
if (err) {
|
||||||
|
if (dell_new_hk_type)
|
||||||
|
kfree(dell_wmi_keymap);
|
||||||
return err;
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
status = wmi_install_notify_handler(DELL_EVENT_GUID,
|
status = wmi_install_notify_handler(DELL_EVENT_GUID,
|
||||||
dell_wmi_notify, NULL);
|
dell_wmi_notify, NULL);
|
||||||
if (ACPI_FAILURE(status)) {
|
if (ACPI_FAILURE(status)) {
|
||||||
input_unregister_device(dell_wmi_input_dev);
|
input_unregister_device(dell_wmi_input_dev);
|
||||||
|
if (dell_new_hk_type)
|
||||||
|
kfree(dell_wmi_keymap);
|
||||||
printk(KERN_ERR
|
printk(KERN_ERR
|
||||||
"dell-wmi: Unable to register notify handler - %d\n",
|
"dell-wmi: Unable to register notify handler - %d\n",
|
||||||
status);
|
status);
|
||||||
|
@ -359,6 +364,8 @@ static void __exit dell_wmi_exit(void)
|
||||||
{
|
{
|
||||||
wmi_remove_notify_handler(DELL_EVENT_GUID);
|
wmi_remove_notify_handler(DELL_EVENT_GUID);
|
||||||
input_unregister_device(dell_wmi_input_dev);
|
input_unregister_device(dell_wmi_input_dev);
|
||||||
|
if (dell_new_hk_type)
|
||||||
|
kfree(dell_wmi_keymap);
|
||||||
}
|
}
|
||||||
|
|
||||||
module_init(dell_wmi_init);
|
module_init(dell_wmi_init);
|
||||||
|
|
Reference in a new issue