wmi: Free the allocated acpi objects through wmi_get_event_data
authorAnisse Astier <anisse@astier.eu>
Sat, 30 Jan 2010 23:00:17 +0000 (18:00 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 23 Feb 2010 15:37:54 +0000 (07:37 -0800)
commit 3e9b988e4edf065d39c1343937f717319b1c1065 upstream

[ backported to 2.6.32 ]

These function allocate an acpi object by calling wmi_get_event_data, which
then calls acpi_evaluate_object, and it is not freed afterwards.

And kernel doc is fixed for parameters of wmi_get_event_data.

Signed-off-by: Anisse Astier <anisse@astier.eu>
Acked-by: Randy Dunlap <randy.dunlap@oracle.com>
Acked-by: Carlos Corbacho <carlos@strangeworlds.co.uk>
Signed-off-by: Len Brown <len.brown@intel.com>
Cc: Chuck Ebbert <cebbert@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/platform/x86/dell-wmi.c
drivers/platform/x86/hp-wmi.c
drivers/platform/x86/wmi.c

index 0f900cc9fa7a5131283c14b2aae8e11d7667b949..f235a9835330d2ae1f8c9f70df9f3f57f023cb44 100644 (file)
@@ -180,6 +180,7 @@ static void dell_wmi_notify(u32 value, void *context)
                        printk(KERN_INFO "dell-wmi: Unknown key %x pressed\n",
                               buffer[1] & 0xFFFF);
        }
+       kfree(obj);
 }
 
 static int __init dell_wmi_input_setup(void)
index c2842171cec6b9942c3e844954842612d5db0d20..36109e19f3498daa00adb2d56d5e9dfa8cd4880e 100644 (file)
@@ -377,6 +377,8 @@ static void hp_wmi_notify(u32 value, void *context)
                               eventcode);
        } else
                printk(KERN_INFO "HP WMI: Unknown response received\n");
+
+       kfree(obj);
 }
 
 static int __init hp_wmi_input_setup(void)
index 177f8d767df40f3a61528a1df582392121181969..87f4c97f2a77aeca5d6f250b4804751e80bba6fd 100644 (file)
@@ -510,8 +510,8 @@ EXPORT_SYMBOL_GPL(wmi_remove_notify_handler);
 /**
  * wmi_get_event_data - Get WMI data associated with an event
  *
- * @event - Event to find
- * &out - Buffer to hold event data
+ * @event: Event to find
+ * @out: Buffer to hold event data. out->pointer should be freed with kfree()
  *
  * Returns extra data associated with an event in WMI.
  */