https://git.reactos.org/?p=reactos.git;a=commitdiff;h=8494688eebecb28797356…
commit 8494688eebecb287973569dc1261fd0741706324
Author: Jérôme Gardou <jerome.gardou(a)reactos.org>
AuthorDate: Thu Mar 18 09:05:00 2021 +0100
Commit: Jérôme Gardou <zefklop(a)users.noreply.github.com>
CommitDate: Thu Mar 18 12:24:21 2021 +0100
[NTOS:MM] Do not use atomic operations to set a bit while holding a lock.
Saving your fingers from typing it doesn't make it better code.
---
ntoskrnl/mm/ARM3/expool.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ntoskrnl/mm/ARM3/expool.c b/ntoskrnl/mm/ARM3/expool.c
index fb55f9159ba..95bc21ad822 100644
--- a/ntoskrnl/mm/ARM3/expool.c
+++ b/ntoskrnl/mm/ARM3/expool.c
@@ -1734,7 +1734,7 @@ ExpFindAndRemoveTagBigPages(IN PVOID Va,
// Set the free bit, and decrement the number of allocations. Finally, release
// the lock and return the tag that was located
//
- InterlockedIncrement((PLONG)&Entry->Va);
+ Entry->Va = (PVOID)((ULONG_PTR)Entry->Va | POOL_BIG_TABLE_ENTRY_FREE);
ExpPoolBigEntriesInUse--;