[NTOS:MM]

- Avoid reference leaks in failure cases of MmCreateCacheSection
CORE-6931

svn path=/trunk/; revision=74383
This commit is contained in:
Thomas Faber 2017-04-20 08:58:45 +00:00
parent 599c80f8f2
commit ec2dddf4cb

View file

@ -340,6 +340,7 @@ MmCreateCacheSection(PROS_SECTION_OBJECT *SectionObject,
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
DPRINT("Failed: %x\n", Status); DPRINT("Failed: %x\n", Status);
ObDereferenceObject(FileObject);
return Status; return Status;
} }
@ -382,6 +383,7 @@ MmCreateCacheSection(PROS_SECTION_OBJECT *SectionObject,
{ {
DPRINT("Status %x\n", Status); DPRINT("Status %x\n", Status);
ObDereferenceObject(Section); ObDereferenceObject(Section);
ObDereferenceObject(FileObject);
return Status; return Status;
} }
ASSERT(Status != STATUS_PENDING); ASSERT(Status != STATUS_PENDING);
@ -413,6 +415,7 @@ MmCreateCacheSection(PROS_SECTION_OBJECT *SectionObject,
{ {
DPRINT("Zero size file\n"); DPRINT("Zero size file\n");
ObDereferenceObject(Section); ObDereferenceObject(Section);
ObDereferenceObject(FileObject);
return STATUS_FILE_INVALID; return STATUS_FILE_INVALID;
} }
@ -423,6 +426,7 @@ MmCreateCacheSection(PROS_SECTION_OBJECT *SectionObject,
{ {
DPRINT("Failed: STATUS_NO_MEMORY\n"); DPRINT("Failed: STATUS_NO_MEMORY\n");
ObDereferenceObject(Section); ObDereferenceObject(Section);
ObDereferenceObject(FileObject);
return STATUS_NO_MEMORY; return STATUS_NO_MEMORY;
} }