diff options
author | Baruch Siach <baruch@tkos.co.il> | 2014-02-18 15:12:16 +0200 |
---|---|---|
committer | Peter Korsgaard <peter@korsgaard.com> | 2014-02-18 22:13:36 +0100 |
commit | a423ec1519dca2ee7e154c483b6b441c928b292e (patch) | |
tree | ce14700b42af4c62153b84700d4aa44a0ba5dc8d | |
parent | 3a0776b9d6ae327ce36e4d331a5f58b1851ea912 (diff) |
kexec: fix zImage probe
Add upstream patch to fix probe of zImage kernels.
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
-rw-r--r-- | package/kexec/kexec-0003-kernel-image-probe-function-return-value-checking-fi.patch | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/package/kexec/kexec-0003-kernel-image-probe-function-return-value-checking-fi.patch b/package/kexec/kexec-0003-kernel-image-probe-function-return-value-checking-fi.patch new file mode 100644 index 000000000..9866cab1a --- /dev/null +++ b/package/kexec/kexec-0003-kernel-image-probe-function-return-value-checking-fi.patch @@ -0,0 +1,41 @@ +From 507e210daf047a5ef98de680151ace745297d82e Mon Sep 17 00:00:00 2001 +Message-Id: <507e210daf047a5ef98de680151ace745297d82e.1392728124.git.baruch@tkos.co.il> +From: Dave Young <dyoung@redhat.com> +Date: Thu, 6 Feb 2014 14:30:44 +0800 +Subject: [PATCH] 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> +--- + kexec/kexec.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kexec/kexec.c b/kexec/kexec.c +index f13e5124aacc..703d524836b4 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) { +-- +1.8.5.3 + |