diff options
author | Christian König <christian.koenig@amd.com> | 2015-07-07 15:27:03 (GMT) |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2015-07-16 16:39:39 (GMT) |
commit | 5c2327beed49efa3198b8468e78b1182eb0b764b (patch) | |
tree | 743d1bae4ecdab5c4782acd639e0fed485b63762 | |
parent | 76a1ea618f01b2bf5a325832d1c273c039c4ea81 (diff) | |
download | linux-5c2327beed49efa3198b8468e78b1182eb0b764b.tar.xz |
drm/amdgpu: stop context leak in the error path
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com>
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c index 469b6f2..1f040d8 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c @@ -817,12 +817,16 @@ int amdgpu_cs_wait_ioctl(struct drm_device *dev, void *data, r = amdgpu_cs_get_ring(adev, wait->in.ip_type, wait->in.ip_instance, wait->in.ring, &ring); - if (r) + if (r) { + amdgpu_ctx_put(ctx); return r; + } r = amdgpu_fence_recreate(ring, filp, wait->in.handle, &fence); - if (r) + if (r) { + amdgpu_ctx_put(ctx); return r; + } r = fence_wait_timeout(&fence->base, true, timeout); amdgpu_fence_unref(&fence); |