⬢ DragonFlyBSD Kernel Audit
DF-4501 / fault-injection.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/radeon/radeon_uvd.c
+++ b/sys/dev/drm/radeon/radeon_uvd.c
@@ -760,6 +760,13 @@ static int radeon_uvd_send_msg(struct rad
 	ib.length_dw = 16;
 
 	r = radeon_ib_schedule(rdev, &ib, NULL, false);
+#ifdef DF4501_FAULT_INJECTION
+	/* DF-4501 verification aid (NOT a fix): emulate every real
+	 * radeon_ib_schedule() error path leaving ib.fence == NULL.
+	 * Build a kernel with -DDF4501_FAULT_INJECTION, run
+	 * ./uvd_sendmsg_nullfence, expect a near-NULL write panic at
+	 * fd close (radeon_uvd_free_handles -> get_destroy_msg -> here).
+	 */
+	r = -EINVAL;
+#endif
 
 	if (fence)
 		*fence = radeon_fence_ref(ib.fence);