Skip to content

Commit d52031a

Browse files
authored
[NTOS:MM] MmPurgeSegment: Fix missing MmDereferenceSegment cleanup (reactos#7509)
MiGrabDataSection adds a refcount. There is a missing MmDereferenceSegment cleanup in case of range check error. Fix that by moving MiGrabDataSection calling code to after range check.
1 parent 2e3a080 commit d52031a

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

ntoskrnl/mm/section.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4838,20 +4838,20 @@ MmPurgeSegment(
48384838
LARGE_INTEGER PurgeStart, PurgeEnd;
48394839
PMM_SECTION_SEGMENT Segment;
48404840

4841-
Segment = MiGrabDataSection(SectionObjectPointer);
4842-
if (!Segment)
4843-
{
4844-
/* Nothing to purge */
4845-
return TRUE;
4846-
}
4847-
48484841
PurgeStart.QuadPart = Offset ? Offset->QuadPart : 0LL;
48494842
if (Length && Offset)
48504843
{
48514844
if (!NT_SUCCESS(RtlLongLongAdd(PurgeStart.QuadPart, Length, &PurgeEnd.QuadPart)))
48524845
return FALSE;
48534846
}
48544847

4848+
Segment = MiGrabDataSection(SectionObjectPointer);
4849+
if (!Segment)
4850+
{
4851+
/* Nothing to purge */
4852+
return TRUE;
4853+
}
4854+
48554855
MmLockSectionSegment(Segment);
48564856

48574857
if (!Length || !Offset)

0 commit comments

Comments
 (0)