From 8ed329a4427e2ef64952fa837b5e2deb40885453 Mon Sep 17 00:00:00 2001 From: Hartmut Birr Date: Sun, 6 Jul 2003 10:50:21 +0000 Subject: [PATCH] - Do only attach/detach the process if the address is in user space and if the current process is not the creator process (in MmProbeAndLockPages). svn path=/trunk/; revision=5009 --- reactos/ntoskrnl/mm/mdl.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/reactos/ntoskrnl/mm/mdl.c b/reactos/ntoskrnl/mm/mdl.c index ac7a96dbe58..6068916bf94 100644 --- a/reactos/ntoskrnl/mm/mdl.c +++ b/reactos/ntoskrnl/mm/mdl.c @@ -1,4 +1,4 @@ -/* $Id: mdl.c,v 1.50 2003/06/19 19:01:01 gvg Exp $ +/* $Id: mdl.c,v 1.51 2003/07/06 10:50:21 hbirr Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -284,7 +284,7 @@ VOID STDCALL MmProbeAndLockPages (PMDL Mdl, ULONG NrPages; NTSTATUS Status; KPROCESSOR_MODE Mode; - PEPROCESS CurrentProcess; + PEPROCESS CurrentProcess = NULL; DPRINT("MmProbeAndLockPages(Mdl %x)\n", Mdl); @@ -296,12 +296,7 @@ VOID STDCALL MmProbeAndLockPages (PMDL Mdl, return; } - CurrentProcess = PsGetCurrentProcess(); - if (Mdl->Process != CurrentProcess) - { - KeAttachProcess(Mdl->Process); - } if (Mdl->StartVa >= (PVOID)KERNEL_BASE) { @@ -310,6 +305,11 @@ VOID STDCALL MmProbeAndLockPages (PMDL Mdl, else { Mode = UserMode; + CurrentProcess = PsGetCurrentProcess(); + if (Mdl->Process != CurrentProcess) + { + KeAttachProcess(Mdl->Process); + } } /* @@ -361,7 +361,7 @@ VOID STDCALL MmProbeAndLockPages (PMDL Mdl, MmReferencePage((LARGE_INTEGER)(LONGLONG)MdlPages[i]); } MmUnlockAddressSpace(&Mdl->Process->AddressSpace); - if (Mdl->Process != CurrentProcess) + if (Mode == UserMode && Mdl->Process != CurrentProcess) { KeDetachProcess(); }