diff options
author | Michael Holzheu <holzheu@linux.vnet.ibm.com> | 2011-08-19 15:09:51 +0200 |
---|---|---|
committer | Simon Horman <horms@verge.net.au> | 2011-08-20 18:03:32 +0900 |
commit | d571055038a49d140a9240067546c414d4c27579 (patch) | |
tree | 9b0b117547706c2100b68f9bcdc6c2d7110a38e2 /purgatory/purgatory.c | |
parent | d866fa444cc47097c07b3d31c494fdacd977f6d8 (diff) | |
download | kexec-tools-d571055038a49d140a9240067546c414d4c27579.tar.gz |
kexec-tools: Allow to call verify_sha256_digest() from kernel
For s390 we first want to check if kdump checksums are valid before we start
the kdump kernel. With this patch on s390 the purgatory entry point is
called with a parameter. If the parameter is "0", only the checksum test
is done and the result (0 = ok, 1 = invalid) is passed as return code back
to the caller (kernel). If the parameter is "1", the complete purgatory code
is executed and kdump is started.
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'purgatory/purgatory.c')
-rw-r--r-- | purgatory/purgatory.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/purgatory/purgatory.c b/purgatory/purgatory.c index 3827d59..3bbcc09 100644 --- a/purgatory/purgatory.c +++ b/purgatory/purgatory.c @@ -9,7 +9,7 @@ struct sha256_region sha256_regions[SHA256_REGIONS] = {}; sha256_digest_t sha256_digest = { }; -void verify_sha256_digest(void) +int verify_sha256_digest(void) { struct sha256_region *ptr, *end; sha256_digest_t digest; @@ -34,16 +34,19 @@ void verify_sha256_digest(void) printf("%hhx ", sha256_digest[i]); } printf("\n"); - for(;;) { - /* loop forever */ - } + return 1; } + return 0; } void purgatory(void) { printf("I'm in purgatory\n"); setup_arch(); - verify_sha256_digest(); + if (verify_sha256_digest()) { + for(;;) { + /* loop forever */ + } + } post_verification_setup_arch(); } |