Message ID | 20240319092443.15769-1-ville.syrjala@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/2] drm/i915/bios: Tolerate devdata==NULL in intel_bios_encoder_supports_dp_dual_mode() | expand |
On Tue, 19 Mar 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > If we have no VBT, or the VBT didn't declare the encoder > in question, we won't have the 'devdata' for the encoder. > Instead of oopsing just bail early. > > We won't be able to tell whether the port is DP++ or not, > but so be it. > > Cc: stable@vger.kernel.org > Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/10464 > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/display/intel_bios.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c > index c7841b3eede8..c13a98431a7b 100644 > --- a/drivers/gpu/drm/i915/display/intel_bios.c > +++ b/drivers/gpu/drm/i915/display/intel_bios.c > @@ -3458,6 +3458,9 @@ bool intel_bios_encoder_supports_dp_dual_mode(const struct intel_bios_encoder_da > { > const struct child_device_config *child = &devdata->child; The above oopses already. BR, Jani. > > + if (!devdata) > + return false; > + > if (!intel_bios_encoder_supports_dp(devdata) || > !intel_bios_encoder_supports_hdmi(devdata)) > return false;
On Tue, Mar 19, 2024 at 11:29:14AM +0200, Jani Nikula wrote: > On Tue, 19 Mar 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote: > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > If we have no VBT, or the VBT didn't declare the encoder > > in question, we won't have the 'devdata' for the encoder. > > Instead of oopsing just bail early. > > > > We won't be able to tell whether the port is DP++ or not, > > but so be it. > > > > Cc: stable@vger.kernel.org > > Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/10464 > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > --- > > drivers/gpu/drm/i915/display/intel_bios.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c > > index c7841b3eede8..c13a98431a7b 100644 > > --- a/drivers/gpu/drm/i915/display/intel_bios.c > > +++ b/drivers/gpu/drm/i915/display/intel_bios.c > > @@ -3458,6 +3458,9 @@ bool intel_bios_encoder_supports_dp_dual_mode(const struct intel_bios_encoder_da > > { > > const struct child_device_config *child = &devdata->child; > > The above oopses already. Nope. It's just taking the address of the thing. > > BR, > Jani. > > > > > + if (!devdata) > > + return false; > > + > > if (!intel_bios_encoder_supports_dp(devdata) || > > !intel_bios_encoder_supports_hdmi(devdata)) > > return false; > > -- > Jani Nikula, Intel
On Tue, 19 Mar 2024, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote: > On Tue, Mar 19, 2024 at 11:29:14AM +0200, Jani Nikula wrote: >> On Tue, 19 Mar 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote: >> > From: Ville Syrjälä <ville.syrjala@linux.intel.com> >> > >> > If we have no VBT, or the VBT didn't declare the encoder >> > in question, we won't have the 'devdata' for the encoder. >> > Instead of oopsing just bail early. >> > >> > We won't be able to tell whether the port is DP++ or not, >> > but so be it. >> > >> > Cc: stable@vger.kernel.org >> > Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/10464 >> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> >> > --- >> > drivers/gpu/drm/i915/display/intel_bios.c | 3 +++ >> > 1 file changed, 3 insertions(+) >> > >> > diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c >> > index c7841b3eede8..c13a98431a7b 100644 >> > --- a/drivers/gpu/drm/i915/display/intel_bios.c >> > +++ b/drivers/gpu/drm/i915/display/intel_bios.c >> > @@ -3458,6 +3458,9 @@ bool intel_bios_encoder_supports_dp_dual_mode(const struct intel_bios_encoder_da >> > { >> > const struct child_device_config *child = &devdata->child; >> >> The above oopses already. > > Nope. It's just taking the address of the thing. I guess. Still looks a bit suspicious. :/ Reviewed-by: Jani Nikula <jani.nikula@intel.com> > >> >> BR, >> Jani. >> >> > >> > + if (!devdata) >> > + return false; >> > + >> > if (!intel_bios_encoder_supports_dp(devdata) || >> > !intel_bios_encoder_supports_hdmi(devdata)) >> > return false; >> >> -- >> Jani Nikula, Intel
diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c index c7841b3eede8..c13a98431a7b 100644 --- a/drivers/gpu/drm/i915/display/intel_bios.c +++ b/drivers/gpu/drm/i915/display/intel_bios.c @@ -3458,6 +3458,9 @@ bool intel_bios_encoder_supports_dp_dual_mode(const struct intel_bios_encoder_da { const struct child_device_config *child = &devdata->child; + if (!devdata) + return false; + if (!intel_bios_encoder_supports_dp(devdata) || !intel_bios_encoder_supports_hdmi(devdata)) return false;