From b537d87d2632c9a72afa08755b2de89a5b3ab70f Mon Sep 17 00:00:00 2001 From: luyuantao Date: Mon, 26 Jan 2026 18:07:32 +0800 Subject: [PATCH] drm/panic: Fix the loop that causes kmsg to not display correctly When kmsg_buf completes drawing the screen and yoffset is less than 0, kmsg_dump_get_buffer continues to obtain the buffer. This potential loop may cause panic_flush not to be executed immediately or even not to be executed at all, resulting in a garbled screen display instead of normal logs So, the loop should be exited immediately after drawing kmsg_buf Signed-off-by: luyuantao Acked-by: Javier Martinez Canillas Reviewed-by: Jocelyn Falempe Link: https://patch.msgid.link/20260126100732.365-1-luyuantao01@163.com Signed-off-by: Jocelyn Falempe --- drivers/gpu/drm/drm_panic.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_panic.c b/drivers/gpu/drm/drm_panic.c index e576c4791861..64a515e56f70 100644 --- a/drivers/gpu/drm/drm_panic.c +++ b/drivers/gpu/drm/drm_panic.c @@ -570,7 +570,8 @@ static void draw_panic_screen_kmsg(struct drm_scanout_buffer *sb) drm_panic_fill(sb, &r_screen, bg_color); kmsg_dump_rewind(&iter); - while (kmsg_dump_get_buffer(&iter, false, kmsg_buf, sizeof(kmsg_buf), &kmsg_len)) { + while (yoffset >= 0 && kmsg_dump_get_buffer(&iter, false, kmsg_buf, + sizeof(kmsg_buf), &kmsg_len)) { char *start; char *end; -- GitLab