Revision: 18473
          http://sourceforge.net/p/edk2/code/18473
Author:   niruiyu
Date:     2015-09-15 08:38:16 +0000 (Tue, 15 Sep 2015)
Log Message:
-----------
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]>
Reviewed-by: Feng Tian <[email protected]>

Modified Paths:
--------------
    trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciCommand.c

Modified: trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciCommand.c
===================================================================
--- trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciCommand.c      2015-09-15 
08:35:19 UTC (rev 18472)
+++ trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciCommand.c      2015-09-15 
08:38:16 UTC (rev 18473)
@@ -173,6 +173,14 @@
       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);
   }
 


------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to