]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/panic: Fix drawing the logo on a small narrow screen
authorJocelyn Falempe <jfalempe@redhat.com>
Thu, 9 Oct 2025 12:24:48 +0000 (14:24 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Oct 2025 13:10:28 +0000 (14:10 +0100)
[ Upstream commit 179753aa5b7890b311968c033d08f558f0a7be21 ]

If the logo width is bigger than the framebuffer width, and the
height is big enough to hold the logo and the message, it will draw
at x coordinate that are higher than the width, and ends up in a
corrupted image.

Fixes: 4b570ac2eb54 ("drm/rect: Add drm_rect_overlap()")
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://lore.kernel.org/r/20251009122955.562888-2-jfalempe@redhat.com
Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/drm_panic.c

index 1d6312fa142935fcf763381920ad889ca4cf4b27..23ba791c6131b39561b4c7c2fadef4eb33f54e4e 100644 (file)
@@ -429,6 +429,9 @@ static void drm_panic_logo_rect(struct drm_rect *rect, const struct font_desc *f
 static void drm_panic_logo_draw(struct drm_scanout_buffer *sb, struct drm_rect *rect,
                                const struct font_desc *font, u32 fg_color)
 {
+       if (rect->x2 > sb->width || rect->y2 > sb->height)
+               return;
+
        if (logo_mono)
                drm_panic_blit(sb, rect, logo_mono->data,
                               DIV_ROUND_UP(drm_rect_width(rect), 8), 1, fg_color);