]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* util/grub-mkimage.c (generate_image): Decrease the higher limit
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 15 Dec 2011 18:39:41 +0000 (19:39 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 15 Dec 2011 18:39:41 +0000 (19:39 +0100)
because of stack.
* util/grub-setup.c (setup): Don't add redundancy past the higher load
limit.

ChangeLog
util/grub-mkimage.c
util/grub-setup.c

index ff54cfe78d7eb33e81fdfaf9826c30b2f8961c95..6931c1b5555899f9a10433c5c2baa89ca844b5cc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-12-15  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * 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  <phcoder@gmail.com>
 
        * grub-core/gfxmenu/gui_label.c (label_paint): Handle the case
index 0ffeb909e70676c6feb07fb19373af810df538fa..de43c44937007e55b4cc1a4199f53d5fccb4d321 100644 (file)
@@ -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)
index 055543f2db6881a88e6741f1f9906c18184dfaba..d3b3b7520ce0583714ca55934262969f41cd77b5 100644 (file)
@@ -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;