drm/mediatek: Handle drm_atomic_helper_swap_state failure
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Tue, 11 Jul 2017 14:33:08 +0000 (16:33 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 26 Jul 2017 11:22:42 +0000 (13:22 +0200)
drm_atomic_helper_swap_state() will be changed to interruptible waiting
in the next few commits, so all drivers have to be changed to handling
failure.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: CK Hu <ck.hu@mediatek.com>
Cc: Philipp Zabel <p.zabel@pengutronix.de>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-mediatek@lists.infradead.org
Link: http://patchwork.freedesktop.org/patch/msgid/20170711143314.2148-7-maarten.lankhorst@linux.intel.com
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/mediatek/mtk_drm_drv.c

index be07416..b2596f3 100644 (file)
@@ -109,7 +109,12 @@ static int mtk_atomic_commit(struct drm_device *drm,
        mutex_lock(&private->commit.lock);
        flush_work(&private->commit.work);
 
-       drm_atomic_helper_swap_state(state, true);
+       ret = drm_atomic_helper_swap_state(state, true);
+       if (ret) {
+               mutex_unlock(&private->commit.lock);
+               drm_atomic_helper_cleanup_planes(drm, state);
+               return ret;
+       }
 
        drm_atomic_state_get(state);
        if (async)