#136: failed to boot under KVM\QEMU
authorRonald G. Minnich <rminnich@gmail.com>
Thu, 14 May 2009 21:26:28 +0000 (21:26 +0000)
committerRonald G. Minnich <rminnich@gmail.com>
Thu, 14 May 2009 21:26:28 +0000 (21:26 +0000)
> -------------------------------------+--------------------------------------
>   Reporter:  silicium@…             |          Owner:  somebody
>       Type:  defect                 |         Status:  new
>   Priority:  major                  |      Milestone:
>  Component:  coreboot               |        Version:  v2
>   Keywords:                         |   Dependencies:
> Patchstatus:  patch needs review     |
> -------------------------------------+--------------------------------------

Fix use of uninitialized pointers. To help in future, move
the declaration to the same scope as the use.

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
Acked-by: Myles Watson <mylesgw@gmail.com>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4285 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

src/boot/selfboot.c

index b904e31a2167628042d6c56b1fc16edabeade288..d87fe50c8233ff6e6d7156fe404a5a22ac15d355 100644 (file)
@@ -411,7 +411,7 @@ static int load_self_segments(
                        return 0;
        }
        for(ptr = head->next; ptr != head; ptr = ptr->next) {
-               unsigned char *dest, *middle, *end, *src;
+               unsigned char *dest,*src;
                printk_debug("Loading Segment: addr: 0x%016lx memsz: 0x%016lx filesz: 0x%016lx\n",
                        ptr->s_dstaddr, ptr->s_memsz, ptr->s_filesz);
                
@@ -428,6 +428,7 @@ static int load_self_segments(
                
                /* Copy data from the initial buffer */
                if (ptr->s_filesz) {
+                       unsigned char *middle, *end;
                        size_t len;
                        len = ptr->s_filesz;
                        switch(ptr->compression) {
@@ -464,14 +465,15 @@ static int load_self_segments(
                                (unsigned long)middle,
                                (unsigned long)end,
                                (unsigned long)src);
-               }
-               /* Zero the extra bytes between middle & end */
-               if (middle < end) {
-                       printk_debug("Clearing Segment: addr: 0x%016lx memsz: 0x%016lx\n",
-                               (unsigned long)middle, (unsigned long)(end - middle));
+
+                       /* Zero the extra bytes between middle & end */
+                       if (middle < end) {
+                               printk_debug("Clearing Segment: addr: 0x%016lx memsz: 0x%016lx\n",
+                                       (unsigned long)middle, (unsigned long)(end - middle));
                        
-                       /* Zero the extra bytes */
-                       memset(middle, 0, end - middle);
+                               /* Zero the extra bytes */
+                               memset(middle, 0, end - middle);
+                       }
                }
        }
        return 1;