Author: tfaber Date: Sat Nov 28 12:45:16 2015 New Revision: 70177
URL: http://svn.reactos.org/svn/reactos?rev=70177&view=rev Log: [NTOS:PS] - Properly acquire process rundown - Reference job object when assigning a process to it - Don't assert when creating a child process whose parent is in a job Fixes crashes in kernel32_winetest:process
Modified: trunk/reactos/ntoskrnl/ps/job.c trunk/reactos/ntoskrnl/ps/process.c
Modified: trunk/reactos/ntoskrnl/ps/job.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ps/job.c?rev=70177... ============================================================================== --- trunk/reactos/ntoskrnl/ps/job.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ps/job.c [iso-8859-1] Sat Nov 28 12:45:16 2015 @@ -166,8 +166,7 @@ /* lock the process so we can safely assign the process. Note that in the meanwhile another thread could have assigned this process to a job! */
- ExAcquireRundownProtection(&Process->RundownProtect); - if(NT_SUCCESS(Status)) + if(ExAcquireRundownProtection(&Process->RundownProtect)) { if(Process->Job == NULL && PsGetProcessSessionId(Process) == Job->SessionId) { @@ -176,6 +175,7 @@ the job object might require it to wait, which is a bad thing while holding the process lock! */ Process->Job = Job; + ObReferenceObject(Job); } else {
Modified: trunk/reactos/ntoskrnl/ps/process.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ps/process.c?rev=7... ============================================================================== --- trunk/reactos/ntoskrnl/ps/process.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ps/process.c [iso-8859-1] Sat Nov 28 12:45:16 2015 @@ -714,7 +714,6 @@ { /* FIXME: We need to insert this process */ DPRINT1("Jobs not yet supported\n"); - ASSERT(FALSE); }
/* Create PEB only for User-Mode Processes */