drm/i915: Flush power delayed put when connector init failed
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Thu, 22 Dec 2022 20:18:04 +0000 (21:18 +0100)
committerJani Nikula <jani.nikula@intel.com>
Fri, 2 Jun 2023 17:41:44 +0000 (20:41 +0300)
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@linux.intel.com>
Cc: Imre Deak <imre.deak@intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Acked-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221222201804.1380963-1-maarten.lankhorst@linux.intel.com
drivers/gpu/drm/i915/display/intel_dp.c

index 8445a37..f4192fd 100644 (file)
@@ -5719,6 +5719,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;