> -----Original Message----- > From: Intel-xe <intel-xe-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Jani > Nikula > Sent: Wednesday, December 4, 2024 8:37 PM > To: intel-gfx@xxxxxxxxxxxxxxxxxxxxx; intel-xe@xxxxxxxxxxxxxxxxxxxxx > Cc: Nikula, Jani <jani.nikula@xxxxxxxxx>; Sergey Senozhatsky > <senozhatsky@xxxxxxxxxxxx>; Ville Syrjala <ville.syrjala@xxxxxxxxxxxxxxx> > Subject: [PATCH v2 5/5] drm/i915/ddi: only call shutdown hooks for valid > encoders > > DDI might be HDMI or DP only, leaving the other encoder uninitialized. Calling > the shutdown hook on an uninitialized encoder may lead to a NULL pointer > dereference. Check the encoder types (and thus validity via the DP output_reg > or HDMI hdmi_reg checks) before calling the hooks. > > Reported-by: Sergey Senozhatsky <senozhatsky@xxxxxxxxxxxx> > Closes: https://lore.kernel.org/r/20241031105145.2140590-1- > senozhatsky@xxxxxxxxxxxx > Cc: Sergey Senozhatsky <senozhatsky@xxxxxxxxxxxx> > Cc: Ville Syrjala <ville.syrjala@xxxxxxxxxxxxxxx> > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> LGTM, Reviewed-by: Suraj Kandpal <suraj.kandpal@xxxxxxxxx> > > --- > > TODO: We should probably audit all DDI encoder hooks for this, and add the > necessary checks. > --- > drivers/gpu/drm/i915/display/intel_ddi.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c > b/drivers/gpu/drm/i915/display/intel_ddi.c > index 67bbfba58b54..f3e27c67c419 100644 > --- a/drivers/gpu/drm/i915/display/intel_ddi.c > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c > @@ -4920,8 +4920,10 @@ static void > intel_ddi_tc_encoder_suspend_complete(struct intel_encoder *encoder) > > static void intel_ddi_encoder_shutdown(struct intel_encoder *encoder) { > - intel_dp_encoder_shutdown(encoder); > - intel_hdmi_encoder_shutdown(encoder); > + if (intel_encoder_is_dp(encoder)) > + intel_dp_encoder_shutdown(encoder); > + if (intel_encoder_is_hdmi(encoder)) > + intel_hdmi_encoder_shutdown(encoder); > } > > static void intel_ddi_tc_encoder_shutdown_complete(struct intel_encoder > *encoder) > -- > 2.39.5