[Intel-gfx] [PATCH] drm/i915: Flush power delayed put when connector init failed

Imre Deak imre.deak at intel.com
Thu Dec 22 20:35:38 UTC 2022


On Thu, Dec 22, 2022 at 09:18:04PM +0100, Maarten Lankhorst wrote:
> When intel_dp_init_connector fails, some power wells used in dp aux
> communication may not be completely disabled yet. This may result in a
> null pointer dereference when icl_aux_pw_to_phy() is called from
> icl_combo_phy_aux_power_well_disable() after the encoder and connector
> are already freed.
> 
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> Cc: Imre Deak <imre.deak at intel.com>
> Cc: Jani Nikula <jani.nikula at intel.com>
> ---
> This approach better?

Looks ok to me, thanks for fixing it. I think Jani's idea is good to
refactor things wrt. the encoder hooks, but imo that could be done later
keeping the fix simpler, so:

Acked-by: Imre Deak <imre.deak at intel.com>

> 
>  drivers/gpu/drm/i915/display/intel_dp.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index bf80f296a8fd..8cf1d6ca86f4 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -5492,6 +5492,7 @@ intel_dp_init_connector(struct intel_digital_port *dig_port,
>  	return true;
>  
>  fail:
> +	intel_display_power_flush_work(dev_priv);
>  	drm_connector_cleanup(connector);
>  
>  	return false;
> -- 
> 2.37.2
> 


More information about the Intel-gfx mailing list