Commit graph

31630 commits

Author SHA1 Message Date
Bowgo Tsai
a0aaf24d62 fs_mgr_avb: allow verification error when the device is unlocked
Current AVB flow in fs_mgr doesn't allow verification error even if the
device is unlocked. This makes first stage mount fail when the device
is flashed with a different-sized boot.img because there is verification
error (HASH_MISMATCH) for the boot partition.

Fix this by allowing verification error only when the device is
unlocked. Whether to enable dm-verity for HASHTREE partitions is still
controlled by the HASHTREE_DISABLED flag in the top-level vbmeta.

Bug: 37985430
Test: First stage mount /vendor with AVB on a device.
      Check dm-verity is enabled on /vendor.
Test: Unlock device, flash a different-sized boot.img. Boot device and check
      dm-verity is still enabled on /vendor.
Test: First stage mount /vendor with AVB on a device with HASHTREE_DISABLED
      is set on the top-level vbmeta, check dm-verity is not enable on /vendor.

Change-Id: I709431bc1c37e4f86133d171cee8e90621cdb857
Merged-In: I709431bc1c37e4f86133d171cee8e90621cdb857
(cherry picked from commit 1140954877)
2017-05-06 09:02:25 +08:00
Keun-young Park
886b1b45d5 use passed blk dev name for quota / super block check
- It was using blk dev name from fstab and quota / super block check was always
  failing for FDE

bug: 37913441
Test: reboot and confirm quota

(cherry picked from commit 9519688411)

Change-Id: Id5613387924d3a8d9ed4486113654aed89184af9
2017-05-04 21:06:59 -07:00
TreeHugger Robot
3ffa3067e5 Merge "fs_mgr: set "partition.system.verified" when AVB is used in a A/B device" into oc-dev 2017-05-05 02:19:17 +00:00
Chris Forbes
ba73a138e0 Merge "libutils: Make LightFlattenablePod safe for unaligned ptr" into oc-dev 2017-05-04 20:19:06 +00:00
Chris Forbes
c46cbcbbf9 libutils: Make LightFlattenablePod safe for unaligned ptr
`buffer` may not be correctly aligned here. Assignment assumes correct
alignment and so then blows up on arm32.

Bug: b/37920153
Test: build, boot device
Change-Id: I23ef7c7f1d1511fd912b9485bba955db59e33832
2017-05-04 10:18:26 -07:00
Mark Salyzyn
2350391b8d init: setup keyring before ueventd starts
(cherry pick from commit 4599627492)

Invent keyutils.h to supply capability to set session keyring.
The keyring will hold things like the FBE encryption keys.

Test: gTest logd-unit-tests --gtest_filter=logd.statistics (from master)
Bug: 37751120
Bug: 36645158
Change-Id: Ieb44fa8f53dda6cf506a6243498c72d7f7f3cde7
2017-05-04 07:13:09 -07:00
TreeHugger Robot
d5398bf97d Merge "update /vendor/*/vndk-sp to /system/*/vndk-sp" into oc-dev 2017-05-04 04:19:33 +00:00
TreeHugger Robot
22d73dd093 Merge "init: fix first stage mount failure due to /dev/device-mapper not found" into oc-dev 2017-05-04 01:00:51 +00:00
Bowgo Tsai
bfc9b6380d init: fix first stage mount failure due to /dev/device-mapper not found
It has been reported that fs_mgr failed to open /dev/device-mapper
during the first stage mount. It's because other uevent (e.g., i2c
charger device) happens to be sent at the same time we're triggering
the device-mapper uevent to be sent. Current implementation returns
COLDBOOT_STOP unconditionally so it will only process the first received
uevent, leaving device-mapper uevent unhandled when the race happens.

Fix this by only returning COLDBOOT_STOP when the received uevent->path
matches that of device mapper.

Bug: 37745254

Test: first stage mount /vendor with vboot 2.0 (avb) on bullhead
Test: first stage mount /vendor with vboot 1.0 on sailfish
Change-Id: I4a77093ec8f90a5ca981a088f34d082d0270533b
Merged-In: I4a77093ec8f90a5ca981a088f34d082d0270533b
(cherry picked from commit ea5fca4cd0)
2017-05-04 08:58:22 +08:00
Daniel Cardenas
6db432daf7 Partial revert of
"libcutils: fs_config.c mark vendor, odm and oem partitions in duplicate"
Revert just the wifi hardware part.

This partially wqreverts commit fde19425f3.
b/37921982

Test: netflix, play movies, youtube
Change-Id: I1a47b66dbc2a74270eb4ef75c3a5b55624c2013d
2017-05-03 12:11:27 -07:00
Felipe Leme
53fd1730b6 Don't display bugreport progress when it recedes, for real...
The previous fix was taking account just the progress reported by dumpstate,
not progress/percentage. As such, it was not detecting the cases where the
percentage decreased but the progress didn't.

Bug: 37878670
Test: m -j32 adb_test && ./out/host/linux-x86/nativetest64/adb_test/adb_test --gtest_filter=BugreportTest.*

Change-Id: I5830028f3191a9b17f63aeed5c049b29fa7d1179
(cherry picked from commit 4cc03611cd)
2017-05-03 08:22:02 -07:00
Bowgo Tsai
a0c7ee0e76 fs_mgr: set "partition.system.verified" when AVB is used in a A/B device
In a A/B device, system partition is mounted by kernel as root.
In vboot 1.0, the dm device name of system partition is "system" with
the following configuration in kernel command line:
    - dm="system none ro,0 1 android-verity /dev/sda34"

In AVB, the dm device name is switched to vroot as:
    - dm="1 vroot none ro 1,0 5201456 verity 1 ..."

When sending ioctl DM_TABLE_STATUS to query status, we should use "vroot" as the
dm device name for AVB. But still pass "system" for the callback function to set
property [partition.system.verified] instead of [partition.vroot.verified].

Bug: 36900078
Test: Use AVB to mount system in a A/B device, checks the property exists
      [partition.system.verified]
Test: Use vboot 1.0 to mount system in a A/B device, checks the property exists
      [partition.system.verified]
Test: Checks 'adb remount' will output warning message:
        - dm_verity is enabled on the system and vendor partitions.
        - Use "adb disable-verity" to disable verity.

Change-Id: Iaee7eb2b00b03729bc07fa24f1b449488716d2ea
Merged-In: Iaee7eb2b00b03729bc07fa24f1b449488716d2ea
(cherry picked from commit 48fdc292f9)
2017-05-03 12:32:19 +08:00
Jiyong Park
c641e19c7e update /vendor/*/vndk-sp to /system/*/vndk-sp
Some paths weren't updated.

Bug: 37522144
Test: sailfish builds and boots
Change-Id: I7aeb5d6e0d61bbc6bde4e6f221e90b21ca422622
2017-05-03 11:53:03 +09:00
Nick Kralevich
39225a131b Merge "Stop writing NUL bytes in adbkey.pub." into oc-dev 2017-05-02 22:56:55 +00:00
TreeHugger Robot
178b0492ba Merge "Convert libnetutils to Android.bp" into oc-dev 2017-05-02 22:09:25 +00:00
Elliott Hughes
a761231b96 Stop writing NUL bytes in adbkey.pub.
In N we moved some code from C to C++ without realizing that EVP_EncodedLength
includes space for a terminating NUL and EVP_EncodeBlock writes one. Because
our key reading code copes with the NUL, we never noticed.

Distinguish between the required space returned by EVP_EncodedLength and the
actual number of bytes (not including NUL) used return by EVP_EncodeBlock.

Bug: http://b/36187819
Test: hexdump of ~/.android/adbkey.pub

(cherry picked from commit 0b771b33fd)

Change-Id: I6e16b8d48d097b4054417c1d1a225bf7ece985b9
2017-05-02 14:11:49 -07:00
Mark Salyzyn
fde19425f3 libcutils: fs_config.c mark vendor, odm and oem partitions in duplicate
(cherry picked from commit f0b53d0726)
(added "system/vendor/bin/hostapd" to list)

Cover both direct and symlink indirect paths to the referenced
files in the vendor, odm and oem partitions.

Test: compile and hand-verify properties
Bug: 37703469
Change-Id: I5b3a887e904baee2ac193ac4a73aaaee0bbfdb9f
2017-05-02 11:17:54 -07:00
Jiwen Cai
6399d45725 Merge "Add NATIVE_WINDOW_CONSUMER_IS_PROTECTED enum" into oc-dev 2017-05-02 15:59:26 +00:00
TreeHugger Robot
d512ac99d9 Merge "libsysutils: Android.mk -> Android.bp" into oc-dev 2017-05-02 15:36:34 +00:00
Tom Cherry
3ac3c02b25 init: add an initializer for keychord_id_
Add unit test to ensure all POD types of Service are initialized.

Bug: 37855222
Test: Ensure bugreport is triggered via keychord properly.
Test: New unit tests
Merged-In: If2cfea15a74ab417a7b909a60c264cb8eb990de7
Change-Id: If2cfea15a74ab417a7b909a60c264cb8eb990de7
(cherry picked from commit 7da548578c)
2017-05-01 17:32:30 -07:00
Jiwen 'Steve' Cai
faa4c188d0 Add NATIVE_WINDOW_CONSUMER_IS_PROTECTED enum
The enum is being introduced into libnativewindow, but back ported here
since window-deprecated.h is still being depended by other system
componenets.

Bug: 35726763
Test: videoplayer-nodrm-protected.apk and videoplayer-drm-protected.apk
both works.

Change-Id: I9298ff9b1ddd7f868e59db41e1a84e2cdd3d02b5
2017-05-01 16:41:26 -07:00
Bowgo Tsai
e2e0d9cae2 Merge changes I017c8bd9,I262e75b8,I6584bdf7 into oc-dev
* changes:
  init: fix first stage mount failure when two fstab entries have verity_loc
  init: set ro.boot.avb_version in recovery mode
  init: moving early mount logic into init_first_stage.cpp
2017-05-01 15:49:54 +00:00
Colin Cross
56546c0b27 Convert libnetutils to Android.bp
See build/soong/README.md for more information.

Test: m -j checkbuild
Bug: 37567578

cherry picked from cafe889aa8

Merged-In: Ia11dffde6fc4d89be6ee651be06b48131c877dc0
Change-Id: Ia11dffde6fc4d89be6ee651be06b48131c877dc0
2017-04-28 22:22:16 +00:00
Steven Moreland
d303fc62a6 libsysutils: Android.mk -> Android.bp
Test: links
Bug: 37567578
Change-Id: If1d034ecb880e8c41d58b14ebebcda5b72e88424
2017-04-28 14:44:12 -07:00
Keun-young Park
6e53199191 combine wait for exec log with service exit log
- allows easier tracking of wait time from monitoring tools
- this change also reduces unnecessary log spam
- service exit log looks like this:
  init: Service 'exec 4 (/system/bin/otapreopt_slot)' (pid 611) exited with status 0 waiting took 0.060771 seconds

bug: 37752410
Test: reboot and check log

(cherry picked from commit 4de31e1481)

Change-Id: Icb83a6a23b45ebd9b4c9d86ee37df8ee3d6e790a
2017-04-28 14:15:32 -07:00
Abodunrinwa Toki
49f9b4c0d0 Merge "Initialize textclassifier model update directory" into oc-dev 2017-04-28 15:31:05 +00:00
Abodunrinwa Toki
d6ab6456c5 Initialize textclassifier model update directory
Test: Builds successfully. Directory is initialized on install. Tests pass.
bit FrameworksCoreTests:android.view.textclassifier.TextClassificationManagerTest
Bug: 34780396

Merged-In: Icbf7962f11b66579931f48053132da6e03e62c61
Change-Id: Icbf7962f11b66579931f48053132da6e03e62c61
2017-04-28 04:15:57 +01:00
Josh Gao
5fd02a8dbc debuggerd_handler: don't assume that abort message implies fatal.
Applications can set abort messages via android_set_abort_message
without actually aborting. This leads to following non-fatal dumps
printing their output to logcat in the same format as a regular crash.

Bug: http://b/37754992
Test: debuggerd_test
Change-Id: I9c5e942984dfda36448860202b0ff1c2950bdd07
(cherry picked from commit e06f2a4886)
2017-04-27 19:58:47 -07:00
Tom Cherry
704b27bd85 init: fix last_reboot_reason string
This got moved when refactoring the reboot commands.

Bug: 37540660
Test: verify bullhead's last_reboot_reason is correct
Change-Id: I3b86496fc469ca41645df7e7ba8bb51dd25b6b38
(cherry picked from commit 47336cebc3)
2017-04-27 12:52:37 -07:00
TreeHugger Robot
df54d0efc3 Merge "Revert "Remove capability setting for legacy_wifi_hal"" into oc-dev 2017-04-27 03:44:55 +00:00
Keun-young Park
55bb3a9f75 Merge "set default shutdown timeout to 6 secs" into oc-dev 2017-04-27 02:10:17 +00:00
Randy Pan
b8f707d641 Revert "Remove capability setting for legacy_wifi_hal"
This reverts commit faf317b7e9.

Bug: 37713566
Test: Able to connect to GoogleGuest on Fugu
2017-04-26 18:24:48 -07:00
TreeHugger Robot
c43a4ad4bc Merge "Relocate VNDK-SP to /system/lib/vndk-sp and add RS libs to VNDK-SP" into oc-dev 2017-04-27 00:56:17 +00:00
Keun-young Park
be7ddb0043 set default shutdown timeout to 6 secs
- Test data shows that most shutdown finishes in 6 secs.
- The original 10 secs is too long wih no shutdown animation
  running in screen.

bug: 36657139
Test: check time with reboot

(cherry picked from commit 7feab68238)

Change-Id: I2e0ec81baa7b6cdb1ff0163c16f643c2549d74ab
2017-04-26 17:06:53 -07:00
Keun-young Park
f1f5eefcff Merge "add additional dump for timeout" into oc-dev 2017-04-26 23:29:37 +00:00
Keun-young Park
2083079018 Merge "do not start shutdown animation from init" into oc-dev 2017-04-26 22:30:43 +00:00
Keun-young Park
92b03051f8 do not start shutdown animation from init
- init will only keep animation related services as shutdown critical.
- external component like system server can start shutdown animation.

bug: 37500823
Test: reboot

(cherry picked from commit e2b04b71ae)

Change-Id: I9a0432148887557b705d6b8bbe35f5fb1ffad5b9
2017-04-26 14:02:41 -07:00
Keun-young Park
7feb509f77 add additional dump for timeout
- add sysrq-trigger current tasks dump
- This helps detecting kernel thread stuck in a specific driver

bug: 37573746
Test: python packages/services/Car/tools/bootanalyze/bootanalyze.py -r -c packages/services/Car/tools/bootanalyze/config.yaml -n 2000 -f -e 15 -w 30  -v -a

(cherry picked from commit 1663e97fe1)

Change-Id: I1684b9861fe3b797768ea9fdc3544263e0710ee1
2017-04-26 13:56:35 -07:00
Philip Cuadra
1c268a86a1 Allow Bluetooth HAL CAP_SYS_NICE
The Bluetooth HAL has threads that process Bluetooth audio.  They need
to be scheduled as RT priority, so allow the Bluetooth HAL to set its
threads to RT scheduling.

Bug 37518404
Test:  play Bluetooth audio, confirm priority via systrace
Merged-In: I4928cf182a0805c0714e4d073cba15c864fbe328
Change-Id: I4928cf182a0805c0714e4d073cba15c864fbe328

(cherry picked from commit e08303d8cf)
2017-04-26 11:53:13 -07:00
Bowgo Tsai
d444377a51 init: fix first stage mount failure when two fstab entries have verity_loc
The previous check is incorrect because it compares the basename of
previous verity_loc with the full path of current verity_loc.

Changes it to compare the full device file path instead of just the basename
of verity_loc. This can catch the case of two different verity_loc
values with the same basename, e.g.,

  - verify=/dev/block/platform/SOC.0/by-name/metadata
  - verify=/dev/block/platform/SOC.1/by-name/metadata

Bug: 37413399
Bug: 37619597
Test: first stage mount /system and /vendor with the following fs_mgr_flags on bullhead
        - wait,verify=/dev/block/platform/soc.0/f9824900.sdhci/by-name/metadataa
Test: first stage mount /system and /vendor with different verity_loc values
      on bullhead, checks it bails out
Change-Id: I017c8bd9f0790d45e08e57df9a2878e4f62c5f9c
Merged-In: I017c8bd9f0790d45e08e57df9a2878e4f62c5f9c
(cherry picked from commit 71881fffd6)
2017-04-26 09:39:11 +08:00
Jiyong Park
bfa03ee9dc Relocate VNDK-SP to /system/lib/vndk-sp and add RS libs to VNDK-SP
VNDK-SP is relocated back to /system partition from /vendor partition,
following the original design.

In addition, the namespace for RenderScript is added. The namespace is
dedicated for loading VNDK-SP libs for RenderScript such as
libRS_internal.so. The reason for having a separate namespace is that
RenderScript requires more permitted paths (/data/*) which should not be
allowed for normal SP-HALs.

Bug: 37522144
Bug: 37550338
Test: sailfish builds and boots well
Test: lsof shows VNDK-SP libs are loaded from /system/lib/vndk-sp
Test: RenderScript app (CameraScript) runs well
Change-Id: Id139f626cafae2e43ee4eefc5a57a204e31bbbc9
2017-04-26 09:30:36 +09:00
TreeHugger Robot
57e3528d2e Merge "Linker: Add ASAN support to treble ld.config" into oc-dev 2017-04-26 00:28:56 +00:00
Wei Wang
40082926b2 Merge "Ensure update_verifier run before zygote" into oc-dev 2017-04-25 23:06:09 +00:00
TreeHugger Robot
353c6cd3c3 Merge "Update persist.sys.usb.config on runtime" into oc-dev 2017-04-25 21:16:09 +00:00
Wei Wang
53842e7dc6 Ensure update_verifier run before zygote
Currently zygote is started early for FBE device but update_verifier is run later
which creates a potential risk. This CL ensures update_verifier run before
zygote touches anything within data/ partition. With this change, we also start zygote
early for unencrypted/unsupported encryption state device.

Bug: 37543411
Test: marlin boots

(cherry picked from commit 5dc05effec)

Change-Id: I97cde0c20f74b1b17c995d84c2e31c86fe006395
2017-04-25 17:49:22 +00:00
Randy Pan
8ed2e54ce5 Merge "Remove capability setting for legacy_wifi_hal" into oc-dev 2017-04-25 16:59:38 +00:00
Bowgo Tsai
83c533daa8 init: set ro.boot.avb_version in recovery mode
Previously we set ro.boot.avb_version during the first stage mount in normal mode:
  - https://android-review.googlesource.com/#/c/371774/

As the first stage mount is not performed in recovery mode, we need to set the
property separately in recovery mode.

Bug: 37414003

Test: first stage mount /vendor with vboot 2.0 (avb) on bullhead in normal mode
Test: first stage mount /system without verity on bullhead in normal mode
Test: checks ro.boot.avb_version is 1.0 on bullhead in recovery mode

Test: first mount /vendor with with vboot 1.0 on sailfish in normal mode
Test: checks ro.boot.avb_version doesn't exist on sailfish in recovery mode

Change-Id: I262e75b8b557c4de7609b4049ccb01793644245e
Merged-In: I262e75b8b557c4de7609b4049ccb01793644245e
(cherry picked from commit fd18a452be)
2017-04-25 22:47:20 +08:00
Bowgo Tsai
682f8ba398 init: moving early mount logic into init_first_stage.cpp
Also renames "early mount" to "first stage mount" to prevent confusion
with "mount_all --early", which is run in the init second stage.

Also creates a base class: FirstStageMount and two derived classes:
FirstStageMountVBootV1 and FirstStageMountVBootV2 to replace/refactor
existing functions:

   - early_mount() -> DoFirstStageMount() and FirstStageMount::DoFirstStageMount()

   - vboot_1_0_early_partitions -> FirstStageMountVBootV1::GetRequiredDevices()
   - vboot_2_0_early_partitions -> FirstStageMountVBootV2::GetRequiredDevices()

   - vboot_1_0_mount_partitions ->
       FirstStageMount::MountPartitions() and
       FirstStageMountVBootV1::SetUpDmVerity()

   - vboot_2_0_mount_partitions ->
       FirstStageMount::MountPartitions() and
       FirstStageMountVBootV2::SetUpDmVerity()

Bug: 37413399
Test: first stage mount /vendor with vboot 2.0 (avb) on bullhead
Test: first stage mount /system with without verity on bullhead
Test: first stage mount /vendor with vboot 1.0 on sailfish
Change-Id: I6584bdf7d832c9fbc8740f97c9b8b94e68a90783
Merged-In: I6584bdf7d832c9fbc8740f97c9b8b94e68a90783
(cherry picked from commit d262017fef)
2017-04-25 22:46:03 +08:00
Andreas Gampe
c7c2d7bcd4 Linker: Add ASAN support to treble ld.config
Add asan counterparts.

Bug: 37579959
Test: m && m SANITIZE_TARGET=address
Merged-in: I23f05436b79fbcb3f6fa11d84c95fcd180fad3b3
Change-Id: I23f05436b79fbcb3f6fa11d84c95fcd180fad3b3
2017-04-25 21:59:37 +09:00
Jaekyun Seok
03bcaec5a0 Update persist.sys.usb.config on runtime
persist.sys.usb.config values can't be combined on build-time when
property files are split into each partition.
So we need to apply the same rule of
build/make/tools/post_process_props.py on runtime.

Test: building succeeded and tested on sailfish.
Bug: 37617113
Bug: 37648659
Merged-In: If1e4279f05d74eccf5ce23eef41a466b7d8e3bde
Merged-In: I1e5ad9da360bfb3cb4970e12a76522fd0a5126b8

Change-Id: I78cdffee446d3ae6a89f138faed5f3149e4b507d
(cherry picked from commit 0cf3a07e14)
2017-04-25 16:21:43 +09:00