summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2006-07-27 11:44:34 -0600
committerEric W. Biederman <ebiederm@xmission.com>2006-07-27 11:44:34 -0600
commit3b38820ee8e4f4b81d213bd93f438a911eb5f3d6 (patch)
treeb2b8a0ea1d92fdff58565def7679e32b5d6e9e96
parent61909815c74fa778c2787aa824dc2c5826d9769b (diff)
Do no shutdown if we know we do not have a kernel loaded
-rw-r--r--kexec/kexec.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/kexec/kexec.c b/kexec/kexec.c
index aa597a7..0206fa6 100644
--- a/kexec/kexec.c
+++ b/kexec/kexec.c
@@ -699,7 +699,7 @@ void usage(void)
printf("\n");
}
-int sys_kexec_loaded()
+static int kexec_loaded(void)
{
int ret;
FILE *fp;
@@ -825,21 +825,19 @@ int main(int argc, char *argv[])
if (do_load && (result == 0)) {
result = my_load(type, fileind, argc, argv, kexec_flags);
}
+ /* Don't shutdown unless there is something to reboot to! */
+ if ((result == 0) && (do_shutdown || do_exec) && !kexec_loaded()) {
+ die("Nothing has been loaded!\n");
+ }
if ((result == 0) && do_shutdown) {
result = my_shutdown();
}
if ((result == 0) && do_sync) {
sync();
}
- if ((result == 0) && do_ifdown) {
- int ret;
+ if ((result == 0) && do_ifdown) {
extern int ifdown(void);
- ret = sys_kexec_loaded();
- if (!ret) {
- fprintf(stderr,"kexec image is not loaded\n");
- result = 1;
- } else
- (void)ifdown();
+ (void)ifdown();
}
if ((result == 0) && do_exec) {
result = my_exec();