Allocate the new shadow plane state before destroying the existing state, so that an allocation failure leaves the current state intact.
Signed-off-by: Triet Hoang <[email protected]> --- drivers/gpu/drm/drm_gem_atomic_helper.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_gem_atomic_helper.c b/drivers/gpu/drm/drm_gem_atomic_helper.c index abef865c5..24a0b9398 100644 --- a/drivers/gpu/drm/drm_gem_atomic_helper.c +++ b/drivers/gpu/drm/drm_gem_atomic_helper.c @@ -308,14 +308,16 @@ EXPORT_SYMBOL(__drm_gem_reset_shadow_plane); */ void drm_gem_reset_shadow_plane(struct drm_plane *plane) { - struct drm_shadow_plane_state *shadow_plane_state; + struct drm_shadow_plane_state *shadow_plane_state = kzalloc_obj(*shadow_plane_state); + + if (!shadow_plane_state) + return; if (plane->state) { drm_gem_destroy_shadow_plane_state(plane, plane->state); plane->state = NULL; /* must be set to NULL here */ } - shadow_plane_state = kzalloc_obj(*shadow_plane_state); __drm_gem_reset_shadow_plane(plane, shadow_plane_state); } EXPORT_SYMBOL(drm_gem_reset_shadow_plane); -- 2.53.0
