mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/mm: fix alignment check for non-present entries
While the alignment of the mfn is not relevant for non-present entries, the alignment of the linear address is. Commit5b52e1b043introduced a regression by not checking the alignment of the linear address when the new entry was a non-present one. Fix by always checking the alignment of the linear address, non-present entries must just skip the alignment check of the physical address. Fixes:5b52e1b043('x86/mm: skip super-page alignment checks for non-present entries') Reported-by: Andrew Cooper <andrew.cooper3@citrix.com> Suggested-by: Jan Beulich <jbeulich@suse.com> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> Reviewed-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
d2bbb0d455
commit
b1ebb6461a
1 file changed
+2
-2
+2
-2
@@ -5525,7 +5525,7 @@ int map_pages_to_xen(
|
||||
ol3e = *pl3e;
|
||||
|
||||
if ( cpu_has_page1gb &&
|
||||
(!(flags & _PAGE_PRESENT) || IS_L3E_ALIGNED(virt, mfn)) &&
|
||||
IS_L3E_ALIGNED(virt, flags & _PAGE_PRESENT ? mfn : _mfn(0)) &&
|
||||
nr_mfns >= (1UL << (L3_PAGETABLE_SHIFT - PAGE_SHIFT)) &&
|
||||
!(flags & (_PAGE_PAT | MAP_SMALL_PAGES)) )
|
||||
{
|
||||
@@ -5644,7 +5644,7 @@ int map_pages_to_xen(
|
||||
if ( !pl2e )
|
||||
goto out;
|
||||
|
||||
if ( (!(flags & _PAGE_PRESENT) || IS_L2E_ALIGNED(virt, mfn)) &&
|
||||
if ( IS_L2E_ALIGNED(virt, flags & _PAGE_PRESENT ? mfn : _mfn(0)) &&
|
||||
(nr_mfns >= (1u << PAGETABLE_ORDER)) &&
|
||||
!(flags & (_PAGE_PAT|MAP_SMALL_PAGES)) )
|
||||
{
|
||||
|
||||