diff options
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_crtc.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c index fce245f64c4f..2efa4b031d73 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c +++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c | |||
@@ -236,16 +236,21 @@ static int exynos_drm_crtc_page_flip(struct drm_crtc *crtc, | |||
236 | goto out; | 236 | goto out; |
237 | } | 237 | } |
238 | 238 | ||
239 | spin_lock_irq(&dev->event_lock); | ||
239 | list_add_tail(&event->base.link, | 240 | list_add_tail(&event->base.link, |
240 | &dev_priv->pageflip_event_list); | 241 | &dev_priv->pageflip_event_list); |
242 | spin_unlock_irq(&dev->event_lock); | ||
241 | 243 | ||
242 | crtc->fb = fb; | 244 | crtc->fb = fb; |
243 | ret = exynos_drm_crtc_mode_set_base(crtc, crtc->x, crtc->y, | 245 | ret = exynos_drm_crtc_mode_set_base(crtc, crtc->x, crtc->y, |
244 | NULL); | 246 | NULL); |
245 | if (ret) { | 247 | if (ret) { |
246 | crtc->fb = old_fb; | 248 | crtc->fb = old_fb; |
249 | |||
250 | spin_lock_irq(&dev->event_lock); | ||
247 | drm_vblank_put(dev, exynos_crtc->pipe); | 251 | drm_vblank_put(dev, exynos_crtc->pipe); |
248 | list_del(&event->base.link); | 252 | list_del(&event->base.link); |
253 | spin_unlock_irq(&dev->event_lock); | ||
249 | 254 | ||
250 | goto out; | 255 | goto out; |
251 | } | 256 | } |