struct drm_connector *connector;
        struct amdgpu_device *adev = dev->dev_private;
        struct drm_crtc *crtc;
-       int r;
+       int r = 0;
 
        if (dev->switch_power_state == DRM_SWITCH_POWER_OFF)
                return 0;
                pci_set_power_state(dev->pdev, PCI_D0);
                pci_restore_state(dev->pdev);
                r = pci_enable_device(dev->pdev);
-               if (r) {
-                       if (fbcon)
-                               console_unlock();
-                       return r;
-               }
+               if (r)
+                       goto unlock;
        }
        if (adev->is_atom_fw)
                amdgpu_atomfirmware_scratch_regs_restore(adev);
        r = amdgpu_resume(adev);
        if (r) {
                DRM_ERROR("amdgpu_resume failed (%d).\n", r);
-               return r;
+               goto unlock;
        }
        amdgpu_fence_driver_resume(adev);
 
        }
 
        r = amdgpu_late_init(adev);
-       if (r) {
-               if (fbcon)
-                       console_unlock();
-               return r;
-       }
+       if (r)
+               goto unlock;
 
        /* pin cursors */
        list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
        dev->dev->power.disable_depth--;
 #endif
 
-       if (fbcon) {
+       if (fbcon)
                amdgpu_fbdev_set_suspend(adev, 0);
+
+unlock:
+       if (fbcon)
                console_unlock();
-       }
 
-       return 0;
+       return r;
 }
 
 static bool amdgpu_check_soft_reset(struct amdgpu_device *adev)