drm/tegra: Handle drm_atomic_helper_swap_state failure
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Tue, 11 Jul 2017 14:33:10 +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: Thierry Reding <thierry.reding@gmail.com>
Cc: Jonathan Hunter <jonathanh@nvidia.com>
Cc: linux-tegra@vger.kernel.org
Link: http://patchwork.freedesktop.org/patch/msgid/20170711143314.2148-9-maarten.lankhorst@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/tegra/drm.c

index ad3d124a972db01d28daf9d870eddf209a648efd..3ba659a5940d763e11bdab5d84c63cc7689f3272 100644 (file)
@@ -100,7 +100,12 @@ static int tegra_atomic_commit(struct drm_device *drm,
         * the software side now.
         */
 
-       drm_atomic_helper_swap_state(state, true);
+       err = drm_atomic_helper_swap_state(state, true);
+       if (err) {
+               mutex_unlock(&tegra->commit.lock);
+               drm_atomic_helper_cleanup_planes(drm, state);
+               return err;
+       }
 
        drm_atomic_state_get(state);
        if (nonblock)