diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c
index 1701a6393029f..09e705d37084f 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c
@@ -1077,6 +1077,10 @@ static int amdgpu_atomic_helper_page_flip(struct drm_crtc *crtc,
 	if (!state)
 		return -ENOMEM;
 
+	ret = drm_crtc_vblank_get(crtc);
+	if (ret)
+		return ret;
+
 	state->acquire_ctx = drm_modeset_legacy_acquire_ctx(crtc);
 retry:
 	crtc_state = drm_atomic_get_crtc_state(state, crtc);
@@ -1116,6 +1120,9 @@ static int amdgpu_atomic_helper_page_flip(struct drm_crtc *crtc,
 	if (ret == -EDEADLK)
 		goto backoff;
 
+	if (ret)
+		drm_crtc_vblank_put(crtc);
+
 	drm_atomic_state_free(state);
 
 	return ret;