From ef2bb65235654d396bbbb7e67d7e6d31aac849a2 Mon Sep 17 00:00:00 2001 From: Stefan Ginsberg Date: Wed, 24 Sep 2008 19:13:08 +0000 Subject: [PATCH] - MiQueryVirtualMemory shouldn't be called for kernel memory, so remove the special case code for a kernel address space. Also fixes a case where we would dereference an uninitialized pointer. - Fix for Coverity Error CID: 773 svn path=/trunk/; revision=36494 --- reactos/ntoskrnl/mm/virtual.c | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/reactos/ntoskrnl/mm/virtual.c b/reactos/ntoskrnl/mm/virtual.c index 1c990138a44..f34354c8493 100644 --- a/reactos/ntoskrnl/mm/virtual.c +++ b/reactos/ntoskrnl/mm/virtual.c @@ -427,26 +427,21 @@ MiQueryVirtualMemory(IN HANDLE ProcessHandle, MEMORY_AREA* MemoryArea; PMM_AVL_TABLE AddressSpace; - if (Address < MmSystemRangeStart) - { - Status = ObReferenceObjectByHandle(ProcessHandle, - PROCESS_QUERY_INFORMATION, - NULL, - UserMode, - (PVOID*)(&Process), - NULL); + Status = ObReferenceObjectByHandle(ProcessHandle, + PROCESS_QUERY_INFORMATION, + NULL, + UserMode, + (PVOID*)(&Process), + NULL); - if (!NT_SUCCESS(Status)) - { - DPRINT("NtQueryVirtualMemory() = %x\n",Status); - return(Status); - } - AddressSpace = &Process->VadRoot; - } - else + if (!NT_SUCCESS(Status)) { - AddressSpace = MmGetKernelAddressSpace(); + DPRINT("NtQueryVirtualMemory() = %x\n",Status); + return(Status); } + + AddressSpace = &Process->VadRoot; + MmLockAddressSpace(AddressSpace); MemoryArea = MmLocateMemoryAreaByAddress(AddressSpace, Address); switch(VirtualMemoryInformationClass) @@ -572,11 +567,7 @@ MiQueryVirtualMemory(IN HANDLE ProcessHandle, } MmUnlockAddressSpace(AddressSpace); - if (Address < MmSystemRangeStart) - { - ASSERT(Process); - ObDereferenceObject(Process); - } + ObDereferenceObject(Process); return Status; }