diff options
| author | Navid Emamdoost <navid.emamdoost@gmail.com> | 2020-06-14 02:09:44 -0500 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2020-07-01 01:59:22 -0400 | 
| commit | e008fa6fb41544b63973a529b704ef342f47cc65 (patch) | |
| tree | 946d9e4ef8c8cdb2199f948baac4182fe9b8558f /drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | |
| parent | 5509ac65f2fe5aa3c0003237ec629ca55024307c (diff) | |
drm/amdgpu: fix ref count leak in amdgpu_display_crtc_set_config
in amdgpu_display_crtc_set_config, 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.
Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_display.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c index f7143d927b6d..5e51f0acf744 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c @@ -282,7 +282,7 @@ int amdgpu_display_crtc_set_config(struct drm_mode_set *set,  	ret = pm_runtime_get_sync(dev->dev);  	if (ret < 0) -		return ret; +		goto out;  	ret = drm_crtc_helper_set_config(set, ctx); @@ -297,7 +297,7 @@ int amdgpu_display_crtc_set_config(struct drm_mode_set *set,  	   take the current one */  	if (active && !adev->have_disp_power_ref) {  		adev->have_disp_power_ref = true; -		return ret; +		goto out;  	}  	/* if we have no active crtcs, then drop the power ref  	   we got before */ @@ -306,6 +306,7 @@ int amdgpu_display_crtc_set_config(struct drm_mode_set *set,  		adev->have_disp_power_ref = false;  	} +out:  	/* drop the power reference we got coming in here */  	pm_runtime_put_autosuspend(dev->dev);  	return ret;  | 
