diff options
author | Imre Deak <imre.deak@intel.com> | 2012-11-02 07:30:47 -0400 |
---|---|---|
committer | Inki Dae <daeinki@gmail.com> | 2012-11-29 06:30:33 -0500 |
commit | 85473328bac6170aabb5e13d2542d11d1fc4cc76 (patch) | |
tree | 55e1929abe76b57616019638b31cab4f6d15f622 | |
parent | fdd66e06ce71cdcdb515ef355d4f2fc90e151503 (diff) |
drm/exynos: hold event_lock while accessing pageflip_event_list
Signed-off-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
-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 | } |