Fix warnings in load_elf{32,64}()
[yaboot.git] / second / yaboot.c
index 9b66ab44e1be0ee82b88e386a5d0358428766e73..ec0c0859d71813be46db27937154583b744c6a2a 100644 (file)
@@ -76,6 +76,8 @@
 #define KERNEL_LINK_ADDR_PPC32 0xC0000000UL
 #define KERNEL_LINK_ADDR_PPC64 0xC000000000000000ULL
 
+#define INITRD_CHUNKSIZE 0x100000
+
 typedef struct {
      union {
          Elf32_Ehdr  elf32hdr;
@@ -1023,6 +1025,7 @@ yaboot_text_ui(void)
      loadinfo_t          loadinfo;
      void                *initrd_more,*initrd_want;
      unsigned long       initrd_read;
+     unsigned int        len = INITRD_CHUNKSIZE;
 
      loadinfo.load_loc = 0;
 
@@ -1112,19 +1115,18 @@ yaboot_text_ui(void)
               }
               prom_printf("Loading ramdisk...\n");
               result = open_file(&params.rd, &file);
+              if (result == FILE_ERR_OK && file.fs->ino_size) {
+                   result = file.fs->ino_size(&file, &len);
+               }
               if (result != FILE_ERR_OK) {
                    prom_printf("%s:%d,", params.rd.dev, params.rd.part);
                    prom_perror(result, params.rd.file);
               }
               else {
-#define INITRD_CHUNKSIZE 0x100000
-                   unsigned int len = INITRD_CHUNKSIZE;
-
-                   /* We add a bit to the actual size so the loop below doesn't think
-                    * there is more to load.
+                   /* We add a bit to the actual size so the loop below
+                    * doesn't think there is more to load.
                     */
-                   if (file.fs->ino_size && file.fs->ino_size(&file) > 0)
-                        len = file.fs->ino_size(&file) + 0x1000;
+                    len += 0x1000;
 
                    initrd_base = prom_claim_chunk(loadinfo.base+loadinfo.memsize, len, 0);
                    if (initrd_base == (void *)-1) {
@@ -1195,7 +1197,7 @@ load_elf32(struct boot_file_t *file, loadinfo_t *loadinfo)
 {
      int                       i;
      Elf32_Ehdr                *e = &(loadinfo->elf.elf32hdr);
-     Elf32_Phdr                *p, *ph;
+     Elf32_Phdr                *p, *ph = NULL;
      int                       size = sizeof(Elf32_Ehdr) - sizeof(Elf_Ident);
      unsigned long     loadaddr;
 
@@ -1328,7 +1330,7 @@ load_elf64(struct boot_file_t *file, loadinfo_t *loadinfo)
 {
      int                       i;
      Elf64_Ehdr                *e = &(loadinfo->elf.elf64hdr);
-     Elf64_Phdr                *p, *ph;
+     Elf64_Phdr                *p, *ph = NULL;
      int                       size = sizeof(Elf64_Ehdr) - sizeof(Elf_Ident);
      unsigned long     loadaddr;