|
@@ -421,6 +421,8 @@ static char * __init unpack_to_rootfs(char *buf, unsigned len, int check_only)
|
|
|
{
|
|
|
int written;
|
|
|
decompress_fn decompress;
|
|
|
+ const char *compress_name;
|
|
|
+ static __initdata char msg_buf[64];
|
|
|
|
|
|
dry_run = check_only;
|
|
|
header_buf = kmalloc(110, GFP_KERNEL);
|
|
@@ -449,10 +451,18 @@ static char * __init unpack_to_rootfs(char *buf, unsigned len, int check_only)
|
|
|
continue;
|
|
|
}
|
|
|
this_header = 0;
|
|
|
- decompress = decompress_method(buf, len, NULL);
|
|
|
+ decompress = decompress_method(buf, len, &compress_name);
|
|
|
if (decompress)
|
|
|
decompress(buf, len, NULL, flush_buffer, NULL,
|
|
|
&my_inptr, error);
|
|
|
+ else if (compress_name) {
|
|
|
+ if (!message) {
|
|
|
+ snprintf(msg_buf, sizeof msg_buf,
|
|
|
+ "compression method %s not configured",
|
|
|
+ compress_name);
|
|
|
+ message = msg_buf;
|
|
|
+ }
|
|
|
+ }
|
|
|
if (state != Reset)
|
|
|
error("junk in compressed archive");
|
|
|
this_header = saved_offset + my_inptr;
|