From 0222355d8af3ec1ae3d7d63cec45f47a16a28262 Mon Sep 17 00:00:00 2001 From: Randall Spangler Date: Tue, 15 Mar 2011 19:20:25 -0700 Subject: [PATCH] Fix LoadKernel() not returning LOAD_KERNEL_RECOVERY Change-Id: Ib147be7442b93ef429a9796e2b76bee27347e0b3 R=adlr@chromium.org BUG=13150 TEST=manual On a current firmware (0052G1+), use 'crossystem vbtest_errfunc=3 vbtest_errno=3' to force a reboot to recovery mode. Then use 'crossystem recovery_reason' to check the recovery reason. It should be 71. It's not. (You'll get a range of other error reasons due to a different firmware bug.) Review URL: http://codereview.chromium.org/6670040 --- firmware/lib/vboot_kernel.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/firmware/lib/vboot_kernel.c b/firmware/lib/vboot_kernel.c index 84f6615c94..83fb3fed31 100644 --- a/firmware/lib/vboot_kernel.c +++ b/firmware/lib/vboot_kernel.c @@ -139,10 +139,7 @@ int LoadKernel(LoadKernelParams* params) { uint32_t test_err = 0; uint32_t status; - /* TODO: differentiate between finding an invalid kernel (found_partitions>0) - * and not finding one at all. Right now we treat them the same, and return - * LOAD_KERNEL_INVALID for both. */ - int retval = LOAD_KERNEL_INVALID; + int retval = LOAD_KERNEL_RECOVERY; int recovery = VBNV_RECOVERY_RO_UNSPECIFIED; /* Setup NV storage */ @@ -542,6 +539,11 @@ int LoadKernel(LoadKernelParams* params) { /* Success! */ retval = LOAD_KERNEL_SUCCESS; + } else { + /* TODO: differentiate between finding an invalid kernel + * (found_partitions>0) and not finding one at all. Right now we + * treat them the same, and return LOAD_KERNEL_INVALID for both. */ + retval = LOAD_KERNEL_INVALID; } LoadKernelExit: