hp-wmi: Fix two memleaks
authorThomas Renninger <trenn@suse.de>
Fri, 18 Dec 2009 14:29:23 +0000 (15:29 +0100)
committerLen Brown <len.brown@intel.com>
Thu, 24 Dec 2009 05:54:49 +0000 (00:54 -0500)
Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/platform/x86/hp-wmi.c

index db10c5d..8781d8f 100644 (file)
@@ -134,10 +134,15 @@ static int hp_wmi_perform_query(int query, int write, int value)
 
        obj = output.pointer;
 
-       if (!obj || obj->type != ACPI_TYPE_BUFFER)
+       if (!obj)
                return -EINVAL;
+       else if (obj->type != ACPI_TYPE_BUFFER) {
+               kfree(obj);
+               return -EINVAL;
+       }
 
        bios_return = *((struct bios_return *)obj->buffer.pointer);
+       kfree(obj);
        if (bios_return.return_code > 0)
                return bios_return.return_code * -1;
        else
@@ -340,10 +345,12 @@ static void hp_wmi_notify(u32 value, void *context)
 
        if (!obj || obj->type != ACPI_TYPE_BUFFER || obj->buffer.length != 8) {
                printk(KERN_INFO "HP WMI: Unknown response received\n");
+               kfree(obj);
                return;
        }
 
        eventcode = *((u8 *) obj->buffer.pointer);
+       kfree(obj);
        if (eventcode == 0x4)
                eventcode = hp_wmi_perform_query(HPWMI_HOTKEY_QUERY, 0,
                                                0);