Commit afd9b9f4 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]
Signed-off-by: default avatarZheng Zucheng <zhengzucheng@huawei.com>
parent 327d477f
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -6606,6 +6606,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,
@@ -8832,6 +8835,7 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)

			DRM_INFO("[HDCP_DM] hdcp_update_display enable_encryption = %x\n", enable_encryption);

			if (aconnector->dc_link)
				hdcp_update_display(
					adev->dm.hdcp_workqueue, aconnector->dc_link->link_index, aconnector,
					new_con_state->hdcp_content_type, enable_encryption);