[BOOT:MM] Fix descriptor memory leaks
Sometimes when handling MmMdAddDescriptorToList() errors, descriptors were not freed with MmMdFreeDescriptor().
This commit is contained in:
@@ -152,6 +152,7 @@ Return Value:
|
||||
--*/
|
||||
|
||||
{
|
||||
NTSTATUS Status;
|
||||
PMEMORY_DESCRIPTOR PrevDescriptor, NextDescriptor, NewDescriptor;
|
||||
ULONGLONG DescriptorEnd, PrevDescriptorEnd, NextDescriptorEnd;
|
||||
ULONGLONG MappedFirstPage;
|
||||
@@ -186,7 +187,10 @@ Return Value:
|
||||
PrevDescriptor->Type
|
||||
);
|
||||
if (NewDescriptor != NULL) {
|
||||
MmMdAddDescriptorToList(Mdl, NewDescriptor, Flags);
|
||||
Status = MmMdAddDescriptorToList(Mdl, NewDescriptor, Flags);
|
||||
if (!NT_SUCCESS(Status)) {
|
||||
MmMdFreeDescriptor(NewDescriptor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -242,7 +246,10 @@ Return Value:
|
||||
Descriptor->Type
|
||||
);
|
||||
if (NewDescriptor != NULL) {
|
||||
MmMdAddDescriptorToList(Mdl, NewDescriptor, Flags);
|
||||
Status = MmMdAddDescriptorToList(Mdl, NewDescriptor, Flags);
|
||||
if (!NT_SUCCESS(Status)) {
|
||||
MmMdFreeDescriptor(NewDescriptor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -141,6 +141,7 @@ Return Value:
|
||||
|
||||
Status = MmMdAddDescriptorToList(&MmMdlReservedAllocated, NewDescriptor, 0x00);
|
||||
if (!NT_SUCCESS(Status)) {
|
||||
MmMdFreeDescriptor(NewDescriptor);
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user