diff options
author | Lukas Wunner <lukas@wunner.de> | 2016-06-08 12:47:27 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2016-06-24 02:49:31 -0400 |
commit | c9c9bbd754e5f342977b32a328849cc0d9c15c93 (patch) | |
tree | 0ff240243bac13ba7a148475cd07c0bbd64525ad /drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | |
parent | 4a7885476aa06725261393552ebeee423246784f (diff) |
drm/amdgpu: Don't leak runtime pm ref on driver load
If an error occurs in amdgpu_device_init() after adev->rmmio has been
set, its caller amdgpu_driver_load_kms() will skip runtime pm
initialization and call amdgpu_driver_unload_kms(), which acquires a
runtime pm ref that is leaked.
Balance by releasing a runtime pm ref in the error path of
amdgpu_driver_load_kms().
Fixes: d38ceaf99ed0 ("drm/amdgpu: add core driver (v4)")
Cc: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/9a53449865759d7499a439ca2776093ee117b1eb.1465392124.git.lukas@wunner.de
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c index 9b1f9790dfae..0db692ef3d25 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | |||
@@ -137,9 +137,12 @@ int amdgpu_driver_load_kms(struct drm_device *dev, unsigned long flags) | |||
137 | } | 137 | } |
138 | 138 | ||
139 | out: | 139 | out: |
140 | if (r) | 140 | if (r) { |
141 | /* balance pm_runtime_get_sync in amdgpu_driver_unload_kms */ | ||
142 | if (adev->rmmio && amdgpu_device_is_px(dev)) | ||
143 | pm_runtime_put_noidle(dev->dev); | ||
141 | amdgpu_driver_unload_kms(dev); | 144 | amdgpu_driver_unload_kms(dev); |
142 | 145 | } | |
143 | 146 | ||
144 | return r; | 147 | return r; |
145 | } | 148 | } |