⬢ DragonFlyBSD Kernel Audit
DF-4857 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/radeon/rv730_dpm.c
+++ b/sys/dev/drm/radeon/rv730_dpm.c
@@ -67,6 +67,12 @@
 	else
 		post_divider = 1;
 
+	/* FirmwareInfo.usReferenceClock is used verbatim for
+	 * reference_freq; a crafted/corrupt VBIOS supplying zero must not
+	 * reach the divider. */
+	if (reference_clock == 0)
+		return -EINVAL;
+
 	tmp = (u64) engine_clock * reference_divider * post_divider * 16384;
 	do_div(tmp, reference_clock);
 	fbdiv = (u32) tmp;