Blob Blame History Raw
--- kexec-tools-1.101/kexec/kexec.c.orig1	2006-10-13 14:01:39.000000000 -0400
+++ kexec-tools-1.101/kexec/kexec.c	2006-10-13 14:10:28.000000000 -0400
@@ -698,6 +698,19 @@ void usage(void)
 	printf("\n");
 }
 
+static int kexec_loaded(void)
+{
+	int ret;
+	FILE *fp;
+
+	fp = fopen("/sys/kernel/kexec_loaded", "r");
+	if (fp == NULL)
+		return -1;
+	fscanf(fp, "%d", &ret);
+	fclose(fp);
+	return ret;
+}
+
 int main(int argc, char *argv[])
 {
 	int do_load = 1;
@@ -801,6 +814,10 @@ 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();
 	}