DragonFlyBSD Kernel Audit
DF-1368 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/drm/amd/powerplay/smumgr/vegam_smumgr.c b/sys/dev/drm/amd/powerplay/smumgr/vegam_smumgr.c
--- a/sys/dev/drm/amd/powerplay/smumgr/vegam_smumgr.c
+++ b/sys/dev/drm/amd/powerplay/smumgr/vegam_smumgr.c
@@ -512,7 +512,8 @@
 	 * We are populating vddc CAC data to BapmVddc table
 	 * in split and merged mode
 	 */
-	for (count = 0; count < lookup_table->count; count++) {
+	for (count = 0; count < lookup_table->count &&
+	     count < SMU75_MAX_LEVELS_VDDC; count++) {
 		index = phm_get_voltage_index(lookup_table,
 				data->vddc_voltage_table.entries[count].value);
 		table->BapmVddcVidLoSidd[count] =
@@ -1512,7 +1513,7 @@
 	ro = efuse * (max - min) / 255 + min;
 
 	/* Populate Sclk_CKS_masterEn0_7 and Sclk_voltageOffset */
-	for (i = 0; i < sclk_table->count; i++) {
+	for (i = 0; i < sclk_table->count && i < NUM_VFT_COLUMNS; i++) {
 		smu_data->smc_state_table.Sclk_CKS_masterEn0_7 |=
 				sclk_table->entries[i].cks_enable << i;
 		volt_without_cks = (uint32_t)((2753594000U + (sclk_table->entries[i].clk/100) *
@@ -1633,7 +1634,7 @@
 		AVFS_meanNsigma.Platform_sigma =
 				PP_HOST_TO_SMC_US(avfs_params.usAVFS_meanNsigma_Platform_sigma);
 
-		for (i = 0; i < sclk_table->count; i++) {
+		for (i = 0; i < sclk_table->count && i < NUM_VFT_COLUMNS; i++) {
 			AVFS_meanNsigma.Static_Voltage_Offset[i] =
 					(uint8_t)(sclk_table->entries[i].cks_voffset * 100 / 625);
 			AVFS_SclkOffset.Sclk_Offset[i] =