nouveau / ACPI: fix memory leak in ACPI _DSM related code
authorJiang Liu <jiang.liu@linux.intel.com>
Thu, 19 Dec 2013 12:38:21 +0000 (20:38 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Sun, 5 Jan 2014 15:07:15 +0000 (16:07 +0100)
Fix memory leak in function nouveau_optimus_dsm() and nouveau_dsm().

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/gpu/drm/nouveau/nouveau_acpi.c

index ba0183f..3f721e3 100644 (file)
@@ -111,6 +111,7 @@ static int nouveau_optimus_dsm(acpi_handle handle, int func, int arg, uint32_t *
 
        if (obj->type == ACPI_TYPE_INTEGER)
                if (obj->integer.value == 0x80000002) {
+                       kfree(output.pointer);
                        return -ENODEV;
                }
 
@@ -157,8 +158,10 @@ static int nouveau_dsm(acpi_handle handle, int func, int arg, uint32_t *result)
        obj = (union acpi_object *)output.pointer;
 
        if (obj->type == ACPI_TYPE_INTEGER)
-               if (obj->integer.value == 0x80000002)
+               if (obj->integer.value == 0x80000002) {
+                       kfree(output.pointer);
                        return -ENODEV;
+               }
 
        if (obj->type == ACPI_TYPE_BUFFER) {
                if (obj->buffer.length == 4 && result) {