DF-1138 / fix.diff
diff --git a/sys/dev/drm/radeon/si_dpm.c b/sys/dev/drm/radeon/si_dpm.c --- a/sys/dev/drm/radeon/si_dpm.c +++ b/sys/dev/drm/radeon/si_dpm.c @@ -6883,6 +6883,12 @@ for (i = 0; i < RADEON_MAX_VCE_LEVELS; i++) { u32 sclk, mclk; clock_array_index = rdev->pm.dpm.vce_states[i].clk_idx; + if (clock_array_index >= clock_info_array->ucNumEntries) { + dev_warn(rdev->dev, "invalid vce clk_idx %d (>= %u)\n", + clock_array_index, + clock_info_array->ucNumEntries); + continue; + } clock_info = (union pplib_clock_info *) &clock_info_array->clockInfo[clock_array_index * clock_info_array->ucEntrySize]; sclk = le16_to_cpu(clock_info->si.usEngineClockLow); |