⬢ DragonFlyBSD Kernel Audit
DF-3706 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
+++ b/sys/dev/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
@@ -1229,7 +1229,8 @@ static int vega10_setup_default_pcie_tabl
 			"Incorrect number of PCIE States from VBIOS!",
 			return -1);
 
-	for (i = 0; i < NUM_LINK_LEVELS; i++) {
+	for (i = 0; i < NUM_LINK_LEVELS && i < bios_pcie_table->count; i++) {
 		if (data->registry_data.pcieSpeedOverride)
 			pcie_table->pcie_gen[i] =
 					data->registry_data.pcieSpeedOverride;
@@ -1252,7 +1253,8 @@ static int vega10_setup_default_pcie_tabl
 			pcie_table->lclk[i] =
 					bios_pcie_table->entries[i].pcie_sclk;
 	}
 
-	pcie_table->count = NUM_LINK_LEVELS;
+	/* vega10_populate_smc_link_levels pads missing levels from level i-1 */
+	pcie_table->count = i;
 
 	return 0;
 }