From: Abner Chang <abner.ch...@amd.com> Unlink the XhciPei memory block when it has been freed.
Signed-off-by: Kuei-Hung Lin <kuei-hung....@amd.com> Cc: Hao A Wu <hao.a...@intel.com> Cc: Ray Ni <ray...@intel.com> Cc: Garrett Kirkendall <garrett.kirkend...@amd.com> Cc: Abner Chang <abner.ch...@amd.com> --- MdeModulePkg/Bus/Pci/XhciPei/UsbHcMem.c | 28 ++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/MdeModulePkg/Bus/Pci/XhciPei/UsbHcMem.c b/MdeModulePkg/Bus/Pci/XhciPei/UsbHcMem.c index c64b38fcfc8..41436dedf91 100644 --- a/MdeModulePkg/Bus/Pci/XhciPei/UsbHcMem.c +++ b/MdeModulePkg/Bus/Pci/XhciPei/UsbHcMem.c @@ -365,6 +365,32 @@ UsbHcInitMemPool ( return Pool; } +/** + Unlink the memory block from the pool's list. + + @param Head The block list head of the memory's pool. + @param BlockToUnlink The memory block to unlink. + +**/ +VOID +UsbHcUnlinkMemBlock ( + IN USBHC_MEM_BLOCK *Head, + IN USBHC_MEM_BLOCK *BlockToUnlink + ) +{ + USBHC_MEM_BLOCK *Block; + + ASSERT ((Head != NULL) && (BlockToUnlink != NULL)); + + for (Block = Head; Block != NULL; Block = Block->Next) { + if (Block->Next == BlockToUnlink) { + Block->Next = BlockToUnlink->Next; + BlockToUnlink->Next = NULL; + break; + } + } +} + /** Release the memory management pool. @@ -386,8 +412,8 @@ UsbHcFreeMemPool ( // first block. // for (Block = Pool->Head->Next; Block != NULL; Block = Pool->Head->Next) { - // UsbHcUnlinkMemBlock (Pool->Head, Block); UsbHcFreeMemBlock (Pool, Block); + UsbHcUnlinkMemBlock (Pool->Head, Block); } UsbHcFreeMemBlock (Pool, Pool->Head); -- 2.37.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#97223): https://edk2.groups.io/g/devel/message/97223 Mute This Topic: https://groups.io/mt/95581132/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-