diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2020-06-17 20:50:02 +0200 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2020-07-01 07:59:22 +0200 |
commit | e520d3e0d2818aafcdf9d8b60916754d8fedc366 (patch) | |
tree | 740e158b813a1ff2a287b86b85ac9db2baa3277c /drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | |
parent | drm/amdgpu/debugfs: fix memory leak when amdgpu_virt_enable_access_debugfs fa... (diff) | |
download | linux-e520d3e0d2818aafcdf9d8b60916754d8fedc366.tar.xz linux-e520d3e0d2818aafcdf9d8b60916754d8fedc366.zip |
drm/amdgpu/fence: fix ref count leak when pm_runtime_get_sync fails
The call to pm_runtime_get_sync increments the counter even in case of
failure, leading to incorrect ref count.
In case of failure, decrement the ref count before returning.
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Acked-by: Rajneesh Bhardwaj <rajneesh.bhardwaj@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c index 8537f4704348..60b323d7caf2 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c @@ -755,8 +755,10 @@ static int amdgpu_debugfs_gpu_recover(struct seq_file *m, void *data) int r; r = pm_runtime_get_sync(dev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(dev->dev); return 0; + } seq_printf(m, "gpu recover\n"); amdgpu_device_gpu_recover(adev, NULL); |