@@ -211,10 +211,12 @@ void armada_drm_vbl_event_add(struct armada_crtc *dcrtc,
void armada_drm_vbl_event_remove(struct armada_crtc *dcrtc,
struct armada_vbl_event *evt)
{
+ spin_lock_irq(&dcrtc->irq_lock);
if (!list_empty(&evt->node)) {
list_del_init(&evt->node);
drm_vblank_put(dcrtc->crtc.dev, dcrtc->num);
}
+ spin_unlock_irq(&dcrtc->irq_lock);
}
static void armada_drm_vbl_event_run(struct armada_crtc *dcrtc)
@@ -273,9 +273,7 @@ static int armada_ovl_plane_disable(struct drm_plane *plane)
dcrtc = drm_to_armada_crtc(dplane->base.base.crtc);
dcrtc->plane = NULL;
- spin_lock_irq(&dcrtc->irq_lock);
armada_drm_vbl_event_remove(dcrtc, &dplane->vbl.update);
- spin_unlock_irq(&dcrtc->irq_lock);
dplane->ctrl0 = 0;
Move the locking for armada_drm_vbl_event_remove() into itself, which makes this function symmetrical with armada_drm_vbl_event_add(). Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> --- drivers/gpu/drm/armada/armada_crtc.c | 2 ++ drivers/gpu/drm/armada/armada_overlay.c | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-)