Commit d2a9cd4f authored by Alex Hung's avatar Alex Hung Committed by Zheng Zucheng
Browse files

drm/amd/display: Check null pointers before using them

mainline inclusion
from mainline-v6.12-rc1
commit 1ff12bcd7deaeed25efb5120433c6a45dd5504a8
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IAYRD7
CVE: CVE-2024-49922

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=1ff12bcd7deaeed25efb5120433c6a45dd5504a8



--------------------------------

[ Upstream commit 1ff12bcd7deaeed25efb5120433c6a45dd5504a8 ]

[WHAT & HOW]
These pointers are null checked previously in the same function,
indicating they might be null as reported by Coverity. As a result,
they need to be checked when used again.

This fixes 3 FORWARD_NULL issue reported by Coverity.

Reviewed-by: default avatarRodrigo Siqueira <rodrigo.siqueira@amd.com>
Signed-off-by: default avatarJerry Zuo <jerry.zuo@amd.com>
Signed-off-by: default avatarAlex Hung <alex.hung@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>

Conflicts:
    drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
[amdgpu_dm_commit_streams() without this processing logic, the null pointer
judgment of this function does not need backport.
Some contexts around amdgpu_dm_atomic_commit_tail(), No functional impact.]
Signed-off-by: default avatarZheng Zucheng <zhengzucheng@huawei.com>
parent c78205e4
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -5385,6 +5385,9 @@ create_validate_stream_for_sink(struct amdgpu_dm_connector *aconnector,
	int requested_bpc = drm_state ? drm_state->max_requested_bpc : 8;
	enum dc_status dc_result = DC_OK;

	if (!dm_state)
		return NULL;

	do {
		stream = create_stream_for_sink(aconnector, drm_mode,
						dm_state, old_stream,
@@ -7801,6 +7804,7 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)
		}

		if (is_content_protection_different(new_con_state, old_con_state, connector, adev->dm.hdcp_workqueue))
			if (aconnector->dc_link)
				hdcp_update_display(
					adev->dm.hdcp_workqueue, aconnector->dc_link->link_index, aconnector,
					new_con_state->hdcp_content_type,