summaryrefslogtreecommitdiff
path: root/kexec/kexec.c
diff options
context:
space:
mode:
authorDave Young <dyoung@redhat.com>2014-02-06 14:30:44 +0800
committerSimon Horman <horms@verge.net.au>2014-02-06 16:29:23 +0900
commit507e210daf047a5ef98de680151ace745297d82e (patch)
treedb260af5f7e6a8f747acf5bf38f823cfdd3128ef /kexec/kexec.c
parenteb05abb060191940a0efc81e9fdce69aecd9e8b1 (diff)
downloadkexec-tools-507e210daf047a5ef98de680151ace745297d82e.tar.gz
kernel image probe function return value checking fix
Currently kexec will use the kernel image type when probe function return value >=0. It looks odd, but previously it works. Since commit bf06cf2095 it does not work anymore. During my testing for arm zImage, in 2nd kernel the atags pointer and the machine_id are not valid, I did a lot of debugging in kernel, finally I found this is caused by a kexec tools bug instead. Because uImage will be probed before zImage, also the uImage probe return 1 instead of -1 since bf06cf2095, thus kexec will mistakenly think it is uImage. Fix this issue by regarding it's valid only when probe return 0. Signed-off-by: Dave Young <dyoung@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'kexec/kexec.c')
-rw-r--r--kexec/kexec.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kexec/kexec.c b/kexec/kexec.c
index f13e512..703d524 100644
--- a/kexec/kexec.c
+++ b/kexec/kexec.c
@@ -691,7 +691,7 @@ static int my_load(const char *type, int fileind, int argc, char **argv,
}
if (!type || guess_only) {
for (i = 0; i < file_types; i++) {
- if (file_type[i].probe(kernel_buf, kernel_size) >= 0)
+ if (file_type[i].probe(kernel_buf, kernel_size) == 0)
break;
}
if (i == file_types) {