[Freedreno] [PATCH 1/3] drm/msm: dsi: Initialize msm_dsi->id to -1
abhinavk at codeaurora.org
abhinavk at codeaurora.org
Mon Jul 30 22:29:41 UTC 2018
On 2018-07-30 08:26, Sean Paul wrote:
> Currently msm_dsi->id is initialized to 0 during kzalloc. If bind fails
> for a secondary dsi device before its id can be properly set (such as
> during dt parsing), the id will point to the primary dsi device,
> causing
> its reference to be removed from dsi_manager's global (msm_dsim_glb)
> array.
>
> This patch initializes the id to -1 and checks for negative in the
> manager cleanup.
>
> Cc: Doug Anderson <dianders at chromium.org>
> Signed-off-by: Sean Paul <seanpaul at chromium.org>
Reviewed-by: Abhinav Kumar <abhinavk at codeaurora.org>
> ---
> drivers/gpu/drm/msm/dsi/dsi.c | 1 +
> drivers/gpu/drm/msm/dsi/dsi_manager.c | 4 +++-
> 2 files changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/msm/dsi/dsi.c
> b/drivers/gpu/drm/msm/dsi/dsi.c
> index ff8164cc6738..ee07d58c2d97 100644
> --- a/drivers/gpu/drm/msm/dsi/dsi.c
> +++ b/drivers/gpu/drm/msm/dsi/dsi.c
> @@ -83,6 +83,7 @@ static struct msm_dsi *dsi_init(struct
> platform_device *pdev)
> return ERR_PTR(-ENOMEM);
> DBG("dsi probed=%p", msm_dsi);
>
> + msm_dsi->id = -1;
> msm_dsi->pdev = pdev;
> platform_set_drvdata(pdev, msm_dsi);
>
> diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c
> b/drivers/gpu/drm/msm/dsi/dsi_manager.c
> index 5224010d90e4..80aa6344185e 100644
> --- a/drivers/gpu/drm/msm/dsi/dsi_manager.c
> +++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c
> @@ -839,6 +839,8 @@ void msm_dsi_manager_unregister(struct msm_dsi
> *msm_dsi)
>
> if (msm_dsi->host)
> msm_dsi_host_unregister(msm_dsi->host);
> - msm_dsim->dsi[msm_dsi->id] = NULL;
> +
> + if (msm_dsi->id >= 0)
> + msm_dsim->dsi[msm_dsi->id] = NULL;
> }
More information about the Freedreno
mailing list