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
This commit is contained in:
Randall Spangler
2011-03-15 19:20:25 -07:00
parent 61388bb53e
commit 0222355d8a

View File

@@ -139,10 +139,7 @@ int LoadKernel(LoadKernelParams* params) {
uint32_t test_err = 0; uint32_t test_err = 0;
uint32_t status; uint32_t status;
/* TODO: differentiate between finding an invalid kernel (found_partitions>0) int retval = LOAD_KERNEL_RECOVERY;
* 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 recovery = VBNV_RECOVERY_RO_UNSPECIFIED; int recovery = VBNV_RECOVERY_RO_UNSPECIFIED;
/* Setup NV storage */ /* Setup NV storage */
@@ -542,6 +539,11 @@ int LoadKernel(LoadKernelParams* params) {
/* Success! */ /* Success! */
retval = LOAD_KERNEL_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: LoadKernelExit: