Fix Process not being deleted Modified: trunk/reactos/ntoskrnl/mm/mm.c Modified: trunk/reactos/ntoskrnl/ps/kill.c Modified: trunk/reactos/ntoskrnl/ps/process.c _____
Modified: trunk/reactos/ntoskrnl/mm/mm.c --- trunk/reactos/ntoskrnl/mm/mm.c 2005-04-18 04:46:06 UTC (rev 14663) +++ trunk/reactos/ntoskrnl/mm/mm.c 2005-04-18 04:55:48 UTC (rev 14664) @@ -90,6 +90,7 @@
return(STATUS_SUCCESS);
case MEMORY_AREA_VIRTUAL_MEMORY: + case MEMORY_AREA_PEB_OR_TEB: MmFreeVirtualMemory(Process, Marea); break;
_____
Modified: trunk/reactos/ntoskrnl/ps/kill.c --- trunk/reactos/ntoskrnl/ps/kill.c 2005-04-18 04:46:06 UTC (rev 14663) +++ trunk/reactos/ntoskrnl/ps/kill.c 2005-04-18 04:55:48 UTC (rev 14664) @@ -151,7 +151,7 @@
{ PEPROCESS Process = (PEPROCESS)ObjectBody;
- DPRINT("PiDeleteProcess(ObjectBody %x)\n",Process); + DPRINT1("PiDeleteProcess(ObjectBody %x)\n",Process);
/* Delete the CID Handle */ if(Process->UniqueProcessId != NULL) { _____
Modified: trunk/reactos/ntoskrnl/ps/process.c --- trunk/reactos/ntoskrnl/ps/process.c 2005-04-18 04:46:06 UTC (rev 14663) +++ trunk/reactos/ntoskrnl/ps/process.c 2005-04-18 04:55:48 UTC (rev 14664) @@ -427,9 +427,8 @@
/* FIXME: ObGetObjectSecurity(Process, &SecurityDescriptor) SeAccessCheck */ - ObReferenceObject(Process); - ObReferenceObject(Process); - return Status; + ObDereferenceObject(Process); + return Status;
exitdereferenceobjects: if(SectionObject != NULL) ObDereferenceObject(SectionObject);