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

drm/amd/display: Check num_valid_sets before accessing reader_wm_sets[]

mainline inclusion
from mainline-v6.11-rc1
commit b38a4815f79b87efb196cd5121579fc51e29a7fb
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IAUA64
CVE: CVE-2024-46815

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b38a4815f79b87efb196cd5121579fc51e29a7fb



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

[WHY & HOW]
num_valid_sets needs to be checked to avoid a negative index when
accessing reader_wm_sets[num_valid_sets - 1].

This fixes an OVERRUN issue reported by Coverity.

Reviewed-by: default avatarHarry Wentland <harry.wentland@amd.com>
Acked-by: default avatarTom Chung <chiahsuan.chung@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 avatarZheng Zucheng <zhengzucheng@huawei.com>
parent 07660771
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -455,6 +455,7 @@ static void build_watermark_ranges(struct clk_bw_params *bw_params, struct pp_sm
			ranges->reader_wm_sets[num_valid_sets].max_fill_clk_mhz = PP_SMU_WM_SET_RANGE_CLK_UNCONSTRAINED_MAX;

			/* Modify previous watermark range to cover up to max */
			if (num_valid_sets > 0)
				ranges->reader_wm_sets[num_valid_sets - 1].max_fill_clk_mhz = PP_SMU_WM_SET_RANGE_CLK_UNCONSTRAINED_MAX;
		}
		num_valid_sets++;