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, <jgar...@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;
>              }
>          }
>
>
>
>
_______________________________________________
Ros-dev mailing list
Ros-dev@reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev

Reply via email to