https://git.reactos.org/?p=reactos.git;a=commitdiff;h=cc99b9d96e22934723b67f5ad4c8d3bcc60aeeff

commit cc99b9d96e22934723b67f5ad4c8d3bcc60aeeff
Author:     Tuur Martens <[email protected]>
AuthorDate: Mon May 23 21:08:17 2022 +0200
Commit:     George BiČ™oc <[email protected]>
CommitDate: Sun May 29 13:28:27 2022 +0200

    [NTOS:MM] Fix MiInsertSharedUserPageVad preventing boot on x64
    
    Fix MiInsertSharedUserPageVad to not charge the system process pool quota.
    Even though PsChargeProcessNonPagedPoolQuota itself checks if the process 
specified is the system process, this doesn't work here as we're too early into 
boot for the kernel to know what the system process is.
---
 ntoskrnl/mm/ARM3/procsup.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/ntoskrnl/mm/ARM3/procsup.c b/ntoskrnl/mm/ARM3/procsup.c
index 2ddd91c5ca2..4111d711e3c 100644
--- a/ntoskrnl/mm/ARM3/procsup.c
+++ b/ntoskrnl/mm/ARM3/procsup.c
@@ -901,12 +901,15 @@ MiInsertSharedUserPageVad(
         return Status;
     }
 
-    Status = PsChargeProcessNonPagedPoolQuota(Process, sizeof(MMVAD_LONG));
-    if (!NT_SUCCESS(Status))
+    if (Process->QuotaBlock != NULL)
     {
-        DPRINT1("Ran out of quota.\n");
-        ExFreePoolWithTag(Vad, 'ldaV');
-        return Status;
+        Status = PsChargeProcessNonPagedPoolQuota(Process, sizeof(MMVAD_LONG));
+        if (!NT_SUCCESS(Status))
+        {
+            DPRINT1("Ran out of quota.\n");
+            ExFreePoolWithTag(Vad, 'ldaV');
+            return Status;
+        }
     }
 
 

Reply via email to