diff options
Diffstat (limited to 'init/initramfs.c')
| -rw-r--r-- | init/initramfs.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/init/initramfs.c b/init/initramfs.c index 722bb17241f2..33b498384123 100644 --- a/init/initramfs.c +++ b/init/initramfs.c @@ -241,10 +241,9 @@ static __initdata int wfd; static int __init do_name(void) { state = SkipIt; - next_state = Start; + next_state = Reset; if (strcmp(collected, "TRAILER!!!") == 0) { free_hash(); - next_state = Reset; return 0; } if (dry_run) @@ -295,7 +294,7 @@ static int __init do_symlink(void) sys_symlink(collected + N_ALIGN(name_len), collected); sys_lchown(collected, uid, gid); state = SkipIt; - next_state = Start; + next_state = Reset; return 0; } @@ -331,6 +330,10 @@ static void __init flush_buffer(char *buf, unsigned len) buf += written; len -= written; state = Start; + } else if (c == 0) { + buf += written; + len -= written; + state = Reset; } else error("junk in compressed archive"); } |
