DragonFlyBSD Kernel Audit
DF-1274 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/drm/amd/powerplay/smumgr/tonga_smumgr.c b/sys/dev/drm/amd/powerplay/smumgr/tonga_smumgr.c
--- a/sys/dev/drm/amd/powerplay/smumgr/tonga_smumgr.c
+++ b/sys/dev/drm/amd/powerplay/smumgr/tonga_smumgr.c
@@ -582,7 +582,8 @@
 		pp_atomctrl_internal_ss_info ss_info;
 
 		uint32_t vcoFreq = engine_clock * dividers.uc_pll_post_div;
-		if (0 == atomctrl_get_engine_clock_spread_spectrum(hwmgr, vcoFreq, &ss_info)) {
+		if (0 == atomctrl_get_engine_clock_spread_spectrum(hwmgr, vcoFreq, &ss_info) &&
+		    ss_info.speed_spectrum_rate != 0) {
 			/*
 			* ss_info.speed_spectrum_percentage -- in unit of 0.01%
 			* ss_info.speed_spectrum_rate -- in unit of khz
@@ -875,7 +876,8 @@
 		tmp = (freq_nom / reference_clock);
 		tmp = tmp * tmp;
 
-		if (0 == atomctrl_get_memory_clock_spread_spectrum(hwmgr, freq_nom, &ss_info)) {
+		if (0 == atomctrl_get_memory_clock_spread_spectrum(hwmgr, freq_nom, &ss_info) &&
+		    ss_info.speed_spectrum_rate != 0) {
 			/* ss_info.speed_spectrum_percentage -- in unit of 0.01% */
 			/* ss.Info.speed_spectrum_rate -- in unit of khz */
 			/* CLKS = reference_clock / (2 * speed_spectrum_rate * reference_divider) * 10 */