diff options
author | Eric Anholt <eric@anholt.net> | 2017-04-17 09:26:03 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2017-04-18 12:31:14 -0700 |
commit | 925d05e1f825db9490da33afe35bd5383d301e97 (patch) | |
tree | 0e74238e3c3cb5d55bc8f622bbbd5ee442e05fea /drivers/gpu/drm/vc4 | |
parent | 4f6e3d66ac522dec9733d433ad00e8e77747c372 (diff) | |
download | op-kernel-dev-925d05e1f825db9490da33afe35bd5383d301e97.zip op-kernel-dev-925d05e1f825db9490da33afe35bd5383d301e97.tar.gz |
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 <eric@anholt.net>
Link: http://patchwork.freedesktop.org/patch/msgid/20170417162603.12726-1-eric@anholt.net
Reviewed-by: Sean Paul <seanpaul@chromium.org>
Diffstat (limited to 'drivers/gpu/drm/vc4')
-rw-r--r-- | drivers/gpu/drm/vc4/vc4_gem.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c index a1a0104..12fb70e 100644 --- a/drivers/gpu/drm/vc4/vc4_gem.c +++ b/drivers/gpu/drm/vc4/vc4_gem.c @@ -1010,13 +1010,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); |