[PATCH v2 1/7] drm/panic: Fix uninitialized drm_scanout_buffer.set_pixel() crash
Jocelyn Falempe
jfalempe at redhat.com
Fri Jun 14 09:35:21 UTC 2024
On 13/06/2024 21:17, Geert Uytterhoeven wrote:
> 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().
Good catch, I don't know how I didn't hit this bug before.
Thanks for the fix.
Reviewed-by: Jocelyn Falempe <jfalempe at redhat.com>
>
> Fixes: 24d07f114e4ec760 ("drm/panic: Add a set_pixel() callback to drm_scanout_buffer")
> Signed-off-by: Geert Uytterhoeven <geert+renesas at glider.be>
> ---
> v2:
> - New.
> ---
> drivers/gpu/drm/drm_panic.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_panic.c b/drivers/gpu/drm/drm_panic.c
> index 293d4dcbc80da7ba..fc04ed4e0b399f55 100644
> --- a/drivers/gpu/drm/drm_panic.c
> +++ b/drivers/gpu/drm/drm_panic.c
> @@ -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;
>
More information about the dri-devel
mailing list