]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
drm/amd/display: prevent memory leak
authorNavid Emamdoost <navid.emamdoost@gmail.com>
Mon, 2 Dec 2019 04:51:00 +0000 (05:51 +0100)
committerMarcelo Henrique Cerri <marcelo.cerri@canonical.com>
Fri, 17 Jan 2020 17:23:07 +0000 (14:23 -0300)
CVE-2019-19082

In dcn*_create_resource_pool the allocated memory should be released if
construct pool fails.

Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(backported from commit 104c307147ad379617472dd91a5bcb368d72bd6d)
Signed-off-by: Po-Hsu Lin <po-hsu.lin@canonical.com>
Acked-by: Connor Kuehl <connor.kuehl@canonical.com>
Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c
drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c
drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c
drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c

index c127d7be01ecafad9ee331b16508930753a50ca2..b804ab6d47b87e06751a9925ca24c04ca2d0c886 100644 (file)
@@ -941,6 +941,7 @@ struct resource_pool *dce100_create_resource_pool(
        if (construct(num_virtual_links, dc, pool))
                return &pool->base;
 
+       kfree(pool);
        BREAK_TO_DEBUGGER();
        return NULL;
 }
index 395b8d6b05f487a49b60828ec37761657f161b0a..9fe9755c20142eb8919b9b9cc438213799935ad2 100644 (file)
@@ -1325,6 +1325,7 @@ struct resource_pool *dce110_create_resource_pool(
        if (construct(num_virtual_links, dc, pool, asic_id))
                return &pool->base;
 
+       kfree(pool);
        BREAK_TO_DEBUGGER();
        return NULL;
 }
index c7e9256d689b4809f34e0770dd6710f966889cb0..ac1bd7be1662f08fec8cc73d89c5000c26c68f04 100644 (file)
@@ -1279,6 +1279,7 @@ struct resource_pool *dce112_create_resource_pool(
        if (construct(num_virtual_links, dc, pool))
                return &pool->base;
 
+       kfree(pool);
        BREAK_TO_DEBUGGER();
        return NULL;
 }
index 50e4a9f3099c1e2daea7a56215c51176c61959f7..fbe7938c7d9fb4ebb798bd87770421915ebf8a5d 100644 (file)
@@ -1000,6 +1000,7 @@ struct resource_pool *dce120_create_resource_pool(
        if (construct(num_virtual_links, dc, pool))
                return &pool->base;
 
+       kfree(pool);
        BREAK_TO_DEBUGGER();
        return NULL;
 }
index 3ed52f18af105c3f43021af044b8237c4bb57605..4be84babd1d723784f723d5c736318af718d4541 100644 (file)
@@ -1464,6 +1464,7 @@ struct resource_pool *dcn10_create_resource_pool(
        if (construct(num_virtual_links, dc, pool))
                return &pool->base;
 
+       kfree(pool);
        BREAK_TO_DEBUGGER();
        return NULL;
 }