From: Lu Yao <[email protected]>

If put_user() failed in loop, jumping to err label will cause putting
the reference a second time.

Fixes: 9eee152aab56 ("drm/amdgpu/debugfs: fix ref count leak when 
pm_runtime_get_sync fails")
Signed-off-by: Lu Yao <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
index aca1a8045afa..7a3246852efb 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
@@ -1302,8 +1302,9 @@ static ssize_t amdgpu_debugfs_gpr_read(struct file *f, 
char __user *buf,
                value = data[result >> 2];
                r = put_user(value, (uint32_t *)buf);
                if (r) {
+                       kfree(data);
                        amdgpu_virt_disable_access_debugfs(adev);
-                       goto err;
+                       return r;
                }
 
                result += 4;
-- 
2.25.1

Reply via email to