diff options
Diffstat (limited to 'kexec/kexec.c')
-rw-r--r-- | kexec/kexec.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/kexec/kexec.c b/kexec/kexec.c index fe29fb5..a9a0f3f 100644 --- a/kexec/kexec.c +++ b/kexec/kexec.c @@ -714,17 +714,19 @@ static int my_load(const char *type, int fileind, int argc, char **argv, } } } + /* Figure out our native architecture before load */ + native_arch = physical_arch(); + if (native_arch < 0) { + return -1; + } + info.kexec_flags |= native_arch; + if (file_type[i].load(argc, argv, kernel_buf, kernel_size, &info) < 0) { fprintf(stderr, "Cannot load %s\n", kernel); return -1; } /* If we are not in native mode setup an appropriate trampoline */ - native_arch = physical_arch(); - if (native_arch < 0) { - return -1; - } - info.kexec_flags |= native_arch; if (arch_compat_trampoline(&info) < 0) { return -1; } @@ -1026,9 +1028,9 @@ char *concat_cmdline(const char *base, const char *append) char *cmdline; if (!base && !append) return NULL; - if (append) + if (append && !base) return xstrdup(append); - if (base) + if (base && !append) return xstrdup(base); cmdline = xmalloc(strlen(base) + 1 + strlen(append) + 1); strcpy(cmdline, base); |