diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c index cbbef39c69cbe..51954deaf6441 100644 --- a/drivers/gpu/drm/i915/display/intel_bios.c +++ b/drivers/gpu/drm/i915/display/intel_bios.c @@ -3194,8 +3194,10 @@ void intel_bios_init(struct drm_i915_private *i915) oprom_vbt = firmware_get_vbt(i915, NULL); vbt = oprom_vbt; - if (!vbt) - vbt = intel_opregion_get_vbt(i915, NULL); + if (!vbt) { + oprom_vbt = intel_opregion_get_vbt(i915, NULL); + vbt = oprom_vbt; + } /* * If the OpRegion does not have VBT, look in SPI flash through MMIO or diff --git a/drivers/gpu/drm/i915/display/intel_opregion.c b/drivers/gpu/drm/i915/display/intel_opregion.c index 58dfecb617b07..68bd5101ec89c 100644 --- a/drivers/gpu/drm/i915/display/intel_opregion.c +++ b/drivers/gpu/drm/i915/display/intel_opregion.c @@ -1151,7 +1151,7 @@ const void *intel_opregion_get_vbt(struct drm_i915_private *i915, size_t *size) if (size) *size = opregion->vbt_size; - return opregion->vbt; + return kmemdup(opregion->vbt, opregion->vbt_size, GFP_KERNEL); } bool intel_opregion_headless_sku(struct drm_i915_private *i915)