Author: tkreuzer
Date: Tue Mar 11 22:56:31 2014
New Revision: 62482

URL: http://svn.reactos.org/svn/reactos?rev=62482&view=rev
Log:
[NTOSKRNL]
Fix a bug in MmGetPhysicalAddress, that resulted in unwanted sign extension of 
physical addresses > 2GB. Will hopefully fix some uniata related issues.

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=62482&r1=62481&r2=62482&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/mm/ARM3/virtual.c    [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/ARM3/virtual.c    [iso-8859-1] Tue Mar 11 
22:56:31 2014
@@ -5283,7 +5283,7 @@
         if (TempPde.u.Hard.LargePage)
         {
             /* Physical address is base page + large page offset */
-            PhysicalAddress.QuadPart = TempPde.u.Hard.PageFrameNumber << 
PAGE_SHIFT;
+            PhysicalAddress.QuadPart = (ULONG64)TempPde.u.Hard.PageFrameNumber 
<< PAGE_SHIFT;
             PhysicalAddress.QuadPart += ((ULONG_PTR)Address & (PAGE_SIZE * 
PTE_PER_PAGE - 1));
             return PhysicalAddress;
         }
@@ -5293,7 +5293,7 @@
         if (TempPte.u.Hard.Valid)
         {
             /* Physical address is base page + page offset */
-            PhysicalAddress.QuadPart = TempPte.u.Hard.PageFrameNumber << 
PAGE_SHIFT;
+            PhysicalAddress.QuadPart = (ULONG64)TempPte.u.Hard.PageFrameNumber 
<< PAGE_SHIFT;
             PhysicalAddress.QuadPart += ((ULONG_PTR)Address & (PAGE_SIZE - 1));
             return PhysicalAddress;
         }


Reply via email to