Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/msm: fix fb references in async update

Async update callbacks are expected to set the old_fb in the new_state
so prepare/cleanup framebuffers are balanced.

Cc: <stable@vger.kernel.org> # v4.14+
Fixes: 224a4c970987 ("drm/msm: update cursors asynchronously through atomic")
Suggested-by: Boris Brezillon <boris.brezillon@collabora.com>
Signed-off-by: Helen Koike <helen.koike@collabora.com>
Acked-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190603165610.24614-4-helen.koike@collabora.com

authored by

Helen Koike and committed by
Boris Brezillon
474d952b 332af874

+4
+4
drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c
··· 502 502 static void mdp5_plane_atomic_async_update(struct drm_plane *plane, 503 503 struct drm_plane_state *new_state) 504 504 { 505 + struct drm_framebuffer *old_fb = plane->state->fb; 506 + 505 507 plane->state->src_x = new_state->src_x; 506 508 plane->state->src_y = new_state->src_y; 507 509 plane->state->crtc_x = new_state->crtc_x; ··· 526 524 527 525 *to_mdp5_plane_state(plane->state) = 528 526 *to_mdp5_plane_state(new_state); 527 + 528 + new_state->fb = old_fb; 529 529 } 530 530 531 531 static const struct drm_plane_helper_funcs mdp5_plane_helper_funcs = {