Blob Blame History Raw
From 104c307147ad379617472dd91a5bcb368d72bd6d Mon Sep 17 00:00:00 2001
From: Navid Emamdoost <navid.emamdoost@gmail.com>
Date: Tue, 24 Sep 2019 23:23:56 -0500
Subject: [PATCH] drm/amd/display: prevent memory leak
Git-commit: 104c307147ad379617472dd91a5bcb368d72bd6d
Patch-mainline: v5.4-rc1
References: CVE-2019-19082,bsc#1157046

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>
Acked-by: Takashi Iwai <tiwai@suse.de>

---
 drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c |    1 +
 drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c |    1 +
 drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c |    1 +
 drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c |    1 +
 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c   |    1 +
 5 files changed, 5 insertions(+)

--- a/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c
@@ -1005,6 +1005,7 @@ struct resource_pool *dce100_create_reso
 	if (construct(num_virtual_links, dc, pool))
 		return &pool->base;
 
+	kfree(pool);
 	BREAK_TO_DEBUGGER();
 	return NULL;
 }
--- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c
@@ -1348,6 +1348,7 @@ struct resource_pool *dce110_create_reso
 	if (construct(num_virtual_links, dc, pool, asic_id))
 		return &pool->base;
 
+	kfree(pool);
 	BREAK_TO_DEBUGGER();
 	return NULL;
 }
--- a/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c
@@ -1292,6 +1292,7 @@ struct resource_pool *dce112_create_reso
 	if (construct(num_virtual_links, dc, pool))
 		return &pool->base;
 
+	kfree(pool);
 	BREAK_TO_DEBUGGER();
 	return NULL;
 }
--- a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
@@ -1080,6 +1080,7 @@ struct resource_pool *dce120_create_reso
 	if (construct(num_virtual_links, dc, pool))
 		return &pool->base;
 
+	kfree(pool);
 	BREAK_TO_DEBUGGER();
 	return NULL;
 }
--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c
@@ -1363,6 +1363,7 @@ struct resource_pool *dcn10_create_resou
 	if (construct(num_virtual_links, dc, pool))
 		return &pool->base;
 
+	kfree(pool);
 	BREAK_TO_DEBUGGER();
 	return NULL;
 }