⬢ DragonFlyBSD Kernel Audit
DF-4041 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/amd/powerplay/smumgr/polaris10_smumgr.c
+++ b/sys/dev/drm/amd/powerplay/smumgr/polaris10_smumgr.c
@@ -654,7 +654,7 @@
 			count = SMU_MAX_SMIO_LEVELS;
 		for (level = 0; level < count; level++) {
 			table->SmioTable2.Pattern[level].Voltage =
-				PP_HOST_TO_SMC_US(data->mvdd_voltage_table.entries[count].value * VOLTAGE_SCALE);
+				PP_HOST_TO_SMC_US(data->mvdd_voltage_table.entries[level].value * VOLTAGE_SCALE);
 			/* Index into DpmTable.Smio. Drive bits from Smio entry to get this voltage level.*/
 			table->SmioTable2.Pattern[level].Smio =
 				(uint8_t) level;
@@ -1180,7 +1180,8 @@
 
 	if (SMU7_VOLTAGE_CONTROL_NONE != data->mvdd_control) {
 		/* find mvdd value which clock is more than request */
-		for (i = 0; i < table_info->vdd_dep_on_mclk->count; i++) {
+		for (i = 0; i < table_info->vdd_dep_on_mclk->count &&
+				i < PP_ATOMCTRL_MAX_VOLTAGE_ENTRIES; i++) {
 			if (mclk <= table_info->vdd_dep_on_mclk->entries[i].clk) {
 				smio_pat->Voltage = data->mvdd_voltage_table.entries[i].value;
 				break;