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);