Commit 1533b405 authored by Ville Syrjälä's avatar Ville Syrjälä
Browse files

drm/i915/bios: Add some size checks to SPI VBT read



Unify the SPI vs. PCI ROM VBT read codepaths a bit by
pulling some size overflow checks from the PCI side
into the SPI side.

v2: s/drm_dbg()/drm_dbg_kms()/

Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240923152453.11230-3-ville.syrjala@linux.intel.com
parent 80143072
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -3088,11 +3088,22 @@ static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
	if (count >= oprom_size)
		goto err_not_found;

	if (sizeof(struct vbt_header) > oprom_size - count) {
		drm_dbg_kms(display->drm, "VBT header incomplete\n");
		goto err_not_found;
	}

	/* Get VBT size and allocate space for the VBT */
	vbt_size = intel_spi_read(&i915->uncore,
				  found + offsetof(struct vbt_header, vbt_size));
	vbt_size &= 0xffff;

	if (vbt_size > oprom_size - count) {
		drm_dbg_kms(display->drm,
			    "VBT incomplete (vbt_size overflows)\n");
		goto err_not_found;
	}

	vbt = kzalloc(round_up(vbt_size, 4), GFP_KERNEL);
	if (!vbt)
		goto err_not_found;