From 3ea44aa78c8170ca8010a89d24717d6f6ccfe564 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Thu, 12 Feb 2026 11:35:05 +0100 Subject: [PATCH] EFI: Fix relocating ESRT for dom0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix calculating the table size - it consists of a header + entries, not just entries. This bug caused the last entry to have garbage in its final fields, including LowestSupportedFwVersion and CapsuleFlags, which (usually) made fwupd able to detect firmware update availability, but refuse actually installing it. Fixes: dc7da0874ba4 ("EFI: preserve the System Resource Table for dom0") Signed-off-by: Marek Marczykowski-Górecki Acked-by: Daniel P. Smith --- xen/common/efi/boot.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c index 8adba7bd4d..967094994d 100644 --- a/xen/common/efi/boot.c +++ b/xen/common/efi/boot.c @@ -675,7 +675,8 @@ static size_t __init get_esrt_size(const EFI_MEMORY_DESCRIPTOR *desc) if ( esrt_ptr->FwResourceCount > available_len / sizeof(esrt_ptr->Entries[0]) ) return 0; - return esrt_ptr->FwResourceCount * sizeof(esrt_ptr->Entries[0]); + return offsetof(EFI_SYSTEM_RESOURCE_TABLE, + Entries[esrt_ptr->FwResourceCount]); } static EFI_GUID __initdata esrt_guid = EFI_SYSTEM_RESOURCE_TABLE_GUID;