This patch fixes the obvious bugs but filo self-relocation still
fails. I need an ack.
ron
1. fix spelling error.
2. paranoid setting of info->memrange to 0
3. don't use malloc when it is not possible to use malloc.
Signed-off-by: Ronald G. Minnich <[EMAIL PROTECTED]>
Index: main/linuxbios.c
===================================================================
--- main/linuxbios.c (revision 35)
+++ main/linuxbios.c (working copy)
@@ -89,7 +89,7 @@
}
if (head->header_bytes != sizeof(*head))
continue;
- debug("Found canidate at: %p\n", head);
+ debug("Found candidate at: %p\n", head);
if (ipchksum((uint16_t *)head, sizeof(*head)) != 0)
continue;
debug("header checksum o.k.\n");
@@ -114,6 +114,7 @@
struct lb_header *lb_table;
int found;
debug("Searching for LinuxBIOS tables...\n");
+ info->memrange = 0;
found = 0;
if (!found) {
found = find_lb_table(phys_to_virt(0x00000), phys_to_virt(0x01000), &lb_table);
Index: i386/sys_info.c
===================================================================
--- i386/sys_info.c (revision 35)
+++ i386/sys_info.c (working copy)
@@ -11,6 +11,8 @@
{
int i;
unsigned long long total = 0;
+ /* this fake memory range covers the case that we can't find any LB structs. */
+ static struct memrange fakememrange[2];
/* Pick up paramters given by bootloader to us */
info->boot_type = boot_ctx->eax;
@@ -30,7 +32,8 @@
printf("Can't get memory map from firmware. "
"Using hardcoded default.\n");
info->n_memranges = 2;
- info->memrange = malloc(2 * sizeof(struct memrange));
+ /* NOTE: DO NOT USE MALLOC HERE */
+ info->memrange = fakememrange;
info->memrange[0].base = 0;
info->memrange[0].size = 640*1024;
info->memrange[1].base = 1024*1024;
--
linuxbios mailing list
[email protected]
http://www.linuxbios.org/mailman/listinfo/linuxbios