[ros-dev] [ros-diffs] [jgardou] 66334: [NTOSKRNL/MM] - MiIsEntireRangeCommitted: Ensure the PTE we are checking is really faulted in. - Prefer MiPteToPde and MiPdeToPte (which should really be called MiFirstPteInPde) in...
Alex Ionescu
ionucu at videotron.ca
Thu Feb 19 04:46:43 UTC 2015
it might fix an assert but the patch is incorrect. will this also take 6
months to revert?
Best regards,
Alex Ionescu
On Tue, Feb 17, 2015 at 6:19 AM, <jgardou at svn.reactos.org> wrote:
> Author: jgardou
> Date: Tue Feb 17 14:19:05 2015
> New Revision: 66334
>
> URL: http://svn.reactos.org/svn/reactos?rev=66334&view=rev
> Log:
> [NTOSKRNL/MM]
> - MiIsEntireRangeCommitted: Ensure the PTE we are checking is really
> faulted in.
> - Prefer MiPteToPde and MiPdeToPte (which should really be called
> MiFirstPteInPde) instead of MiAddressToPte and MiPteToAddress
> Fixes weird failed ASSERT in page fault handler when using DPH.
>
> Modified:
> trunk/reactos/ntoskrnl/mm/ARM3/virtual.c
>
> Modified: trunk/reactos/ntoskrnl/mm/ARM3/virtual.c
> URL:
> http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/virtual.c?rev=66334&r1=66333&r2=66334&view=diff
>
> ==============================================================================
> --- trunk/reactos/ntoskrnl/mm/ARM3/virtual.c [iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/mm/ARM3/virtual.c [iso-8859-1] Tue Feb 17
> 14:19:05 2015
> @@ -1994,14 +1994,13 @@
> if (OnBoundary)
> {
> /* Is this PDE demand zero? */
> - PointerPde = MiAddressToPte(PointerPte);
> + PointerPde = MiPteToPde(PointerPte);
> if (PointerPde->u.Long != 0)
> {
> /* It isn't -- is it valid? */
> if (PointerPde->u.Hard.Valid == 0)
> {
> /* Nope, fault it in */
> - PointerPte = MiPteToAddress(PointerPde);
> MiMakeSystemAddressValid(PointerPte, Process);
> }
> }
> @@ -2009,13 +2008,13 @@
> {
> /* The PTE was already valid, so move to the next one */
> PointerPde++;
> - PointerPte = MiPteToAddress(PointerPde);
> + PointerPte = MiPdeToPte(PointerPde);
>
> /* Is the entire VAD committed? If not, fail */
> if (!Vad->u.VadFlags.MemCommit) return FALSE;
>
> - /* Everything is committed so far past the range, return
> true */
> - if (PointerPte > LastPte) return TRUE;
> + /* New loop iteration with our new, on-boundary PTE. */
> + continue;
> }
> }
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.reactos.org/pipermail/ros-dev/attachments/20150218/8703690a/attachment.html>
More information about the Ros-dev
mailing list