On Fri, Feb 24, 2017 at 04:18:45PM +0200, Ander Conselvan de Oliveira wrote: > Don't allow conversion from arbitraty encoder types to a digital port. > Calling enc_to_dig_port() with the wrong encoder may seem far fetched, > but certain paths of the ddi code may be called with hasell's analog > encoder and the conversion is wrong for DP mst encoders too, so safe > guard against it. > > v2: Warn if encoder type is unknown and device is not DDI. (Imre) > v3: Remove stray hunk from rebase error. (Ander) > Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@xxxxxxxxx> Reviewed-by: Imre Deak <imre.deak@xxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_drv.h | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h > index c916338..97621a1 100644 > --- a/drivers/gpu/drm/i915/intel_drv.h > +++ b/drivers/gpu/drm/i915/intel_drv.h > @@ -1121,7 +1121,19 @@ intel_attached_encoder(struct drm_connector *connector) > static inline struct intel_digital_port * > enc_to_dig_port(struct drm_encoder *encoder) > { > - return container_of(encoder, struct intel_digital_port, base.base); > + struct intel_encoder *intel_encoder = to_intel_encoder(encoder); > + > + switch (intel_encoder->type) { > + case INTEL_OUTPUT_UNKNOWN: > + WARN_ON(!HAS_DDI(to_i915(encoder->dev))); > + case INTEL_OUTPUT_DP: > + case INTEL_OUTPUT_EDP: > + case INTEL_OUTPUT_HDMI: > + return container_of(encoder, struct intel_digital_port, > + base.base); > + default: > + return NULL; > + } > } > > static inline struct intel_dp_mst_encoder * > -- > 2.9.3 > _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx