From 792779946ea16cbe54052e1b08ca56c58b3cbe24 Mon Sep 17 00:00:00 2001 From: Rahul Sharma Date: Thu, 24 Aug 2017 18:09:10 +0530 Subject: [PATCH] drm/msm: remove the right vlbank event from the event list This changes fixes an issue with vblank event list corruption. we should only remove the event corresponding to a crtc from list for which the thread was queued. Change-Id: I9b9cef9073ba4cc377a85e21a7257d36e9b92388 Signed-off-by: Rahul Sharma --- drivers/gpu/drm/msm/msm_drv.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 83b34a071ced..27aca55d0e8e 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -185,9 +185,14 @@ static void vblank_ctrl_worker(struct kthread_work *work) struct msm_kms *kms = priv->kms; struct vblank_event *vbl_ev, *tmp; unsigned long flags; + struct kthread_worker *worker = work->worker; + struct msm_drm_commit *commit = container_of(worker, + struct msm_drm_commit, worker); spin_lock_irqsave(&vbl_ctrl->lock, flags); list_for_each_entry_safe(vbl_ev, tmp, &vbl_ctrl->event_list, node) { + if (vbl_ev->crtc_id != commit->crtc_id) + continue; list_del(&vbl_ev->node); spin_unlock_irqrestore(&vbl_ctrl->lock, flags);