drm/msm/dsi: check msm_dsi and dsi pointers before use
authorLloyd Atkinson <latkinso@codeaurora.org>
Tue, 16 Jan 2018 21:26:03 +0000 (16:26 -0500)
committerRob Clark <robdclark@gmail.com>
Tue, 20 Feb 2018 15:41:20 +0000 (10:41 -0500)
Move null checks of pointer arguments to the beginning of the
modeset init function since they are referenced immediately
instead of after they have already been used.

Signed-off-by: Lloyd Atkinson <latkinso@codeaurora.org>
Signed-off-by: Rob Clark <robdclark@gmail.com>
drivers/gpu/drm/msm/dsi/dsi.c

index 98742d7..ee7e090 100644 (file)
@@ -196,7 +196,7 @@ int msm_dsi_modeset_init(struct msm_dsi *msm_dsi, struct drm_device *dev,
        struct drm_bridge *ext_bridge;
        int ret;
 
-       if (WARN_ON(!encoder))
+       if (WARN_ON(!encoder) || WARN_ON(!msm_dsi) || WARN_ON(!dev))
                return -EINVAL;
 
        msm_dsi->dev = dev;
@@ -245,19 +245,17 @@ int msm_dsi_modeset_init(struct msm_dsi *msm_dsi, struct drm_device *dev,
 
        return 0;
 fail:
-       if (msm_dsi) {
-               /* bridge/connector are normally destroyed by drm: */
-               if (msm_dsi->bridge) {
-                       msm_dsi_manager_bridge_destroy(msm_dsi->bridge);
-                       msm_dsi->bridge = NULL;
-               }
+       /* bridge/connector are normally destroyed by drm: */
+       if (msm_dsi->bridge) {
+               msm_dsi_manager_bridge_destroy(msm_dsi->bridge);
+               msm_dsi->bridge = NULL;
+       }
 
-               /* don't destroy connector if we didn't make it */
-               if (msm_dsi->connector && !msm_dsi->external_bridge)
-                       msm_dsi->connector->funcs->destroy(msm_dsi->connector);
+       /* don't destroy connector if we didn't make it */
+       if (msm_dsi->connector && !msm_dsi->external_bridge)
+               msm_dsi->connector->funcs->destroy(msm_dsi->connector);
 
-               msm_dsi->connector = NULL;
-       }
+       msm_dsi->connector = NULL;
 
        return ret;
 }