⬢ DragonFlyBSD Kernel Audit
DF-3946 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
+++ b/sys/dev/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
@@ -2743,8 +2743,17 @@
 	for (i = 0; i < dc->res_pool->pipe_count; i++) {
 		struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[i];
 
-		if (pipe_ctx->stream != stream)
-			continue;
+		if (pipe_ctx->stream != stream)
+			continue;
+
+		/*
+		 * The head pipe of a stream can have its plane detached
+		 * while the stream remains committed
+		 * (dc_remove_plane_from_context(), core/dc_resource.c);
+		 * such a pipe has no front end to program.
+		 */
+		if (!pipe_ctx->plane_state)
+			continue;
 
 		/* Need to allocate mem before program front end for Fiji */
 		pipe_ctx->plane_res.mi->funcs->allocate_mem_input(