From f680f867cee25f6aad522d7e3960c0046c3bba61 Mon Sep 17 00:00:00 2001 From: mdkinney Date: Thu, 21 May 2009 22:26:19 +0000 Subject: [PATCH] Terminate the Capability List traversal if the Capability Pointer is less than 0x40, or the Capability Pointer is not aligned on a 32-bit boundary. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8376 6f19259b-4bc3-4df7-8a09-765794883524 --- IntelFrameworkModulePkg/Bus/Pci/PciBusDxe/PciCommand.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/IntelFrameworkModulePkg/Bus/Pci/PciBusDxe/PciCommand.c b/IntelFrameworkModulePkg/Bus/Pci/PciBusDxe/PciCommand.c index af11143e92..31bdd8d234 100644 --- a/IntelFrameworkModulePkg/Bus/Pci/PciBusDxe/PciCommand.c +++ b/IntelFrameworkModulePkg/Bus/Pci/PciBusDxe/PciCommand.c @@ -153,11 +153,7 @@ LocateCapabilityRegBlock ( } } - while (CapabilityPtr > 0x3F) { - // - // Mask it to DWORD alignment per PCI spec - // - CapabilityPtr &= 0xFC; + while ((CapabilityPtr >= 0x40) && ((CapabilityPtr & 0x03) == 0x00)) { PciIoRead ( &PciIoDevice->PciIo, EfiPciIoWidthUint16, -- 2.39.2