drm/mediatek: Check return value of mtk_drm_ddp_comp_for_plane.
authorPi-Hsun Shih <pihsun@chromium.org>
Mon, 18 Nov 2019 06:18:05 +0000 (14:18 +0800)
committerCK Hu <ck.hu@mediatek.com>
Fri, 20 Dec 2019 08:19:10 +0000 (16:19 +0800)
The mtk_drm_ddp_comp_for_plane can return NULL, but the usage doesn't
check for it. Add check for it.

Fixes: d6b53f68356f ("drm/mediatek: Add helper to get component for a plane")
Signed-off-by: Pi-Hsun Shih <pihsun@chromium.org>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
drivers/gpu/drm/mediatek/mtk_drm_crtc.c

index f80a8ba..4c4f976 100644 (file)
@@ -310,7 +310,9 @@ static int mtk_crtc_ddp_hw_init(struct mtk_drm_crtc *mtk_crtc)
 
                plane_state = to_mtk_plane_state(plane->state);
                comp = mtk_drm_ddp_comp_for_plane(crtc, plane, &local_layer);
-               mtk_ddp_comp_layer_config(comp, local_layer, plane_state);
+               if (comp)
+                       mtk_ddp_comp_layer_config(comp, local_layer,
+                                                 plane_state);
        }
 
        return 0;
@@ -386,8 +388,9 @@ static void mtk_crtc_ddp_config(struct drm_crtc *crtc)
                        comp = mtk_drm_ddp_comp_for_plane(crtc, plane,
                                                          &local_layer);
 
-                       mtk_ddp_comp_layer_config(comp, local_layer,
-                                                 plane_state);
+                       if (comp)
+                               mtk_ddp_comp_layer_config(comp, local_layer,
+                                                         plane_state);
                        plane_state->pending.config = false;
                }
                mtk_crtc->pending_planes = false;
@@ -401,7 +404,9 @@ int mtk_drm_crtc_plane_check(struct drm_crtc *crtc, struct drm_plane *plane,
        struct mtk_ddp_comp *comp;
 
        comp = mtk_drm_ddp_comp_for_plane(crtc, plane, &local_layer);
-       return mtk_ddp_comp_layer_check(comp, local_layer, state);
+       if (comp)
+               return mtk_ddp_comp_layer_check(comp, local_layer, state);
+       return 0;
 }
 
 static void mtk_drm_crtc_atomic_enable(struct drm_crtc *crtc,