exynos/drm: ipp: fix to get null when the list is empty
authorHyungwon Hwang <human.hwang@samsung.com>
Fri, 22 Aug 2014 05:35:03 +0000 (14:35 +0900)
committerChanho Park <chanho61.park@samsung.com>
Tue, 18 Nov 2014 03:00:40 +0000 (12:00 +0900)
list_first_entry does not return null, when the list is empty.

Change-Id: I014e2ef5ba035db3b6fc97e6821bc9869143f867
Signed-off-by: Hyungwon Hwang <human.hwang@samsung.com>
drivers/gpu/drm/exynos/exynos_drm_ipp.c

index fb2f1bd..53f505b 100644 (file)
@@ -1302,7 +1302,7 @@ static int ipp_start_property(struct exynos_drm_ippdrv *ippdrv,
                        /* source/destination memory list */
                        head = &c_node->mem_list[i];
 
-                       m_node = list_first_entry(head,
+                       m_node = list_first_entry_or_null(head,
                                struct drm_exynos_ipp_mem_node, list);
                        if (!m_node) {
                                DRM_ERROR("failed to get node.\n");
@@ -1566,7 +1566,7 @@ static int ipp_send_event(struct exynos_drm_ippdrv *ippdrv,
                        /* source/destination memory list */
                        head = &c_node->mem_list[i];
 
-                       m_node = list_first_entry(head,
+                       m_node = list_first_entry_or_null(head,
                                struct drm_exynos_ipp_mem_node, list);
                        if (!m_node) {
                                DRM_ERROR("empty memory node.\n");
@@ -1605,7 +1605,7 @@ static int ipp_send_event(struct exynos_drm_ippdrv *ippdrv,
                /* source memory list */
                head = &c_node->mem_list[EXYNOS_DRM_OPS_SRC];
 
-               m_node = list_first_entry(head,
+               m_node = list_first_entry_or_null(head,
                        struct drm_exynos_ipp_mem_node, list);
                if (!m_node) {
                        DRM_ERROR("empty memory node.\n");
@@ -1633,7 +1633,7 @@ static int ipp_send_event(struct exynos_drm_ippdrv *ippdrv,
         * then we make event and link to event list tail.
         * so, we get first event for first enqueued buffer.
         */
-       e = list_first_entry(&c_node->event_list,
+       e = list_first_entry_or_null(&c_node->event_list,
                struct drm_exynos_ipp_send_event, base.link);
 
        if (!e) {