| From 9fe2d98b5d6f1155b5bfb3ced85d23e8e30e0584 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 15 Jan 2021 11:02:48 -0500 |
| Subject: drm/amd/display: Decrement refcount of dc_sink before reassignment |
| |
| From: Victor Lu <victorchengchi.lu@amd.com> |
| |
| [ Upstream commit 8e92bb0fa75bca9a57e4aba2e36f67d8016a3053 ] |
| |
| [why] |
| An old dc_sink state is causing a memory leak because it is missing a |
| dc_sink_release before a new dc_sink is assigned back to |
| aconnector->dc_sink. |
| |
| [how] |
| Decrement the dc_sink refcount before reassigning it to a new dc_sink. |
| |
| Signed-off-by: Victor Lu <victorchengchi.lu@amd.com> |
| Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> |
| Acked-by: Anson Jacob <Anson.Jacob@amd.com> |
| Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> |
| Signed-off-by: Alex Deucher <alexander.deucher@amd.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |
| index b4da8d1e4fb87..fbbe611d4873f 100644 |
| --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |
| +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |
| @@ -1417,8 +1417,10 @@ amdgpu_dm_update_connector_after_detect(struct amdgpu_dm_connector *aconnector) |
| * TODO: check if we still need the S3 mode update workaround. |
| * If yes, put it here. |
| */ |
| - if (aconnector->dc_sink) |
| + if (aconnector->dc_sink) { |
| amdgpu_dm_update_freesync_caps(connector, NULL); |
| + dc_sink_release(aconnector->dc_sink); |
| + } |
| |
| aconnector->dc_sink = sink; |
| dc_sink_retain(aconnector->dc_sink); |
| -- |
| 2.27.0 |
| |