diff options
author | Dan Carpenter <dan.carpenter@oracle.com> | 2017-07-10 03:20:42 -0400 |
---|---|---|
committer | Rob Clark <robdclark@gmail.com> | 2017-08-01 16:24:21 -0400 |
commit | 71e3dfa167b105d3c06e76fee1d0e2fd1e502cf6 (patch) | |
tree | c0e7f566aeeebed7690ff08582a6b7466ba5f166 | |
parent | 65e93108891e571f177c202add9288eda9ac4100 (diff) |
drm/msm: unlock on error in msm_gem_get_iova()
We recently added locking to this function but there was a direct return
that was overlooked where we need to unlock.
Fixes: 0e08270a1f01 ("drm/msm: Separate locking of buffer resources from struct_mutex")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Rob Clark <robdclark@gmail.com>
-rw-r--r-- | drivers/gpu/drm/msm/msm_gem.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c index 65f35544c1ec..065d933df2c3 100644 --- a/drivers/gpu/drm/msm/msm_gem.c +++ b/drivers/gpu/drm/msm/msm_gem.c | |||
@@ -383,8 +383,10 @@ int msm_gem_get_iova(struct drm_gem_object *obj, | |||
383 | struct page **pages; | 383 | struct page **pages; |
384 | 384 | ||
385 | vma = add_vma(obj, aspace); | 385 | vma = add_vma(obj, aspace); |
386 | if (IS_ERR(vma)) | 386 | if (IS_ERR(vma)) { |
387 | return PTR_ERR(vma); | 387 | ret = PTR_ERR(vma); |
388 | goto unlock; | ||
389 | } | ||
388 | 390 | ||
389 | pages = get_pages(obj); | 391 | pages = get_pages(obj); |
390 | if (IS_ERR(pages)) { | 392 | if (IS_ERR(pages)) { |
@@ -405,7 +407,7 @@ int msm_gem_get_iova(struct drm_gem_object *obj, | |||
405 | 407 | ||
406 | fail: | 408 | fail: |
407 | del_vma(vma); | 409 | del_vma(vma); |
408 | 410 | unlock: | |
409 | mutex_unlock(&msm_obj->lock); | 411 | mutex_unlock(&msm_obj->lock); |
410 | return ret; | 412 | return ret; |
411 | } | 413 | } |