efi_loader: Handle memory overflows
authorAndreas Färber <afaerber@suse.de>
Wed, 13 Apr 2016 12:04:38 +0000 (14:04 +0200)
committerTom Rini <trini@konsulko.com>
Mon, 18 Apr 2016 21:11:44 +0000 (17:11 -0400)
jetson-tk1 has 2 GB of RAM at 0x80000000, causing gd->ram_top to be zero.
Handle this by either avoiding ram_top or by using the same type as
ram_top to reverse the overflow effect.

Cc: Alexander Graf <agraf@suse.de>
Signed-off-by: Andreas Färber <afaerber@suse.de>
Reviewed-by: Alexander Graf <agraf@suse.de>
lib/efi_loader/efi_memory.c

index df995858ed1a6abad45e2a5c3940525cd242a527..71a3d192696cbb51cc63c7400dc80add2d93f88c 100644 (file)
@@ -220,7 +220,7 @@ efi_status_t efi_allocate_pages(int type, int memory_type,
        switch (type) {
        case 0:
                /* Any page */
-               addr = efi_find_free_memory(len, gd->ram_top);
+               addr = efi_find_free_memory(len, gd->start_addr_sp);
                if (!addr) {
                        r = EFI_NOT_FOUND;
                        break;
@@ -320,9 +320,9 @@ efi_status_t efi_get_memory_map(unsigned long *memory_map_size,
 
 int efi_memory_init(void)
 {
-       uint64_t runtime_start, runtime_end, runtime_pages;
-       uint64_t uboot_start, uboot_pages;
-       uint64_t uboot_stack_size = 16 * 1024 * 1024;
+       unsigned long runtime_start, runtime_end, runtime_pages;
+       unsigned long uboot_start, uboot_pages;
+       unsigned long uboot_stack_size = 16 * 1024 * 1024;
        int i;
 
        /* Add RAM */