⬢ DragonFlyBSD Kernel Audit
DF-3707 / 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
@@ -4535,7 +4535,11 @@ static int vega10_get_sclk_od(struct pp_h
 	int value = sclk_table->dpm_levels[sclk_table->count - 1].value;
 	int golden_value = golden_sclk_table->dpm_levels
 			[golden_sclk_table->count - 1].value;
 
+	if (!golden_value) /* crafted/blank VBIOS table: avoid divide-by-zero */
+		return 0;
+
 	value -= golden_value;
 	value = DIV_ROUND_UP(value * 100, golden_value);
@@ -4586,7 +4586,11 @@ static int vega10_get_mclk_od(struct pp_h
 	int value = mclk_table->dpm_levels[mclk_table->count - 1].value;
 	int golden_value = golden_mclk_table->dpm_levels
 			[golden_mclk_table->count - 1].value;
 
+	if (!golden_value) /* crafted/blank VBIOS table: avoid divide-by-zero */
+		return 0;
+
 	value -= golden_value;
 	value = DIV_ROUND_UP(value * 100, golden_value);