Răsfoiți Sursa

drm/tidss: fix crash when display does not provide bus_formats

The driver crashes if the bridge/panel does not provide bus_formats.
Fix by failing the encoder's atomic check in this case.

Signed-off-by: Jyri Sarha <jsarha@ti.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Jyri Sarha 7 ani în urmă
părinte
comite
06f7af7fc0
1 a modificat fișierele cu 6 adăugiri și 0 ștergeri
  1. 6 0
      drivers/gpu/drm/tidss/tidss_encoder.c

+ 6 - 0
drivers/gpu/drm/tidss/tidss_encoder.c

@@ -30,6 +30,12 @@ static int tidss_encoder_atomic_check(struct drm_encoder *encoder,
 
 	dev_dbg(ddev->dev, "%s\n", __func__);
 
+	if (!di->bus_formats || di->num_bus_formats == 0)  {
+		dev_err(ddev->dev, "%s: No bus_formats in connected display\n",
+			__func__);
+		return -EINVAL;
+	}
+
 	// XXX any cleaner way to set bus format and flags?
 	tcrtc_state->bus_format = di->bus_formats[0];
 	tcrtc_state->bus_flags = di->bus_flags;