X-Git-Url: http://git.ozlabs.org/?p=yaboot.git;a=blobdiff_plain;f=second%2Fyaboot.c;h=765c7bf46618d47a4d67872349360ac70461c147;hp=9075db1bf004fdaab7625683408844e97358d62f;hb=2c611ced5c7fa551d47da32e574bc7f2ff2df18b;hpb=81d00c88d7a046b86d0f4298686e7627dc8d135e diff --git a/second/yaboot.c b/second/yaboot.c index 9075db1..765c7bf 100644 --- a/second/yaboot.c +++ b/second/yaboot.c @@ -58,6 +58,8 @@ #define CONFIG_FILE_NAME "yaboot.conf" #define CONFIG_FILE_MAX 0x8000 /* 32k */ +#define MESSAGE_FILE_MAX 2048 + #ifdef USE_MD5_PASSWORDS #include "md5.h" #endif /* USE_MD5_PASSWORDS */ @@ -175,7 +177,6 @@ yaboot_start (unsigned long r3, unsigned long r4, unsigned long r5) { int result; void* malloc_base = NULL; - unsigned long addr; prom_handle root; /* OF seems to do it, but I'm not very confident */ @@ -185,10 +186,7 @@ yaboot_start (unsigned long r3, unsigned long r4, unsigned long r5) prom_init ((prom_entry) r5); /* Allocate some memory for malloc'ator */ - for (addr = MALLOCADDR; addr <= MALLOCADDR * 16 ;addr+=0x100000) { - malloc_base = prom_claim((void *)addr, MALLOCSIZE, 0); - if (malloc_base != (void *)-1) break; - } + malloc_base = prom_claim_chunk((void *)MALLOCADDR, MALLOCSIZE, 0); if (malloc_base == (void *)-1) { prom_printf("Can't claim malloc buffer (%d bytes at 0x%08x)\n", MALLOCSIZE, MALLOCADDR); @@ -295,13 +293,13 @@ void print_message_file(char *filename) } else opened = 1; - msg = malloc(2001); + msg = malloc(MESSAGE_FILE_MAX + 1); if (!msg) goto done; else - memset(msg, 0, 2001); + memset(msg, 0, MESSAGE_FILE_MAX + 1); - if (file.fs->read(&file, 2000, msg) <= 0) + if (file.fs->read(&file, MESSAGE_FILE_MAX, msg) <= 0) goto done; else prom_printf("%s", msg); @@ -983,7 +981,7 @@ int get_params(struct boot_param_t* params) /* check if user seted to use a initrd file from boot console */ if (!definitrd && p != manualinitrd) { - if (manualinitrd[0] != "/" && (prom_get_devtype(defdevice_bak) != FILE_DEVICE_NET)) { + if (manualinitrd[0] != '/' && (prom_get_devtype(defdevice_bak) != FILE_DEVICE_NET)) { strcpy(initrdpath, "/"); strcat(initrdpath, manualinitrd); } else @@ -1011,8 +1009,6 @@ int get_params(struct boot_param_t* params) void yaboot_text_ui(void) { -#define MAX_HEADERS 32 - struct boot_file_t file; int result; static struct boot_param_t params; @@ -1209,11 +1205,6 @@ load_elf32(struct boot_file_t *file, loadinfo_t *loadinfo) loadinfo->entry = e->e_entry; - if (e->e_phnum > MAX_HEADERS) { - prom_printf ("Can only load kernels with one program header\n"); - goto bail; - } - ph = (Elf32_Phdr *)malloc(sizeof(Elf32_Phdr) * e->e_phnum); if (!ph) { prom_printf ("Malloc error\n"); @@ -1347,11 +1338,6 @@ load_elf64(struct boot_file_t *file, loadinfo_t *loadinfo) loadinfo->entry = e->e_entry; - if (e->e_phnum > MAX_HEADERS) { - prom_printf ("Can only load kernels with one program header\n"); - goto bail; - } - ph = (Elf64_Phdr *)malloc(sizeof(Elf64_Phdr) * e->e_phnum); if (!ph) { prom_printf ("Malloc error\n");