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: