Initrd concatenation now working
authorMichael Brown <mcb30@etherboot.org>
Wed, 1 Aug 2007 14:29:15 +0000 (15:29 +0100)
committerMichael Brown <mcb30@etherboot.org>
Wed, 1 Aug 2007 14:29:15 +0000 (15:29 +0100)
src/arch/i386/image/bzimage.c

index 161d267..0d01f6a 100644 (file)
@@ -186,10 +186,11 @@ static int bzimage_load_initrd ( struct image *image,
        for_each_image ( initrd ) {
                if ( initrd->type != &initrd_image_type )
                        continue;
        for_each_image ( initrd ) {
                if ( initrd->type != &initrd_image_type )
                        continue;
-               initrd_len = ( ( image->len + 0x0f ) & ~0x0f );
+               initrd_len = ( ( initrd->len + 0x0f ) & ~0x0f );
                total_len += initrd_len;
        }
 
                total_len += initrd_len;
        }
 
+       /* Give up if no initrd images found */
        if ( ! total_len )
                return 0;
 
        if ( ! total_len )
                return 0;
 
@@ -225,7 +226,7 @@ static int bzimage_load_initrd ( struct image *image,
        for_each_image ( initrd ) {
                if ( initrd->type != &initrd_image_type )
                        continue;
        for_each_image ( initrd ) {
                if ( initrd->type != &initrd_image_type )
                        continue;
-               initrd_len = ( ( image->len + 0x0f ) & ~0x0f );
+               initrd_len = ( ( initrd->len + 0x0f ) & ~0x0f );
                DBGC ( image, "bzImage %p has initrd %p at [%lx,%lx)\n",
                       image, initrd, ( start + offset ),
                       ( start + offset + initrd->len ) );
                DBGC ( image, "bzImage %p has initrd %p at [%lx,%lx)\n",
                       image, initrd, ( start + offset ),
                       ( start + offset + initrd->len ) );