|
@@ -177,7 +177,7 @@ asmlinkage void __div0(void)
|
|
|
error("Attempting division by 0!");
|
|
|
}
|
|
|
|
|
|
-extern void do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x));
|
|
|
+extern int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x));
|
|
|
|
|
|
|
|
|
void
|
|
@@ -185,6 +185,8 @@ decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p,
|
|
|
unsigned long free_mem_ptr_end_p,
|
|
|
int arch_id)
|
|
|
{
|
|
|
+ int ret;
|
|
|
+
|
|
|
output_data = (unsigned char *)output_start;
|
|
|
free_mem_ptr = free_mem_ptr_p;
|
|
|
free_mem_end_ptr = free_mem_ptr_end_p;
|
|
@@ -193,7 +195,10 @@ decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p,
|
|
|
arch_decomp_setup();
|
|
|
|
|
|
putstr("Uncompressing Linux...");
|
|
|
- do_decompress(input_data, input_data_end - input_data,
|
|
|
- output_data, error);
|
|
|
- putstr(" done, booting the kernel.\n");
|
|
|
+ ret = do_decompress(input_data, input_data_end - input_data,
|
|
|
+ output_data, error);
|
|
|
+ if (ret)
|
|
|
+ error("decompressor returned an error");
|
|
|
+ else
|
|
|
+ putstr(" done, booting the kernel.\n");
|
|
|
}
|