diff options
| author | Chen Tao <chentao107@huawei.com> | 2020-06-17 18:51:29 +0800 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2020-07-01 01:59:22 -0400 | 
| commit | 3e4aeff36e9212a939290c0ca70d4931c4ad1950 (patch) | |
| tree | aed83f642b910925578054f56f041e2dc6b67238 /drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | |
| parent | db32fec96620b3533fcc534a78ce64bf94cc4245 (diff) | |
drm/amdgpu/debugfs: fix memory leak when pm_runtime_get_sync failed
Fix memory leak in amdgpu_debugfs_gpr_read not freeing data when
pm_runtime_get_sync failed.
Fixes: a9ffe2a983383 ("drm/amdgpu/debugfs: properly handle runtime pm")
Signed-off-by: Chen Tao <chentao107@huawei.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 9 | 
1 files changed, 6 insertions, 3 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c index d33cb344be69..3d0e8f8f733e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c @@ -937,7 +937,7 @@ static ssize_t amdgpu_debugfs_gpr_read(struct file *f, char __user *buf,  	r = pm_runtime_get_sync(adev->ddev->dev);  	if (r < 0) -		return r; +		goto err;  	r = amdgpu_virt_enable_access_debugfs(adev);  	if (r < 0) @@ -967,7 +967,7 @@ 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) { -			result = r; +			amdgpu_virt_disable_access_debugfs(adev);  			goto err;  		} @@ -976,10 +976,13 @@ static ssize_t amdgpu_debugfs_gpr_read(struct file *f, char __user *buf,  		size -= 4;  	} -err:  	kfree(data);  	amdgpu_virt_disable_access_debugfs(adev);  	return result; + +err: +	kfree(data); +	return r;  }  /** | 
