diff mbox series

[v2] drm/msm/dsi: do not use uninitialized kms

Message ID 20210705233639.335951-1-david@ixit.cz
State Superseded
Headers show
Series [v2] drm/msm/dsi: do not use uninitialized kms | expand

Commit Message

David Heidelberg July 5, 2021, 11:36 p.m. UTC
Without this patch boot ends at NULL ptr exception at msm_dsi_manager_setup_encoder
on devices like Nexus 7 with MDP4 version 4.4.

Fixes: 03436e3ec69c ("drm/msm/dsi: Move setup_encoder to modeset_init")

Signed-off-by: David Heidelberg <david@ixit.cz>
---

v2: typo in Fixes commit reference

 drivers/gpu/drm/msm/dsi/dsi_manager.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Dmitry Baryshkov July 6, 2021, 11:17 p.m. UTC | #1
On 06/07/2021 02:36, David Heidelberg wrote:
> Without this patch boot ends at NULL ptr exception at msm_dsi_manager_setup_encoder

> on devices like Nexus 7 with MDP4 version 4.4.

> 

> Fixes: 03436e3ec69c ("drm/msm/dsi: Move setup_encoder to modeset_init")

> 

> Signed-off-by: David Heidelberg <david@ixit.cz>


Being not an expert in the mdp4 sources, I suspect that the fix is not 
quite correct. I'd suggest setting priv->kms in the mdp4_kms_init() 
before calling modeset_init().

> ---

> 

> v2: typo in Fixes commit reference

> 

>   drivers/gpu/drm/msm/dsi/dsi_manager.c | 2 +-

>   1 file changed, 1 insertion(+), 1 deletion(-)

> 

> diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c b/drivers/gpu/drm/msm/dsi/dsi_manager.c

> index 4ebfedc4a9ac..8114612b34b0 100644

> --- a/drivers/gpu/drm/msm/dsi/dsi_manager.c

> +++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c

> @@ -230,7 +230,7 @@ void msm_dsi_manager_setup_encoder(int id)

>   	struct msm_kms *kms = priv->kms;

>   	struct drm_encoder *encoder = msm_dsi_get_encoder(msm_dsi);

>   

> -	if (encoder && kms->funcs->set_encoder_mode)

> +	if (encoder && kms && kms->funcs->set_encoder_mode)

>   		kms->funcs->set_encoder_mode(kms, encoder,

>   					     dsi_mgr_is_cmd_mode(msm_dsi));

>   }

> 



-- 
With best wishes
Dmitry
David Heidelberg July 7, 2021, 1:04 p.m. UTC | #2
Thank you,

tried your proposed solution, works for me (also seems better).

Sending another patch.
Best regards
David Heidelberg

On Wed, Jul 7 2021 at 02:17:14 +0300, Dmitry Baryshkov 
<dmitry.baryshkov@linaro.org> wrote:
> On 06/07/2021 02:36, David Heidelberg wrote:

>> Without this patch boot ends at NULL ptr exception at 

>> msm_dsi_manager_setup_encoder

>> on devices like Nexus 7 with MDP4 version 4.4.

>> 

>> Fixes: 03436e3ec69c ("drm/msm/dsi: Move setup_encoder to 

>> modeset_init")

>> 

>> Signed-off-by: David Heidelberg <david@ixit.cz>

> 

> Being not an expert in the mdp4 sources, I suspect that the fix is 

> not quite correct. I'd suggest setting priv->kms in the 

> mdp4_kms_init() before calling modeset_init().

> 

>> ---

>> 

>> v2: typo in Fixes commit reference

>> 

>>   drivers/gpu/drm/msm/dsi/dsi_manager.c | 2 +-

>>   1 file changed, 1 insertion(+), 1 deletion(-)

>> 

>> diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c 

>> b/drivers/gpu/drm/msm/dsi/dsi_manager.c

>> index 4ebfedc4a9ac..8114612b34b0 100644

>> --- a/drivers/gpu/drm/msm/dsi/dsi_manager.c

>> +++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c

>> @@ -230,7 +230,7 @@ void msm_dsi_manager_setup_encoder(int id)

>>   	struct msm_kms *kms = priv->kms;

>>   	struct drm_encoder *encoder = msm_dsi_get_encoder(msm_dsi);

>>   -	if (encoder && kms->funcs->set_encoder_mode)

>> +	if (encoder && kms && kms->funcs->set_encoder_mode)

>>   		kms->funcs->set_encoder_mode(kms, encoder,

>>   					     dsi_mgr_is_cmd_mode(msm_dsi));

>>   }

>> 

> 

> 

> --

> With best wishes

> Dmitry
diff mbox series

Patch

diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c b/drivers/gpu/drm/msm/dsi/dsi_manager.c
index 4ebfedc4a9ac..8114612b34b0 100644
--- a/drivers/gpu/drm/msm/dsi/dsi_manager.c
+++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c
@@ -230,7 +230,7 @@  void msm_dsi_manager_setup_encoder(int id)
 	struct msm_kms *kms = priv->kms;
 	struct drm_encoder *encoder = msm_dsi_get_encoder(msm_dsi);
 
-	if (encoder && kms->funcs->set_encoder_mode)
+	if (encoder && kms && kms->funcs->set_encoder_mode)
 		kms->funcs->set_encoder_mode(kms, encoder,
 					     dsi_mgr_is_cmd_mode(msm_dsi));
 }