From: Jani Nikula Date: Wed, 22 Dec 2021 08:16:54 +0000 (+0200) Subject: drm/i915/bios: fix slab-out-of-bounds access X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=980f42e7d57464af190d05b9cc0bc21846734f48;p=linux.git drm/i915/bios: fix slab-out-of-bounds access If VBT size is not a multiple of 4, the last 4-byte store will be out of bounds of the allocated buffer. Spotted with KASAN. Round up the allocation size. v2: Use round_up() intead of roundup() as it's a power of 2 (Thomas) Reported-by: Thomas Hellström Fixes: a36e7dc0af1c ("drm/i915/dg1: Read OPROM via SPI controller") Cc: Clint Taylor Cc: Lucas De Marchi Reviewed-by: Thomas Hellström Signed-off-by: Jani Nikula Link: https://patchwork.freedesktop.org/patch/msgid/20211222081654.1843211-1-jani.nikula@intel.com --- diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c index 76a8f001f4c4d..c7a8d517ce811 100644 --- a/drivers/gpu/drm/i915/display/intel_bios.c +++ b/drivers/gpu/drm/i915/display/intel_bios.c @@ -2369,7 +2369,7 @@ static struct vbt_header *spi_oprom_get_vbt(struct drm_i915_private *i915) vbt_size = intel_uncore_read(&i915->uncore, PRIMARY_SPI_TRIGGER); vbt_size &= 0xffff; - vbt = kzalloc(vbt_size, GFP_KERNEL); + vbt = kzalloc(round_up(vbt_size, 4), GFP_KERNEL); if (!vbt) goto err_not_found;