Blob Blame History Raw
From 055e547478a11a6360c7ce05e2afc3e366968a12 Mon Sep 17 00:00:00 2001
From: Navid Emamdoost <navid.emamdoost@gmail.com>
Date: Mon, 16 Sep 2019 22:20:44 -0500
Subject: [PATCH] drm/amd/display: memory leak
Git-commit: 055e547478a11a6360c7ce05e2afc3e366968a12
Patch-mainline: v5.4-rc2
References: CVE-2019-19083,bsc#1157049

In dcn*_clock_source_create when dcn20_clk_src_construct fails allocated
clk_src needs release.

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/dce80/dce80_resource.c   |    1 +
 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c   |    1 +
 6 files changed, 6 insertions(+)

--- a/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c
@@ -623,6 +623,7 @@ struct clock_source *dce100_clock_source
 		return &clk_src->base;
 	}
 
+	kfree(clk_src);
 	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
@@ -642,6 +642,7 @@ struct clock_source *dce110_clock_source
 		return &clk_src->base;
 	}
 
+	kfree(clk_src);
 	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
@@ -642,6 +642,7 @@ struct clock_source *dce112_clock_source
 		return &clk_src->base;
 	}
 
+	kfree(clk_src);
 	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
@@ -428,6 +428,7 @@ static struct clock_source *dce120_clock
 		return &clk_src->base;
 	}
 
+	kfree(clk_src);
 	BREAK_TO_DEBUGGER();
 	return NULL;
 }
--- a/drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c
@@ -643,6 +643,7 @@ struct clock_source *dce80_clock_source_
 		return &clk_src->base;
 	}
 
+	kfree(clk_src);
 	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
@@ -718,6 +718,7 @@ struct clock_source *dcn10_clock_source_
 		return &clk_src->base;
 	}
 
+	kfree(clk_src);
 	BREAK_TO_DEBUGGER();
 	return NULL;
 }