From d8b3b60eeaa0eaf954316c2c81fa87d2430d3cb0 Mon Sep 17 00:00:00 2001 From: bean <bean@localhost> Date: Sat, 7 Mar 2009 10:50:43 +0000 Subject: [PATCH] 2009-03-07 Bean <bean123ch@gmail.com> * loader/i386/efi/linux.c (grub_rescue_cmd_initrd): Fix a bug in initrd allocation. --- ChangeLog | 5 +++++ loader/i386/efi/linux.c | 10 +++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5d81a1e42..2add04029 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-03-07 Bean <bean123ch@gmail.com> + + * loader/i386/efi/linux.c (grub_rescue_cmd_initrd): Fix a bug in initrd + allocation. + 2009-03-06 Robert Millan <rmh@aybabtu.com> Fix display issue on terminals with screen size other than 80x25 diff --git a/loader/i386/efi/linux.c b/loader/i386/efi/linux.c index cd6f3a59f..60fa8823c 100644 --- a/loader/i386/efi/linux.c +++ b/loader/i386/efi/linux.c @@ -963,11 +963,15 @@ grub_rescue_cmd_initrd (int argc, char *argv[]) if (physical_end > addr_max) physical_end = addr_max; - if (physical_end < addr_min) + if (physical_end < page_align (size)) continue; - if (physical_end > addr) - addr = physical_end - page_align (size); + physical_end -= page_align (size); + + if ((physical_end >= addr_min) && + (physical_end >= desc->physical_start) && + (physical_end > addr)) + addr = physical_end; } }