diff --git a/headers/private/kernel/vm/vm_page.h b/headers/private/kernel/vm/vm_page.h index 5b98398e51..464d254ce0 100644 --- a/headers/private/kernel/vm/vm_page.h +++ b/headers/private/kernel/vm/vm_page.h @@ -20,6 +20,14 @@ extern int32 gMappedPagesCount; struct vm_page_reservation { uint32 count; + +#if KDEBUG && defined(__cplusplus) + vm_page_reservation() : count(0) {} + ~vm_page_reservation() + { + ASSERT(count == 0); + } +#endif }; diff --git a/src/system/kernel/vm/vm_page.cpp b/src/system/kernel/vm/vm_page.cpp index 8c1f522944..2e10e1ab06 100644 --- a/src/system/kernel/vm/vm_page.cpp +++ b/src/system/kernel/vm/vm_page.cpp @@ -3990,8 +3990,10 @@ vm_page_allocate_page_run(uint32 flags, page_num_t length, if (foundRun) { i = allocate_page_run(start, length, flags, freeClearQueueLocker); - if (i == length) + if (i == length) { + reservation.count = 0; return &sPages[start]; + } // apparently a cached page couldn't be allocated -- skip it and // continue