Looks good to me

Reviewed-by: Feng Tian <[email protected]>

-----Original Message-----
From: Ni, Ruiyu 
Sent: Tuesday, September 15, 2015 15:34
To: [email protected]
Cc: Ni, Ruiyu; Tian, Feng
Subject: [Patch] MdeModulePkg: Enhance PCI capability looking up logic to avoid 
hang

Certain PCI device may have capability pointing to itself.
Update LocateCapabilityRegBlock() to break when detecting such loop.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <[email protected]>
Cc: Feng Tian <[email protected]>
---
 MdeModulePkg/Bus/Pci/PciBusDxe/PciCommand.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciCommand.c 
b/MdeModulePkg/Bus/Pci/PciBusDxe/PciCommand.c
index 8a8b4b8..0bc1fbf 100644
--- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciCommand.c
+++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciCommand.c
@@ -173,6 +173,14 @@ LocateCapabilityRegBlock (
       return EFI_SUCCESS;
     }
 
+    //
+    // Certain PCI device may incorrectly have capability pointing to itself,
+    // break to avoid dead loop.
+    //
+    if (CapabilityPtr == (UINT8) (CapabilityEntry >> 8)) {
+      break;
+    }
+
     CapabilityPtr = (UINT8) (CapabilityEntry >> 8);
   }
 
-- 
1.9.5.msysgit.1

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to