From 507e210daf047a5ef98de680151ace745297d82e Mon Sep 17 00:00:00 2001 From: Dave Young Date: Thu, 6 Feb 2014 14:30:44 +0800 Subject: 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 Signed-off-by: Simon Horman --- kexec/kexec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'kexec/kexec.c') 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) { -- cgit v1.2.1