| 1533 | } |
| 1534 | |
| 1535 | VOID |
| 1536 | Ext2FreeMcb (IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb) |
| 1537 | { |
| 1538 | PEXT2_MCB Parent = Mcb->Parent; |
| 1539 | |
| 1540 | ASSERT(Mcb != NULL); |
| 1541 | |
| 1542 | ASSERT((Mcb->Identifier.Type == EXT2MCB) && |
| 1543 | (Mcb->Identifier.Size == sizeof(EXT2_MCB))); |
| 1544 | |
| 1545 | if ((Mcb->Identifier.Type != EXT2MCB) || |
| 1546 | (Mcb->Identifier.Size != sizeof(EXT2_MCB))) { |
| 1547 | return; |
| 1548 | } |
| 1549 | |
| 1550 | DEBUG(DL_INF, ( "Ext2FreeMcb: Mcb %wZ will be freed.\n", &Mcb->FullName)); |
| 1551 | |
| 1552 | if (IsMcbSymLink(Mcb) && Mcb->Target) { |
| 1553 | Ext2DerefMcb(Mcb->Target); |
| 1554 | } |
| 1555 | |
| 1556 | if (FsRtlNumberOfRunsInLargeMcb(&Mcb->Extents)) { |
| 1557 | DEBUG(DL_EXT, ("List data extents for: %wZ\n", &Mcb->FullName)); |
| 1558 | Ext2ListExtents(&Mcb->Extents); |
| 1559 | } |
| 1560 | FsRtlUninitializeLargeMcb(&(Mcb->Extents)); |
| 1561 | if (FsRtlNumberOfRunsInLargeMcb(&Mcb->MetaExts)) { |
| 1562 | DEBUG(DL_EXT, ("List meta extents for: %wZ\n", &Mcb->FullName)); |
| 1563 | Ext2ListExtents(&Mcb->MetaExts); |
| 1564 | } |
| 1565 | FsRtlUninitializeLargeMcb(&(Mcb->MetaExts)); |
| 1566 | ClearLongFlag(Mcb->Flags, MCB_ZONE_INITED); |
| 1567 | |
| 1568 | if (Mcb->ShortName.Buffer) { |
| 1569 | DEC_MEM_COUNT(PS_MCB_NAME, Mcb->ShortName.Buffer, |
| 1570 | Mcb->ShortName.MaximumLength); |
| 1571 | Ext2FreePool(Mcb->ShortName.Buffer, EXT2_FNAME_MAGIC); |
| 1572 | } |
| 1573 | |
| 1574 | if (Mcb->FullName.Buffer) { |
| 1575 | DEC_MEM_COUNT(PS_MCB_NAME, Mcb->FullName.Buffer, |
| 1576 | Mcb->FullName.MaximumLength); |
| 1577 | Ext2FreePool(Mcb->FullName.Buffer, EXT2_FNAME_MAGIC); |
| 1578 | } |
| 1579 | |
| 1580 | /* free dentry */ |
| 1581 | if (Mcb->de) { |
| 1582 | Ext2FreeEntry(Mcb->de); |
| 1583 | } |
| 1584 | |
| 1585 | Mcb->Identifier.Type = 0; |
| 1586 | Mcb->Identifier.Size = 0; |
| 1587 | |
| 1588 | ExFreeToNPagedLookasideList(&(Ext2Global->Ext2McbLookasideList), Mcb); |
| 1589 | DEC_MEM_COUNT(PS_MCB, Mcb, sizeof(EXT2_MCB)); |
| 1590 | } |
| 1591 | |
| 1592 |
no test coverage detected