diff options
author | Maneesh Soni <maneesh@in.ibm.com> | 2006-07-27 11:30:15 -0600 |
---|---|---|
committer | Eric W. Biederman <ebiederm@xmission.com> | 2006-07-27 11:30:15 -0600 |
commit | 61909815c74fa778c2787aa824dc2c5826d9769b (patch) | |
tree | 10469e7c4783429ade58a2f9093f7bff7290d467 /kexec/kexec.c | |
parent | 9241000f28eb6b86a06c0be2d6cf31498373bc1c (diff) |
ifdown check
Signed-off-by: Maneesh Soni <maneesh@in.ibm.com>
Diffstat (limited to 'kexec/kexec.c')
-rw-r--r-- | kexec/kexec.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/kexec/kexec.c b/kexec/kexec.c index 3994107..aa597a7 100644 --- a/kexec/kexec.c +++ b/kexec/kexec.c @@ -699,6 +699,19 @@ void usage(void) printf("\n"); } +int sys_kexec_loaded() +{ + 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; @@ -818,9 +831,15 @@ int main(int argc, char *argv[]) if ((result == 0) && do_sync) { sync(); } - if ((result == 0) && do_ifdown) { + if ((result == 0) && do_ifdown) { + int ret; extern int ifdown(void); - (void)ifdown(); + ret = sys_kexec_loaded(); + if (!ret) { + fprintf(stderr,"kexec image is not loaded\n"); + result = 1; + } else + (void)ifdown(); } if ((result == 0) && do_exec) { result = my_exec(); |