]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/panic: Fix uninitialized drm_scanout_buffer.set_pixel() crash
authorGeert Uytterhoeven <geert+renesas@glider.be>
Thu, 13 Jun 2024 19:17:59 +0000 (21:17 +0200)
committerJocelyn Falempe <jfalempe@redhat.com>
Mon, 24 Jun 2024 11:18:00 +0000 (13:18 +0200)
No implementations of drm_plane_helper_funcs.get_scanout_buffer() fill
in the optional drm_scanout_buffer.set_pixel() member.  Hence the member
may contain non-zero garbage, causing a crash when deferencing it during
drm panic.

Fix this by pre-initializing the drm_scanout_buffer object before
calling drm_plane_helper_funcs.get_scanout_buffer().

Fixes: 24d07f114e4ec760 ("drm/panic: Add a set_pixel() callback to drm_scanout_buffer")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>
Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/4c250d21880ca0b97e41da7b6a101bdf07e9d015.1718305355.git.geert+renesas@glider.be
drivers/gpu/drm/drm_panic.c

index 293d4dcbc80da7baa5b8d2e7372d8a4589cde829..fc04ed4e0b399f55468e290eb9b53e680b957a1a 100644 (file)
@@ -582,7 +582,7 @@ static void draw_panic_dispatch(struct drm_scanout_buffer *sb)
 
 static void draw_panic_plane(struct drm_plane *plane)
 {
-       struct drm_scanout_buffer sb;
+       struct drm_scanout_buffer sb = { };
        int ret;
        unsigned long flags;