DF-1182 / fix.diff
--- a/sys/dev/drm/amd/powerplay/hwmgr/vega10_hwmgr.c +++ b/sys/dev/drm/amd/powerplay/hwmgr/vega10_hwmgr.c @@ -3038,6 +3038,17 @@ "Performance levels exceeds Driver limit!", return -1); + /* DF-1182: VBIOS-supplied u8 clock indices must be in range. */ + if (state_entry->ucSocClockIndexLow >= socclk_dep_table->ucNumEntries || + state_entry->ucSocClockIndexHigh >= socclk_dep_table->ucNumEntries || + state_entry->ucGfxClockIndexLow >= gfxclk_dep_table->ucNumEntries || + state_entry->ucGfxClockIndexHigh >= gfxclk_dep_table->ucNumEntries || + state_entry->ucMemClockIndexLow >= mclk_dep_table->ucNumEntries || + state_entry->ucMemClockIndexHigh >= mclk_dep_table->ucNumEntries) { + pr_err("VBIOS state record clock index out of range\n"); + return -EINVAL; + } + /* Performance levels are arranged from low to high. */ performance_level->soc_clock = socclk_dep_table->entries [state_entry->ucSocClockIndexLow].ulClk; |