--- a/sys/dev/drm/i915/intel_bios.c +++ b/sys/dev/drm/i915/intel_bios.c @@ -1131,6 +1131,7 @@ parse_mipi_sequence(struct drm_i915_private *dev_priv, u8 *data; int index = 0; + u8 seq_id; @@ -1134,7 +1135,11 @@ parse_mipi_sequence(struct drm_i915_private *dev_priv, /* Parse the sequences, store pointers to each sequence. */ for (;;) { - u8 seq_id = *(data + index); + if (index >= seq_size) + goto err; + + seq_id = *(data + index); if (seq_id == MIPI_SEQ_END) break; # NOTE: authored against the read-only sys/ tree after verification; never applied there.