diff mbox series

[1/2] drm/i915/bios: Tolerate devdata==NULL in intel_bios_encoder_supports_dp_dual_mode()

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

Commit Message

Ville Syrjälä March 19, 2024, 9:24 a.m. UTC
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(+)

Comments

Jani Nikula March 19, 2024, 9:29 a.m. UTC | #1
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;
Ville Syrjälä March 19, 2024, 6:11 p.m. UTC | #2
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
Jani Nikula March 25, 2024, 10:32 a.m. UTC | #3
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 mbox series

Patch

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;