]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/sysfb: Do not dereference NULL pointer in plane reset
authorThomas Zimmermann <tzimmermann@suse.de>
Fri, 17 Oct 2025 09:13:36 +0000 (11:13 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Nov 2025 20:34:00 +0000 (15:34 -0500)
commit 14e02ed3876f4ab0ed6d3f41972175f8b8df3d70 upstream.

The plane state in __drm_gem_reset_shadow_plane() can be NULL. Do not
deref that pointer, but forward NULL to the other plane-reset helpers.
Clears plane->state to NULL.

v2:
- fix typo in commit description (Javier)

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Fixes: b71565022031 ("drm/gem: Export implementation of shadow-plane helpers")
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/dri-devel/aPIDAsHIUHp_qSW4@stanley.mountain/
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Melissa Wen <melissa.srw@gmail.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: David Airlie <airlied@gmail.com>
Cc: Simona Vetter <simona@ffwll.ch>
Cc: dri-devel@lists.freedesktop.org
Cc: <stable@vger.kernel.org> # v5.15+
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://patch.msgid.link/20251017091407.58488-1-tzimmermann@suse.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/drm_gem_atomic_helper.c

index 93337543aac32b50121f1698c3c79950e3e67f4f..4874f575adfade2951e40b434d9b6c0200018a2e 100644 (file)
@@ -309,8 +309,12 @@ EXPORT_SYMBOL(drm_gem_destroy_shadow_plane_state);
 void __drm_gem_reset_shadow_plane(struct drm_plane *plane,
                                  struct drm_shadow_plane_state *shadow_plane_state)
 {
-       __drm_atomic_helper_plane_reset(plane, &shadow_plane_state->base);
-       drm_format_conv_state_init(&shadow_plane_state->fmtcnv_state);
+       if (shadow_plane_state) {
+               __drm_atomic_helper_plane_reset(plane, &shadow_plane_state->base);
+               drm_format_conv_state_init(&shadow_plane_state->fmtcnv_state);
+       } else {
+               __drm_atomic_helper_plane_reset(plane, NULL);
+       }
 }
 EXPORT_SYMBOL(__drm_gem_reset_shadow_plane);