[NTOS:MM] MiDereferenceSession: return as soon as session is destroyed

This leads to some simplifications in the following code.
This commit is contained in:
Hervé Poussineau
2021-05-25 18:48:16 +02:00
parent dd08ae2c0f
commit eac0afc6fe
+6 -9
View File
@@ -364,10 +364,11 @@ MiDereferenceSession(VOID)
{
/* No more references left, kill the session completely */
MiDereferenceSessionFinal();
return;
}
/* Check if tis is the session leader or the last process in the session */
if ((Process->Vm.Flags.SessionLeader) || (ReferenceCount == 0))
/* Check if this is the session leader */
if (Process->Vm.Flags.SessionLeader)
{
/* Get the global session address before we kill the session mapping */
SessionGlobal = MmSessionSpace->GlobalVirtualAddress;
@@ -377,13 +378,9 @@ MiDereferenceSession(VOID)
BYTES_TO_PAGES(MmSessionSize) * sizeof(MMPDE));
KeFlushEntireTb(FALSE, FALSE);
/* Is this the session leader? */
if (Process->Vm.Flags.SessionLeader)
{
/* Clean up the references here. */
ASSERT(Process->Session == NULL);
MiReleaseProcessReferenceToSessionDataPage(SessionGlobal);
}
/* Clean up the references here. */
ASSERT(Process->Session == NULL);
MiReleaseProcessReferenceToSessionDataPage(SessionGlobal);
}
/* Reset the current process' session flag */