projects
/
reactos.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
699b8bf
)
[NTOS/MM] Add Protection parameter to MiResolveDemandZeroFault
author
Timo Kreuzer
<timo.kreuzer@reactos.org>
Tue, 1 Nov 2011 21:03:00 +0000
(22:03 +0100)
committer
Timo Kreuzer
<timo.kreuzer@reactos.org>
Wed, 3 Jan 2018 22:07:19 +0000
(23:07 +0100)
ntoskrnl/mm/ARM3/pagfault.c
patch
|
blob
|
history
diff --git
a/ntoskrnl/mm/ARM3/pagfault.c
b/ntoskrnl/mm/ARM3/pagfault.c
index
1e70cc0
..
b2dd08c
100644
(file)
--- a/
ntoskrnl/mm/ARM3/pagfault.c
+++ b/
ntoskrnl/mm/ARM3/pagfault.c
@@
-564,10
+564,12
@@
MiCopyPfn(
MiReleaseSystemPtes(SysPtes, 2, SystemPteSpace);
}
MiReleaseSystemPtes(SysPtes, 2, SystemPteSpace);
}
+static
NTSTATUS
NTAPI
MiResolveDemandZeroFault(IN PVOID Address,
IN PMMPTE PointerPte,
NTSTATUS
NTAPI
MiResolveDemandZeroFault(IN PVOID Address,
IN PMMPTE PointerPte,
+ IN ULONG Protection,
IN PEPROCESS Process,
IN KIRQL OldIrql)
{
IN PEPROCESS Process,
IN KIRQL OldIrql)
{
@@
-689,7
+691,7
@@
MiResolveDemandZeroFault(IN PVOID Address,
/* User fault, build a user PTE */
MI_MAKE_HARDWARE_PTE_USER(&TempPte,
PointerPte,
/* User fault, build a user PTE */
MI_MAKE_HARDWARE_PTE_USER(&TempPte,
PointerPte,
- P
ointerPte->u.Soft.P
rotection,
+ Protection,
PageFrameNumber);
}
else
PageFrameNumber);
}
else
@@
-697,7
+699,7
@@
MiResolveDemandZeroFault(IN PVOID Address,
/* This is a user-mode PDE, create a kernel PTE for it */
MI_MAKE_HARDWARE_PTE(&TempPte,
PointerPte,
/* This is a user-mode PDE, create a kernel PTE for it */
MI_MAKE_HARDWARE_PTE(&TempPte,
PointerPte,
- P
ointerPte->u.Soft.P
rotection,
+ Protection,
PageFrameNumber);
}
PageFrameNumber);
}
@@
-1246,6
+1248,7
@@
MiResolveProtoPteFault(IN BOOLEAN StoreInstruction,
/* Resolve the demand zero fault */
Status = MiResolveDemandZeroFault(Address,
PointerProtoPte,
/* Resolve the demand zero fault */
Status = MiResolveDemandZeroFault(Address,
PointerProtoPte,
+ (ULONG)TempPte.u.Soft.Protection,
Process,
OldIrql);
ASSERT(NT_SUCCESS(Status));
Process,
OldIrql);
ASSERT(NT_SUCCESS(Status));
@@
-1593,6
+1596,7
@@
MiDispatchFault(IN BOOLEAN StoreInstruction,
//
Status = MiResolveDemandZeroFault(Address,
PointerPte,
//
Status = MiResolveDemandZeroFault(Address,
PointerPte,
+ (ULONG)TempPte.u.Soft.Protection,
Process,
MM_NOIRQL);
ASSERT(KeAreAllApcsDisabled() == TRUE);
Process,
MM_NOIRQL);
ASSERT(KeAreAllApcsDisabled() == TRUE);
@@
-2032,6
+2036,7
@@
UserFault:
#if 0
/* Resolve a demand zero fault */
Status = MiResolveDemandZeroFault(PointerPpe,
#if 0
/* Resolve a demand zero fault */
Status = MiResolveDemandZeroFault(PointerPpe,
+ PointerPxe,
MM_READWRITE,
CurrentProcess,
MM_NOIRQL);
MM_READWRITE,
CurrentProcess,
MM_NOIRQL);
@@
-2052,6
+2057,7
@@
UserFault:
#if 0
/* Resolve a demand zero fault */
Status = MiResolveDemandZeroFault(PointerPde,
#if 0
/* Resolve a demand zero fault */
Status = MiResolveDemandZeroFault(PointerPde,
+ PointerPpe,
MM_READWRITE,
CurrentProcess,
MM_NOIRQL);
MM_READWRITE,
CurrentProcess,
MM_NOIRQL);
@@
-2061,7
+2067,7
@@
UserFault:
}
#endif
}
#endif
- /* Check if the PDE is valid */
+ /* Check if the PDE is
in
valid */
if (PointerPde->u.Hard.Valid == 0)
{
/* Right now, we only handle scenarios where the PDE is totally empty */
if (PointerPde->u.Hard.Valid == 0)
{
/* Right now, we only handle scenarios where the PDE is totally empty */
@@
-2180,6
+2186,7
@@
UserFault:
/* Resolve the fault */
MiResolveDemandZeroFault(Address,
PointerPte,
/* Resolve the fault */
MiResolveDemandZeroFault(Address,
PointerPte,
+ MM_READWRITE,
CurrentProcess,
MM_NOIRQL);
CurrentProcess,
MM_NOIRQL);