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
diff --git a/firmware/lib/vboot_kernel.c b/firmware/lib/vboot_kernel.c
index 84f6615..83fb3fe 100644
--- a/firmware/lib/vboot_kernel.c
+++ b/firmware/lib/vboot_kernel.c
@@ -139,10 +139,7 @@
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 @@
/* 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: