summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDhaval Patel <pdhaval@quicinc.com>2017-01-04 11:12:13 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-01-04 11:12:13 -0800
commit8a3ab628fa5811890e6de321d8a38f21466ef368 (patch)
treefb26c992f34de121c896a35dfc1830d994b11643
parentbd1d1a54ce3329e482282f1d7cdb2929c1376f02 (diff)
parentd70e43c558bd0c0e03e890b8a3479322187494be (diff)
Merge "drm/msm/sde: fix check for frame event overflow" into dev/msm-4.4-drm_kms
-rw-r--r--drivers/gpu/drm/msm/sde/sde_crtc.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/gpu/drm/msm/sde/sde_crtc.c b/drivers/gpu/drm/msm/sde/sde_crtc.c
index 083749885473..b6a533b112c9 100644
--- a/drivers/gpu/drm/msm/sde/sde_crtc.c
+++ b/drivers/gpu/drm/msm/sde/sde_crtc.c
@@ -467,7 +467,6 @@ static void sde_crtc_frame_event_cb(void *data, u32 event)
struct drm_crtc *crtc = (struct drm_crtc *)data;
struct sde_crtc *sde_crtc;
struct msm_drm_private *priv;
- struct list_head *list, *next;
struct sde_crtc_frame_event *fevent;
unsigned long flags;
int pipe_id;
@@ -485,20 +484,19 @@ static void sde_crtc_frame_event_cb(void *data, u32 event)
SDE_EVT32(DRMID(crtc), event);
spin_lock_irqsave(&sde_crtc->spin_lock, flags);
- list_for_each_safe(list, next, &sde_crtc->frame_event_list) {
- list_del_init(list);
- break;
- }
+ fevent = list_first_entry_or_null(&sde_crtc->frame_event_list,
+ struct sde_crtc_frame_event, list);
+ if (fevent)
+ list_del_init(&fevent->list);
spin_unlock_irqrestore(&sde_crtc->spin_lock, flags);
- if (!list) {
+ if (!fevent) {
SDE_ERROR("crtc%d event %d overflow\n",
crtc->base.id, event);
SDE_EVT32(DRMID(crtc), event);
return;
}
- fevent = container_of(list, struct sde_crtc_frame_event, list);
fevent->event = event;
fevent->crtc = crtc;
fevent->ts = ktime_get();