mirror of
https://github.com/reactos/reactos.git
synced 2025-07-31 11:51:58 +00:00
[NTOSKRNL]
Fix a bug in MmGetPhysicalAddress, that resulted in unwanted sign extension of physical addresses > 2GB. Will hopefully fix some uniata related issues. svn path=/trunk/; revision=62482
This commit is contained in:
parent
7ceac2f6a4
commit
a0173baa19
1 changed files with 2 additions and 2 deletions
|
@ -5283,7 +5283,7 @@ MmGetPhysicalAddress(PVOID Address)
|
||||||
if (TempPde.u.Hard.LargePage)
|
if (TempPde.u.Hard.LargePage)
|
||||||
{
|
{
|
||||||
/* Physical address is base page + large page offset */
|
/* 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));
|
PhysicalAddress.QuadPart += ((ULONG_PTR)Address & (PAGE_SIZE * PTE_PER_PAGE - 1));
|
||||||
return PhysicalAddress;
|
return PhysicalAddress;
|
||||||
}
|
}
|
||||||
|
@ -5293,7 +5293,7 @@ MmGetPhysicalAddress(PVOID Address)
|
||||||
if (TempPte.u.Hard.Valid)
|
if (TempPte.u.Hard.Valid)
|
||||||
{
|
{
|
||||||
/* Physical address is base page + page offset */
|
/* 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));
|
PhysicalAddress.QuadPart += ((ULONG_PTR)Address & (PAGE_SIZE - 1));
|
||||||
return PhysicalAddress;
|
return PhysicalAddress;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue