DragonFlyBSD Kernel Audit
DF-1966 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/sys/dev/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
--- a/sys/dev/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
+++ b/sys/dev/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
@@ -240,6 +240,12 @@
 			(aconnector->edid->extensions + 1) * EDID_LENGTH,
 			&init_params);
 
+		/* dc_link_add_remote_sink may return NULL when allocation fails
+		 * or the EDID extension count is too large; dereferencing it
+		 * without a check panics the kernel. */
+		if (dc_sink == NULL)
+			return 0;
+
 		dc_sink->priv = aconnector;
 		aconnector->dc_sink = dc_sink;