| From de824356ed66133a70577daf9c3b8fa99788339a Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 24 Sep 2019 23:23:56 -0500 |
| Subject: drm/amd/display: prevent memory leak |
| |
| From: Navid Emamdoost <navid.emamdoost@gmail.com> |
| |
| [ Upstream commit 104c307147ad379617472dd91a5bcb368d72bd6d ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| 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(+) |
| |
| diff --git a/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c b/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c |
| index 3f76e6019546f..5a2f29bd35082 100644 |
| --- a/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c |
| +++ b/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c |
| @@ -1001,6 +1001,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; |
| } |
| diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c |
| index e5e9e92521e91..17d936c260d97 100644 |
| --- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c |
| +++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c |
| @@ -1344,6 +1344,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; |
| } |
| diff --git a/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c b/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c |
| index 288129343c778..71adab8bf31b1 100644 |
| --- a/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c |
| +++ b/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c |
| @@ -1287,6 +1287,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; |
| } |
| diff --git a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c |
| index d43f37d99c7d9..f0f2ce6da8278 100644 |
| --- a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c |
| +++ b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c |
| @@ -1076,6 +1076,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; |
| } |
| diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c |
| index 6b44ed3697a4f..e6d5568811400 100644 |
| --- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c |
| +++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c |
| @@ -1361,6 +1361,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; |
| } |
| -- |
| 2.25.1 |
| |