From 5ef5c511475d74a10ff11a9600aee559fe7ec29c Mon Sep 17 00:00:00 2001 From: Vladimir 'phcoder' Serbinenko Date: Thu, 15 Dec 2011 19:39:41 +0100 Subject: [PATCH] * util/grub-mkimage.c (generate_image): Decrease the higher limit because of stack. * util/grub-setup.c (setup): Don't add redundancy past the higher load limit. --- ChangeLog | 7 +++++++ util/grub-mkimage.c | 6 +++--- util/grub-setup.c | 4 ++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index ff54cfe78..6931c1b55 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2011-12-15 Vladimir Serbinenko + + * util/grub-mkimage.c (generate_image): Decrease the higher limit + because of stack. + * util/grub-setup.c (setup): Don't add redundancy past the higher load + limit. + 2011-12-15 Vladimir Serbinenko * grub-core/gfxmenu/gui_label.c (label_paint): Handle the case diff --git a/util/grub-mkimage.c b/util/grub-mkimage.c index 0ffeb909e..de43c4493 100644 --- a/util/grub-mkimage.c +++ b/util/grub-mkimage.c @@ -958,10 +958,10 @@ generate_image (const char *dir, char *prefix, FILE *out, char *mods[], char *boot_path, *boot_img; size_t boot_size; - if (GRUB_KERNEL_I386_PC_LINK_ADDR + core_size > GRUB_MEMORY_I386_PC_UPPER) - grub_util_error (_("core image is too big (%p > %p)"), + if (GRUB_KERNEL_I386_PC_LINK_ADDR + core_size > 0x78000) + grub_util_error (_("core image is too big (0x%x > 0x%x)"), GRUB_KERNEL_I386_PC_LINK_ADDR + core_size, - GRUB_MEMORY_I386_PC_UPPER); + 0x78000); num = ((core_size + GRUB_DISK_SECTOR_SIZE - 1) >> GRUB_DISK_SECTOR_BITS); if (num > 0xffff) diff --git a/util/grub-setup.c b/util/grub-setup.c index 055543f2d..d3b3b7520 100644 --- a/util/grub-setup.c +++ b/util/grub-setup.c @@ -412,6 +412,10 @@ setup (const char *dir, if (nsec > 2 * core_sectors) nsec = 2 * core_sectors; + if (nsec > ((0x78000 - GRUB_KERNEL_I386_PC_LINK_ADDR) + >> GRUB_DISK_SECTOR_BITS)) + nsec = ((0x78000 - GRUB_KERNEL_I386_PC_LINK_ADDR) + >> GRUB_DISK_SECTOR_BITS); /* Clean out the blocklists. */ block = first_block;