diff options
| author | Alex Deucher <[email protected]> | 2016-08-31 21:27:03 +0000 |
|---|---|---|
| committer | Alex Deucher <[email protected]> | 2016-09-02 14:34:48 +0000 |
| commit | 32c59dc14b72803f20742e5b6e515d39e90dbb83 (patch) | |
| tree | a4987d6f899559aaf44bec5fe832bc3a99139f5d | |
| parent | drm/amdgpu: handle runtime pm correctly in amdgpu_driver_open_kms (diff) | |
| download | kernel-32c59dc14b72803f20742e5b6e515d39e90dbb83.tar.gz kernel-32c59dc14b72803f20742e5b6e515d39e90dbb83.zip | |
drm/radeon: handle runtime pm correctly in amdgpu_driver_open_kms
Need to fix the error paths.
Reviewed-by: Michel Dänzer <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_kms.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c index 835563c1f0ed..0aa8eacd77ca 100644 --- a/drivers/gpu/drm/radeon/radeon_kms.c +++ b/drivers/gpu/drm/radeon/radeon_kms.c @@ -641,11 +641,11 @@ int radeon_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv) if (rdev->family >= CHIP_CAYMAN) { struct radeon_fpriv *fpriv; struct radeon_vm *vm; - int r; fpriv = kzalloc(sizeof(*fpriv), GFP_KERNEL); if (unlikely(!fpriv)) { - return -ENOMEM; + r = -ENOMEM; + goto out_suspend; } if (rdev->accel_working) { @@ -653,14 +653,14 @@ int radeon_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv) r = radeon_vm_init(rdev, vm); if (r) { kfree(fpriv); - return r; + goto out_suspend; } r = radeon_bo_reserve(rdev->ring_tmp_bo.bo, false); if (r) { radeon_vm_fini(rdev, vm); kfree(fpriv); - return r; + goto out_suspend; } /* map the ib pool buffer read only into @@ -674,15 +674,16 @@ int radeon_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv) if (r) { radeon_vm_fini(rdev, vm); kfree(fpriv); - return r; + goto out_suspend; } } file_priv->driver_priv = fpriv; } +out_suspend: pm_runtime_mark_last_busy(dev->dev); pm_runtime_put_autosuspend(dev->dev); - return 0; + return r; } /** |
