summaryrefslogtreecommitdiff
path: root/kexec/kexec.c
diff options
context:
space:
mode:
Diffstat (limited to 'kexec/kexec.c')
-rw-r--r--kexec/kexec.c16
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);