⬢ DragonFlyBSD Kernel Audit
DF-3743 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/radeon/radeon_atombios.c
+++ b/sys/dev/drm/radeon/radeon_atombios.c
@@ -1544,6 +1544,8 @@ bool radeon_atombios_get_asic_ss_info(struct radeon_device *rdev,
 					ss->rate = le16_to_cpu(ss_assign->v1.usSpreadRateInKhz);
 					ss->percentage_divider = 100;
+					if (!ss->rate)
+						return false;
 					return true;
@@ -1567,6 +1569,9 @@ bool radeon_atombios_get_asic_ss_info(struct radeon_device *rdev,
 					    ((id == ASIC_INTERNAL_ENGINE_SS) ||
 					     (id == ASIC_INTERNAL_MEMORY_SS)))
 						ss->rate /= 100;
+					if (!ss->rate)
+						return false;
 					return true;
@@ -1593,6 +1598,9 @@ bool radeon_atombios_get_asic_ss_info(struct radeon_device *rdev,
 				if ((id == ASIC_INTERNAL_ENGINE_SS) ||
 				    (id == ASIC_INTERNAL_MEMORY_SS))
 					ss->rate /= 100;
+				if (!ss->rate)
+					return false;
 				if (rdev->flags & RADEON_IS_IGP)
 					radeon_atombios_get_igp_ss_overrides(rdev, ss, id);