From 92dc0bb23c4b8e847484cfded8dcc5146b5f5d3e Mon Sep 17 00:00:00 2001 From: Laszlo Ersek Date: Thu, 6 Aug 2015 10:14:03 +0000 Subject: OvmfPkg: SmbiosPlatformDxe: eliminate duplicate entry point validation At this point all platforms that use OvmfPkg/SmbiosPlatformDxe in edk2, namely ArmVirtQemu.dsc and OvmfPkg*.dsc, have been migrated to SmbiosVersionLib. Therefore SmbiosPlatformDxe itself can forego verifying QEMU's SMBIOS entry point; if SmbiosVersionLib's validation was successful, it should just rely on that. (Note that SmbiosPlatformDxe has a depex on EFI_SMBIOS_PROTOCOL, installed by SmbiosDxe, containing SmbiosVersionLib, therefore the set/get order of PcdQemuSmbiosValidated is ensured.) Cc: Ard Biesheuvel Cc: Wei Huang Cc: Jordan Justen Cc: Gabriel L. Somlo Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek Reviewed-by: Jordan Justen git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18180 6f19259b-4bc3-4df7-8a09-765794883524 --- OvmfPkg/SmbiosPlatformDxe/Qemu.c | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) (limited to 'OvmfPkg/SmbiosPlatformDxe/Qemu.c') diff --git a/OvmfPkg/SmbiosPlatformDxe/Qemu.c b/OvmfPkg/SmbiosPlatformDxe/Qemu.c index f7ace4f1de..9466b950fc 100644 --- a/OvmfPkg/SmbiosPlatformDxe/Qemu.c +++ b/OvmfPkg/SmbiosPlatformDxe/Qemu.c @@ -15,6 +15,7 @@ #include "SmbiosPlatformDxe.h" #include #include +#include /** Locates and extracts the QEMU SMBIOS data if present in fw_cfg @@ -27,32 +28,19 @@ GetQemuSmbiosTables ( VOID ) { - SMBIOS_TABLE_ENTRY_POINT QemuAnchor; - FIRMWARE_CONFIG_ITEM Anchor, Tables; - UINTN AnchorSize, TablesSize; + EFI_STATUS Status; + FIRMWARE_CONFIG_ITEM Tables; + UINTN TablesSize; UINT8 *QemuTables; - if (EFI_ERROR (QemuFwCfgFindFile ( - "etc/smbios/smbios-anchor", &Anchor, &AnchorSize)) || - EFI_ERROR (QemuFwCfgFindFile ( - "etc/smbios/smbios-tables", &Tables, &TablesSize)) || - AnchorSize != sizeof (QemuAnchor) || - TablesSize == 0) { + if (!PcdGetBool (PcdQemuSmbiosValidated)) { return NULL; } - // - // We copy the entry point structure to perform some additional checks, - // but discard it upon return. - // - QemuFwCfgSelectItem (Anchor); - QemuFwCfgReadBytes (AnchorSize, &QemuAnchor); - - if (AsciiStrnCmp ((CHAR8 *)QemuAnchor.AnchorString, "_SM_", 4) || - AsciiStrnCmp ((CHAR8 *)QemuAnchor.IntermediateAnchorString, "_DMI_", 5) || - TablesSize != QemuAnchor.TableLength) { - return NULL; - } + Status = QemuFwCfgFindFile ("etc/smbios/smbios-tables", &Tables, + &TablesSize); + ASSERT_EFI_ERROR (Status); + ASSERT (TablesSize > 0); QemuTables = AllocatePool (TablesSize); if (QemuTables == NULL) { -- cgit v1.2.3