Commit Graph

5743 Commits

Author SHA1 Message Date
Tao Bao
7ea515e6fc applypatch: Fix a potential nullptr dereferencing.
Note that the code exists in debugging path only, and won't be hit
unless device has flaky flash.

Test: Run recovery_unit_test and recovery_component_test on marlin.
Change-Id: I0c71adc271f08f00e3eabd9d14cd8af3186c5bae
2018-07-09 15:22:35 -07:00
Tao Bao
c059b6c1c6 Merge "updater: Add ABORT command." 2018-07-09 17:38:40 +00:00
Tao Bao
91a649ab62 updater: Add ABORT command.
This will be used for testing purpose only, replacing the previously
used "fail", to intentionally abort an update.

As we're separating the logic between commands parsing and execution,
"abort" needs to be considered as a valid command during the parsing.

Test: recovery_unit_test and recovery_component_test on marlin.
Change-Id: I47c41c423e62c41cc8515fd92f3c5959be08da02
2018-07-07 04:12:19 +00:00
Tao Bao
cf1f9bdb12 Merge "tests: Split unit tests out of component/applypatch_test.cpp." 2018-07-06 21:18:32 +00:00
Tao Bao
b8cb2e6322 tests: Split unit tests out of component/applypatch_test.cpp.
... into unit/applypatch_test.cpp. And rename the file to
component/applypatch_modes_test.cpp.

Bug: 110106408
Test: Run recovery_unit_test and recovery_component_test on marlin.
Change-Id: Ic23c4f054baa2fa0d5e8ea2fcffd22572f1f112e
2018-07-06 12:21:41 -07:00
Treehugger Robot
d419966730 Merge "minui/drm: wait for page flip completion" 2018-07-04 01:57:44 +00:00
Tianjie Xu
0a84d7260b Merge "No longer print hash for stashed blocks during verification of retry" 2018-07-03 20:22:40 +00:00
Jeremy Compostella
955da1e26d minui/drm: wait for page flip completion
If two consecutive call are made to drmModePageFlip, the second call
may fail with -EBUSY because the first flip is not completed yet.

This patch adds a wait for completion mechanism based on
drmHandleEvent.

Change-Id: Ied13ebefc7523003431b1b307bae70d1a70cb24b
Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>
Signed-off-by: Benoit Fradin <benoit.fradin@intel.com>
2018-07-03 17:43:06 +00:00
Tianjie Xu
3c5958f62d No longer print hash for stashed blocks during verification of retry
During block verification, load stash reads from the source blocks on
the device instead of the stashed files. And for interrupted update,
it's pretty common that the source blocks has already been overwritten
by subsequent commands.

In that case the hash printing is mostly useless. Moreover we should have
already printed the hash when the first update failed.

Bug: 80241799
Test: Unit tests pass. No longer prints mismatching stashed source blocks on retry.
Change-Id: I4effe684280b0325199f6cc4b2cc26e91295c2d7
2018-07-02 16:42:09 -07:00
Tao Bao
95b8d2b064 Merge "updater: Check the number of args in Command::Parse." 2018-06-26 03:37:03 +00:00
Tao Bao
afc2962e60 Merge "updater: Add Command parsing codes." 2018-06-26 03:30:52 +00:00
Tao Bao
92f339372c updater: Check the number of args in Command::Parse.
Additionally checks for excess args when parsing ERASE, FREE, NEW, STASH
and ZERO. Note that the check for MOVE, BSDIFF, IMGDIFF has been covered
in Command::ParseTargetInfoAndSourceInfo.

Test: Run recovery_unit_test on marlin.
Change-Id: Ic8bc9b7a8dcf98f1f8db2e259607564508726857
2018-06-25 13:39:33 -07:00
Tao Bao
6a7e4af7c6 updater: Add Command parsing codes.
The added codes are not used in the updater yet. The switch will happen
in subsequent CLs.

Test: Run recovery_unit_test and recovery_component_test on marlin.
Change-Id: I1ae8a233280f02c2171b43ef028bdccdacb39c59
2018-06-25 13:39:29 -07:00
Tao Bao
b4181566f9 Merge "applypatch: {Load,Save}FileContents and ParseSha1 take std::string." 2018-06-25 14:35:03 +00:00
Treehugger Robot
bd76709827 Merge "applypatch: Move to libbase logging." 2018-06-24 17:47:21 +00:00
Treehugger Robot
9b5d4ea20f Merge "e2fsdroid and mke2fs are dynamic executable in recovery partition" 2018-06-20 22:16:21 +00:00
Tao Bao
8dc704930b applypatch: {Load,Save}FileContents and ParseSha1 take std::string.
Test: mmma -j bootable/recovery
Test: Run recovery_component_test on marlin.
Change-Id: Ifcf244346a88dac833d91b169a4c2aee1fe677f1
2018-06-20 13:21:16 -07:00
Tao Bao
859bfc5659 applypatch: Move to libbase logging.
Test: mmma -j bootable/recovery
Test: Run recovery_component_test on marlin.
Change-Id: I3a4e32eb2c1e231c6690a50571edc66341b8d50a
2018-06-20 13:19:25 -07:00
Tao Bao
24e1321bc3 Merge "applypatch: Clean up the function comments." 2018-06-20 16:26:02 +00:00
Tao Bao
ddc81680e6 Merge "updater: Defer the creation of the new data writer." 2018-06-20 16:20:46 +00:00
Jiyong Park
69364fe553 e2fsdroid and mke2fs are dynamic executable in recovery partition
The two utilities are now converted to dynamic executables as shared
libraries are supported in recovery mode.

As part of the conversion, their location has moved from /sbin to
/system/bin. Reflect the change in the program 'recovery'

Bug: 79146551
Test: adb reboot recovery, and select 'Wipe data/factory reset'. The
data partition is formatted and there is no selinux denial.

Change-Id: Ie7cfc4c50ab1e6767e4a5170533ccf826ec7d7f3
2018-06-20 14:24:05 +09:00
Zhomart Mukhamejanov
4a2c2d8102 Merge "updater_sample: add privileged system app docs" 2018-06-20 02:05:50 +00:00
Tao Bao
155771bafa applypatch: Clean up the function comments.
Also two minor changes (other than renaming some parameters):
 - Added constness to the first parameter of FindMatchingPatch();
 - Declared WriteToPartition() as static.

Bug: 110106408
Test: mmma -j bootable/recovery
Change-Id: I388958c944a23ce4a38a757ce2249f6a89dd4f03
2018-06-19 16:33:50 -07:00
Tao Bao
9fb0d89583 Merge "Drop the dependency on AB_OTA_UPDATER flag." 2018-06-19 19:43:43 +00:00
Tao Bao
cf60a44bd4 Drop the dependency on AB_OTA_UPDATER flag.
This shortens the gap between A/B and non-A/B builds, by replacing the
dependency on build-time flag with runtime detection instead. It also
allows building and testing both paths regardless of the target OTA
type.

The size increase to /sbin/recovery looks negligible (< 0.01%).
 - marlin: increased from 2084928 to 2085024;
 - angler: increased from 2084776 to 2084896.

Test: Run recovery_component_test on angler and marlin.
Test: Sideload an A/B OTA package on marlin.
Test: Sideload a non-A/B OTA package on angler.
Change-Id: I1d927d1ede9713fb42f73b4fe324aa5705ee6f99
2018-06-19 10:50:43 -07:00
Zhomart Mukhamejanov
6b788b1848 Merge "updater_sample: run as a systemp app" 2018-06-19 16:11:49 +00:00
Zhomart Mukhamejanov
5af63a45d9 Merge "updater_sample: add proguard.flags" 2018-06-19 00:04:44 +00:00
Tao Bao
0a883c18f6 updater: Defer the creation of the new data writer.
This avoids leaving the created new data writer thread unjoined, in the
presence of transfer list parsing errors, or the early exit case on
`total_blocks == 0`.

Also fix a minor issue when dumping the errno on pthread_create error
(pthread_create returns the error number, as opposed to setting errno).

Test: Run recovery_component_test on marlin.
Change-Id: Icfac27fef0c64736eb8c76264da73c223b4960cb
2018-06-18 13:00:43 -07:00
Zhomart Mukhamejanov
65dcf32274 updater_sample: add privileged system app docs
README.md: add instructions

Test: on device
Bug: 80250430
Change-Id: I2e04fdefda2b73d01dfa0a8e684542feb2ed6c61
Signed-off-by: Zhomart Mukhamejanov <zhomart@google.com>
2018-06-18 10:31:18 -07:00
Zhomart Mukhamejanov
2d9ffb62a3 updater_sample: run as a systemp app
Android.mk: remove local tags, make privileged module
AndroidManifest.xml: add access cache filesystem

Test: on device
Test: junit4
Change-Id: I611970747b7b630520249dd53105b9a2f7f76355
Signed-off-by: Zhomart Mukhamejanov <zhomart@google.com>
2018-06-18 10:29:47 -07:00
Zhomart Mukhamejanov
aa7abc0359 updater_sample: add proguard.flags
Test: on device
Change-Id: Ia8582053b7330d06e618f2555332cfb2a89b3df8
Signed-off-by: Zhomart Mukhamejanov <zhomart@google.com>
2018-06-18 10:16:19 -07:00
Zhomart Mukhamejanov
9ed4b41478 Merge "updater_sample: add metadata mismatch error code" 2018-06-14 17:15:58 +00:00
Tao Bao
c53639d5e3 Merge "tests: Skip ScreenRecoveryUITest on gr_init failure." 2018-06-14 17:03:06 +00:00
Ian Pedowitz
ac752b3ed8 Merge "Revert "updater_sample: add proguard.flags"" 2018-06-14 06:37:10 +00:00
Ian Pedowitz
c02fb99e1d Revert "updater_sample: add proguard.flags"
This reverts commit 8c3af4aa8c.

Reason for revert: Broke Master

Change-Id: I37bceeea630fb7db39efa25d03ababe3d84cdfbf
2018-06-14 06:35:18 +00:00
Tao Bao
51f16ec76d tests: Skip ScreenRecoveryUITest on gr_init failure.
It addresses the ScreenRecoveryUITest failures on gce targets which
don't have any graphics backend. Probing for all backend devices in
tests could work, but would duplicate codes. This CL relies on the
result of gr_init().

As a side effect, it may give false negatives if gr_init() is supposed
to work but silently broken. But such issues are beyond
ScreenRecoveryUITest's concern, which should be captured by the tests
for minui or graphics backends instead.

Fixes: 79616356
Test: Run recovery_unit_test on marlin.
Test: Run recovery_unit_test on gce.
Change-Id: I121aacc61c8a614447509506057ecfd8d86163e4
2018-06-13 23:28:21 -07:00
Tao Bao
4264ee890e Merge "screen_ui: Move the call to gr_init() into Init()." 2018-06-14 04:03:24 +00:00
Treehugger Robot
4cd2cf96a0 Merge "screen_ui: Call gr_exit() from dtor." 2018-06-14 01:27:30 +00:00
Tao Bao
ba4edb3e82 screen_ui: Move the call to gr_init() into Init().
gr_init() does general initialization works, in addition to loading font
file. InitTextParams() handles text related works.

Also check the font initialization result before using, as gr_init()
would ignore font initialization failures.

Test: recovery_unit_test on marlin.
Test: Boot into recovery. Run graphics test.
Change-Id: I12da22dfe8d13448cfbc83dbc51cd96f23c2deee
2018-06-13 16:18:46 -07:00
Zhomart Mukhamejanov
ebee98df6f updater_sample: add metadata mismatch error code
Update util/UpdateEngineErrorCodes.java

Test: n/a
Change-Id: I7250b1198b1d5ff0e38b7d4effe61eebd114a44f
Signed-off-by: Zhomart Mukhamejanov <zhomart@google.com>
2018-06-13 16:18:38 -07:00
Tao Bao
60ac622245 screen_ui: Call gr_exit() from dtor.
ScreenRecoveryUI calls gr_init() during Init(), and should release any
allocated resource upon destructing. It's a no-op to call gr_exit() if
gr_init() was not called or didn't finish successfully.

Test: recovery_unit_test on marlin.
Test: Boot into recovery. Run graphics test.
Change-Id: Ib9632170174cdacd51d382f23c8daf6a9bc59f7a
2018-06-13 16:17:53 -07:00
Treehugger Robot
397e8f2279 Merge "Recovery image is self-contained" 2018-06-13 23:14:29 +00:00
Zhomart Mukhamejanov
5ced47d120 Merge "updater_sample: add proguard.flags" 2018-06-13 23:11:54 +00:00
Tao Bao
6dbdbbc8fe Merge "minui: Add constness to GRSurface* in gr_get_{width,height}." 2018-06-13 22:55:47 +00:00
Tao Bao
9f4263346b minui: Add constness to GRSurface* in gr_get_{width,height}.
Also free gr_font in gr_exit(), as it's owned by minui.

Test: mmma -j bootable/recovery system/core/healthd
Test: recovery_unit_test on marlin
Test: Boot into recovery. Run graphics test.
Change-Id: I00457bb97ed3dc95ef5aad493827fb5a62a258dc
2018-06-13 13:24:58 -07:00
Zhomart Mukhamejanov
8c3af4aa8c updater_sample: add proguard.flags
Test: junit
Change-Id: I0175271935fdd87dd49ad9936d0e1b550d164e05
Signed-off-by: Zhomart Mukhamejanov <zhomart@google.com>
2018-06-13 09:53:29 -07:00
Tao Bao
0eb10b382a Merge "updater: Drop the 'overlap' parameter in LoadSrcTgtVersion3()." 2018-06-08 23:01:59 +00:00
Tao Bao
4a13508f0b updater: Drop the 'overlap' parameter in LoadSrcTgtVersion3().
Test: Run recovery_component_test on marlin.
Change-Id: I93afca891c5c9c1a351c907b023cd20c4704a66a
2018-06-08 12:53:31 -07:00
Tao Bao
4a8f5ec06d Merge "updater: Remove the redundant check on line count." 2018-06-08 19:29:45 +00:00
Zhomart Mukhamejanov
1cb7222784 Merge "updater_sample: update README.md" 2018-06-07 22:50:09 +00:00