From 032eb1a14957b5939ba42eb4fda441e09f625adb Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 17 Apr 2017 09:26:03 -0700 Subject: [PATCH] drm/vc4: Fix refcounting of runtime PM get if it errors out. We were returning without decrementing if the error happened, meaning that at the next submit we wouldn't try to bring up the power domain. Signed-off-by: Eric Anholt Link: http://patchwork.freedesktop.org/patch/msgid/20170417162603.12726-1-eric@anholt.net Reviewed-by: Sean Paul (cherry picked from commit 925d05e1f825db9490da33afe35bd5383d301e97) --- drivers/gpu/drm/vc4/vc4_gem.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c index 32e17b384fbc..994295fe1084 100644 --- a/drivers/gpu/drm/vc4/vc4_gem.c +++ b/drivers/gpu/drm/vc4/vc4_gem.c @@ -876,13 +876,16 @@ vc4_submit_cl_ioctl(struct drm_device *dev, void *data, } mutex_lock(&vc4->power_lock); - if (vc4->power_refcount++ == 0) + if (vc4->power_refcount++ == 0) { ret = pm_runtime_get_sync(&vc4->v3d->pdev->dev); - mutex_unlock(&vc4->power_lock); - if (ret < 0) { - kfree(exec); - return ret; + if (ret < 0) { + mutex_unlock(&vc4->power_lock); + vc4->power_refcount--; + kfree(exec); + return ret; + } } + mutex_unlock(&vc4->power_lock); exec->args = args; INIT_LIST_HEAD(&exec->unref_list);