https://git.reactos.org/?p=reactos.git;a=commitdiff;h=82c908195c01ded6e24068...
commit 82c908195c01ded6e2406855f5febf79c9fe9ec1 Author: Jérôme Gardou jerome.gardou@reactos.org AuthorDate: Wed Apr 7 23:26:44 2021 +0200 Commit: Jérôme Gardou jerome.gardou@reactos.org CommitDate: Wed Apr 7 23:26:44 2021 +0200
Revert "[NTOS:MM] Allow MiMapPageInHyperSpace to be called from DISPATCH_LEVEL"
This reverts commit 8404d1a6ff897f5210860ba52d70c3a6e86f3fbb. Not ready for prime time, sorry. --- ntoskrnl/include/internal/mm.h | 21 ++++++--------------- ntoskrnl/mm/ARM3/hypermap.c | 34 ++++++++-------------------------- 2 files changed, 14 insertions(+), 41 deletions(-)
diff --git a/ntoskrnl/include/internal/mm.h b/ntoskrnl/include/internal/mm.h index 4718fcabcc3..074dbd4e454 100644 --- a/ntoskrnl/include/internal/mm.h +++ b/ntoskrnl/include/internal/mm.h @@ -1011,26 +1011,17 @@ MmZeroPageThread( );
/* hypermap.c *****************************************************************/ -_Acquires_lock_(Process->HyperSpaceLock) -_When_(OldIrql == 0, _IRQL_requires_(DISPATCH_LEVEL)) -_When_(OldIrql != 0, _IRQL_requires_(PASSIVE_LEVEL)) -_When_(OldIrql != 0, _At_(*OldIrql, IRQL_saves_)) -_When_(OldIrql != 0, _IRQL_raises_(DISPATCH_LEVEL)) PVOID NTAPI -MiMapPageInHyperSpace(_In_ PEPROCESS Process, - _In_ PFN_NUMBER Page, - _Out_opt_ PKIRQL OldIrql); +MiMapPageInHyperSpace(IN PEPROCESS Process, + IN PFN_NUMBER Page, + IN PKIRQL OldIrql);
-_Requires_lock_held_(Process->HyperSpaceLock) -_Releases_lock_(Process->HyperSpaceLock) -_IRQL_requires_(DISPATCH_LEVEL) -_When_(OldIrql != MM_NOIRQL, _At_(OldIrql, _IRQL_restores_)) VOID NTAPI -MiUnmapPageInHyperSpace(_In_ PEPROCESS Process, - _In_ PVOID Address, - _In_ KIRQL OldIrql); +MiUnmapPageInHyperSpace(IN PEPROCESS Process, + IN PVOID Address, + IN KIRQL OldIrql);
PVOID NTAPI diff --git a/ntoskrnl/mm/ARM3/hypermap.c b/ntoskrnl/mm/ARM3/hypermap.c index 88d1a1ea06c..4113814e6a6 100644 --- a/ntoskrnl/mm/ARM3/hypermap.c +++ b/ntoskrnl/mm/ARM3/hypermap.c @@ -23,24 +23,16 @@ MMPTE HyperTemplatePte;
/* PRIVATE FUNCTIONS **********************************************************/
-_Acquires_lock_(Process->HyperSpaceLock) -_When_(OldIrql == 0, _IRQL_requires_(DISPATCH_LEVEL)) -_When_(OldIrql != 0, _IRQL_requires_(PASSIVE_LEVEL)) -_When_(OldIrql != 0, _At_(*OldIrql, _IRQL_saves_)) -_When_(OldIrql != 0, _IRQL_raises_(DISPATCH_LEVEL)) PVOID NTAPI -MiMapPageInHyperSpace(_In_ PEPROCESS Process, - _In_ PFN_NUMBER Page, - _Out_opt_ PKIRQL OldIrql) +MiMapPageInHyperSpace(IN PEPROCESS Process, + IN PFN_NUMBER Page, + IN PKIRQL OldIrql) { MMPTE TempPte; PMMPTE PointerPte; PFN_NUMBER Offset;
- ASSERT(((OldIrql != NULL) && (KeGetCurrentIrql() == PASSIVE_LEVEL)) - || ((OldIrql == NULL) && (KeGetCurrentIrql() == DISPATCH_LEVEL))); - // // Never accept page 0 or non-physical pages // @@ -62,10 +54,7 @@ MiMapPageInHyperSpace(_In_ PEPROCESS Process, // Acquire the hyperlock // ASSERT(Process == PsGetCurrentProcess()); - if (OldIrql != NULL) - KeAcquireSpinLock(&Process->HyperSpaceLock, OldIrql); - else - KeAcquireSpinLockAtDpcLevel(&Process->HyperSpaceLock); + KeAcquireSpinLock(&Process->HyperSpaceLock, OldIrql);
// // Now get the first free PTE @@ -97,15 +86,11 @@ MiMapPageInHyperSpace(_In_ PEPROCESS Process, return MiPteToAddress(PointerPte); }
-_Requires_lock_held_(Process->HyperSpaceLock) -_Releases_lock_(Process->HyperSpaceLock) -_IRQL_requires_(DISPATCH_LEVEL) -_When_(OldIrql != MM_NOIRQL, _At_(OldIrql, _IRQL_restores_)) VOID NTAPI -MiUnmapPageInHyperSpace(_In_ PEPROCESS Process, - _In_ PVOID Address, - _In_ KIRQL OldIrql) +MiUnmapPageInHyperSpace(IN PEPROCESS Process, + IN PVOID Address, + IN KIRQL OldIrql) { ASSERT(Process == PsGetCurrentProcess());
@@ -118,10 +103,7 @@ MiUnmapPageInHyperSpace(_In_ PEPROCESS Process, // Release the hyperlock // ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL); - if (OldIrql == MM_NOIRQL) - KeReleaseSpinLockFromDpcLevel(&Process->HyperSpaceLock); - else - KeReleaseSpinLock(&Process->HyperSpaceLock, OldIrql); + KeReleaseSpinLock(&Process->HyperSpaceLock, OldIrql); }
PVOID