[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen master] x86/EFI: don't accept 64-bit base relocations on page tables



commit 5ae7811c5c2b94c43930858d2e2880bc10cbf242
Author:     Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Thu Sep 15 10:06:56 2016 +0200
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Thu Sep 15 10:06:56 2016 +0200

    x86/EFI: don't accept 64-bit base relocations on page tables
    
    Page tables get pre-populated with physical addresses which, due to
    living inside the Xen image, will never exceed 32 bits in width. That
    in turn results in the tool generating the relocations to produce
    32-bit relocations for them instead of the 64-bit ones needed for
    relocating virtual addresses. Hence instead of special casing page
    tables in the processing of 64-bit relocations, let's be more rigid
    and refuse them (as being indicative of something else having gone
    wrong in the build process).
    
    Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
---
 xen/arch/x86/efi/efi-boot.h | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index 10985721..388c4ea 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -81,12 +81,9 @@ static void __init efi_arch_relocate_image(unsigned long 
delta)
                 }
                 break;
             case PE_BASE_RELOC_DIR64:
-                if ( delta )
-                {
-                    *(u64 *)addr += delta;
-                    if ( in_page_tables(addr) )
-                        *(intpte_t *)addr += xen_phys_start;
-                }
+                if ( in_page_tables(addr) )
+                    blexit(L"Unexpected relocation type");
+                *(u64 *)addr += delta;
                 break;
             default:
                 blexit(L"Unsupported relocation type");
--
generated by git-patchbot for /home/xen/git/xen.git#master

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.