diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2823-drm-amd-display-Fix-amdgpu_dm-bugs-found-by-smatch.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2823-drm-amd-display-Fix-amdgpu_dm-bugs-found-by-smatch.patch | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2823-drm-amd-display-Fix-amdgpu_dm-bugs-found-by-smatch.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2823-drm-amd-display-Fix-amdgpu_dm-bugs-found-by-smatch.patch new file mode 100644 index 00000000..81bdb06b --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2823-drm-amd-display-Fix-amdgpu_dm-bugs-found-by-smatch.patch @@ -0,0 +1,79 @@ +From c41ecfbe41e584f78568f9c495518aa620fbfd4b Mon Sep 17 00:00:00 2001 +From: Harry Wentland <harry.wentland@amd.com> +Date: Fri, 10 Nov 2017 11:19:02 -0500 +Subject: [PATCH 2823/4131] drm/amd/display: Fix amdgpu_dm bugs found by smatch + +drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:2760 +create_eml_sink() warn: variable dereferenced before check +'aconnector->base.edid_blob_ptr' (see line 2758) +drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:4270 +amdgpu_dm_atomic_commit_tail() warn: variable dereferenced before check +'dm_new_crtc_state->stream' (see line 4266) +drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:4417 +dm_restore_drm_connector_state() warn: variable dereferenced before +check 'disconnected_acrtc' (see line 4415) + +Signed-off-by: Harry Wentland <harry.wentland@amd.com> +Reviewed-by: Sun peng Li <Sunpeng.Li@amd.com> +Acked-by: Harry Wentland <harry.wentland@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +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 9597a07..0b41e73 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -3023,7 +3023,7 @@ static void create_eml_sink(struct amdgpu_dm_connector *aconnector) + .link = aconnector->dc_link, + .sink_signal = SIGNAL_TYPE_VIRTUAL + }; +- struct edid *edid = (struct edid *) aconnector->base.edid_blob_ptr->data; ++ struct edid *edid; + + if (!aconnector->base.edid_blob_ptr || + !aconnector->base.edid_blob_ptr->data) { +@@ -3035,6 +3035,8 @@ static void create_eml_sink(struct amdgpu_dm_connector *aconnector) + return; + } + ++ edid = (struct edid *) aconnector->base.edid_blob_ptr->data; ++ + aconnector->edid = edid; + + aconnector->dc_em_sink = dc_link_add_remote_sink( +@@ -4671,13 +4673,13 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state) + update_stream_scaling_settings(&dm_new_con_state->base.crtc->mode, + dm_new_con_state, (struct dc_stream_state *)dm_new_crtc_state->stream); + ++ if (!dm_new_crtc_state->stream) ++ continue; ++ + status = dc_stream_get_status(dm_new_crtc_state->stream); + WARN_ON(!status); + WARN_ON(!status->plane_count); + +- if (!dm_new_crtc_state->stream) +- continue; +- + /*TODO How it works with MPO ?*/ + if (!dc_commit_planes_to_stream( + dm->dc, +@@ -4842,9 +4844,11 @@ void dm_restore_drm_connector_state(struct drm_device *dev, + return; + + disconnected_acrtc = to_amdgpu_crtc(connector->encoder->crtc); +- acrtc_state = to_dm_crtc_state(disconnected_acrtc->base.state); ++ if (!disconnected_acrtc) ++ return; + +- if (!disconnected_acrtc || !acrtc_state->stream) ++ acrtc_state = to_dm_crtc_state(disconnected_acrtc->base.state); ++ if (!acrtc_state->stream) + return; + + /* +-- +2.7.4 + |