Author: akhaldi Date: Fri Oct 11 18:12:16 2013 New Revision: 60615
URL: http://svn.reactos.org/svn/reactos?rev=60615&view=rev Log: [NTOSKRNL] * Fix the owner's attributes handling when releasing the working set lock. CIDs 731438 and 731439. CORE-6681
Modified: trunk/reactos/ntoskrnl/mm/ARM3/miarm.h trunk/reactos/ntoskrnl/mm/ARM3/virtual.c
Modified: trunk/reactos/ntoskrnl/mm/ARM3/miarm.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/miarm.h?re... ============================================================================== --- trunk/reactos/ntoskrnl/mm/ARM3/miarm.h [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/mm/ARM3/miarm.h [iso-8859-1] Fri Oct 11 18:12:16 2013 @@ -1307,8 +1307,8 @@ VOID MiUnlockProcessWorkingSetForFault(IN PEPROCESS Process, IN PETHREAD Thread, - IN BOOLEAN Safe, - IN BOOLEAN Shared) + OUT PBOOLEAN Safe, + OUT PBOOLEAN Shared) { ASSERT(MI_WS_OWNER(Process));
@@ -1317,22 +1317,22 @@ { /* Release unsafely */ MiUnlockProcessWorkingSetUnsafe(Process, Thread); - Safe = FALSE; - Shared = FALSE; + *Safe = FALSE; + *Shared = FALSE; } else if (Thread->OwnsProcessWorkingSetExclusive == 1) { /* Owner is safe and exclusive, release normally */ MiUnlockProcessWorkingSet(Process, Thread); - Safe = TRUE; - Shared = FALSE; + *Safe = TRUE; + *Shared = FALSE; } else { /* Owner is shared (implies safe), release normally */ ASSERT(FALSE); - Safe = TRUE; - Shared = TRUE; + *Safe = TRUE; + *Shared = TRUE; } }
Modified: trunk/reactos/ntoskrnl/mm/ARM3/virtual.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/virtual.c?... ============================================================================== --- trunk/reactos/ntoskrnl/mm/ARM3/virtual.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/mm/ARM3/virtual.c [iso-8859-1] Fri Oct 11 18:12:16 2013 @@ -223,8 +223,8 @@ /* Release the working set lock */ MiUnlockProcessWorkingSetForFault(CurrentProcess, CurrentThread, - WsSafe, - WsShared); + &WsSafe, + &WsShared);
/* Fault it in */ Status = MmAccessFault(FALSE, PageTableVirtualAddress, KernelMode, NULL);