17 lines
578 B
Diff
17 lines
578 B
Diff
|
--- grub-0.96/stage2/boot.c
|
||
|
+++ grub-0.96/stage2/boot.c
|
||
|
@@ -824,8 +824,11 @@
|
||
|
moveto = (mbi.mem_upper + 0x400) << 10;
|
||
|
|
||
|
moveto = (moveto - len) & 0xfffff000;
|
||
|
- max_addr = (lh->header == LINUX_MAGIC_SIGNATURE && lh->version >= 0x0203
|
||
|
- ? lh->initrd_addr_max : LINUX_INITRD_MAX_ADDRESS);
|
||
|
+ max_addr = LINUX_INITRD_MAX_ADDRESS;
|
||
|
+ if (lh->header == LINUX_MAGIC_SIGNATURE &&
|
||
|
+ lh->version >= 0x0203 &&
|
||
|
+ lh->initrd_addr_max < max_addr)
|
||
|
+ max_addr = lh->initrd_addr_max;
|
||
|
if (moveto + len >= max_addr)
|
||
|
moveto = (max_addr - len) & 0xfffff000;
|
||
|
|