Commit graph

44201 commits

Author SHA1 Message Date
Josh Gao
ee0e63f71d Merge changes Ief3dbf8e,Ib06e6f65
* changes:
  adb: add fdevent callback that passes the fdevent.
  base: don't overwrite errno in unique_fd::~unique_fd.
2019-01-31 09:09:12 +00:00
Treehugger Robot
a15f385821 Merge changes from topic "move_bionic_to_apex3"
* changes:
  Handle adb sync with Bionic under /bionic
  Proper mount namespace configuration for bionic
2019-01-31 04:46:49 +00:00
Christopher Ferris
8926f1a945 Merge "Replace libbacktrace with libunwindstack directly." 2019-01-31 04:24:18 +00:00
Treehugger Robot
083797adfd Merge "Improved libdm and dmctl to handle very large numbers of extents" 2019-01-31 02:00:32 +00:00
Bowgo Tsai
c1c624a132 Merge "Enable AVB for dynamic GSI (f.k.a. Live Image)" 2019-01-31 01:56:12 +00:00
Christopher Ferris
d451f39245 Merge "Avoid signed extension of chars for build ids." 2019-01-31 01:47:29 +00:00
Treehugger Robot
ae7aaab94d Merge "Add a tool to add keys to keyring." 2019-01-30 23:19:56 +00:00
Josh Gao
c162c713ef adb: add fdevent callback that passes the fdevent.
This is useful for when we don't want to actually store the fdevent
into a separate struct to be able to destroy it, but instead want to
destroy it immediately from the callback.

Test: adb_test
Change-Id: Ief3dbf8ea6a6bd72dc7e73f9ab9b7429e48fc181
2019-01-30 15:18:56 -08:00
Josh Gao
92ee52cc38 base: don't overwrite errno in unique_fd::~unique_fd.
unique_fd's destructor potentially mangling errno makes it difficult to
use correctly in code that sets errno (or, in reality, it makes it so
that errno values get randomly stomped upon if close actually sets
errno, because no one accounts for this case).

Preserve errno ourselves to avoid this.

Test: treehugger
Change-Id: Ib06e6f65866d86fff4032b2311021eaf9226a1af
2019-01-30 15:18:56 -08:00
Bowgo Tsai
ee6114fb1d Enable AVB for dynamic GSI (f.k.a. Live Image)
Bug: 117960205
Test: Use the dynamic Android to start GSI, checks verity is enabled.
Change-Id: I93b321808ba278b162fec5e231bff7229cac3937
2019-01-31 07:06:14 +08:00
Treehugger Robot
2dc8b4cec8 Merge "Fix: Propagate cmd args to multi-package sessions." 2019-01-30 21:42:25 +00:00
Paul Lawrence
605fef0e17 Improved libdm and dmctl to handle very large numbers of extents
Enables performance testing with very large numbers of dm-linear devices

Test: Can create device with 16384 extents, and can get its table
Bug: 123261135
Change-Id: I0e78a659eb7616e4db6a8276031e25a0d84f52ba
2019-01-30 13:29:41 -08:00
Xiaoyong Zhou
4a5c352e6d Add a tool to add keys to keyring.
This CL adds a binary to load keys to a keyring.

Bug: 112038861
Test: mini-keyctl -k .fsverity -c PATH_CONTAINER_CERTS
Test: cat /proc/keys and find the newly added keys
Change-Id: Iead68618ea194e9412616c5c6cff885e3cf78520
2019-01-30 13:08:31 -08:00
Christopher Ferris
ce34d62351 Avoid signed extension of chars for build ids.
Added a unit test that fails before the change and passes afterwards.

Bug: 120606663

Test: All unit tests pass.
Change-Id: I054c7eac0c55abc3babe1d48a041f5819ad9db81
2019-01-30 12:09:11 -08:00
Treehugger Robot
627a37cad9 Merge "meminfo: handle multiple buffer references in dmabufinfo" 2019-01-30 19:11:20 +00:00
David Anderson
98910920ba Merge "libfiemap_writer: Remove Flush and Write methods." 2019-01-30 17:34:13 +00:00
David Anderson
9747a65380 Merge "Add user/group for gsid." 2019-01-30 17:24:05 +00:00
Dario Freni
a2f3f9558f Fix: Propagate cmd args to multi-package sessions.
Test: adb install-multi-package --staged file1.apk file2.apk. Verified
that --staged is propagated.
Bug: 118865310
Change-Id: I59cd5c49b4a60ab7bf7481732cd3bd3205820d7a
2019-01-30 16:40:02 +00:00
Treehugger Robot
dd70df2e69 Merge "Add more comments for resolv apex." 2019-01-30 13:56:30 +00:00
Jiyong Park
7c7189c469 Handle adb sync with Bionic under /bionic
Background:
We now have two sets of Bionic: the bootstrap Bionic which is at
/system/{lib|bin}/bootstrap for early processes and the default Bionic
which is from the runtime APEX for all the others. In order to give the
same path for Bionic to both categories of processes, the init prepares
two mount namespaces and bind-mount appropriate Bionic files onto the
common mount points under /bionic. For example,
/system/bin/bootstrap/linker is bind-mounted to /bionic/bin/linker for
the early processes. Likewise, /apex/com.android.runtime/bin/linker is
bind-mounted to the same path for rest of the processes.

In addition, in order not to propagate mount events in one mount
namespace to the other namespace, /bionic itself is created as a mount
namespace (via self bind-mount) and its propagation type is set to
private.

Changes required:
This however requires some adjustments to adb sync and remount
mechanism.

For remounting, /bionic path should also be re-mounted for RW, because
it is a RO mount in the beginning. This remounting is done only for the
system-as-root devices where entire / can be re-mounted as RW.

For synching, the sync thread creates a temporary mount namespace where
there is no bind-mount. This ensures that a path that the thread handles
is pointing to the correct file that is expected from the client side.

In addition, push operation to /bionic path is done without unlinking.
This is required because the mount points under /bionic are gone in the
current mount namespace but are still active in other mount namespaces.
If unlinked, the existing mounts on the path are all silently removed.
In order to prevent the unwanted situation, the moint points are not
unlinked but truncated to 0. This however is not a significant problem
because the files that serve as mount points do not carry any
useful information (i.e. the content is meaningless).

Bug: 879416
Test: adb sync
adb push <random_file> /bionic/bin/linker64
adb push <random_file> /system/bin/bootstrap/bin/linker64
system/core/fs_mgr/tests/adb-remount-test.sh
Change-Id: Id87dc9ee7ec5c43d06b54969b55e2cb394329317
2019-01-30 19:18:22 +09:00
Jiyong Park
6866041ff0 Proper mount namespace configuration for bionic
This CL fixes the design problem of the previous mechanism for providing
the bootstrap bionic and the runtime bionic to the same path.

Previously, bootstrap bionic was self-bind-mounted; i.e.
/system/bin/libc.so is bind-mounted to itself. And the runtime bionic
was bind-mounted on top of the bootstrap bionic. This has not only caused
problems like `adb sync` not working(b/122737045), but also is quite
difficult to understand due to the double-and-self mounting.

This is the new design:

Most importantly, these four are all distinct:
1) bootstrap bionic (/system/lib/bootstrap/libc.so)
2) runtime bionic (/apex/com.android.runtime/lib/bionic/libc.so)
3) mount point for 1) and 2) (/bionic/lib/libc.so)
4) symlink for 3) (/system/lib/libc.so -> /bionic/lib/libc.so)

Inside the mount namespace of the pre-apexd processes, 1) is
bind-mounted to 3). Likewise, inside the mount namespace of the
post-apexd processes, 2) is bind-mounted to 3). In other words, there is
no self-mount, and no double-mount.

Another change is that mount points are under /bionic and the legacy
paths become symlinks to the mount points. This is to make sure that
there is no bind mounts under /system, which is breaking some apps.

Finally, code for creating mount namespaces, mounting bionic, etc are
refactored to mount_namespace.cpp

Bug: 120266448
Bug: 123275379
Test: m, device boots, adb sync/push/pull works,
especially with following paths:
/bionic/lib64/libc.so
/bionic/bin/linker64
/system/lib64/bootstrap/libc.so
/system/bin/bootstrap/linker64
Change-Id: Icdfbdcc1efca540ac854d4df79e07ee61fca559f
2019-01-30 19:18:22 +09:00
chenbruce
d771740030 Add more comments for resolv apex.
Describe the link of resolv apex detailedly.

Bug: 119527674
Test: make; flash; lsof -p $(pidof netd)
Change-Id: I0f6038eb9950c6b862a257d0a6f35f19cb83a328
2019-01-30 17:03:09 +08:00
Lorenzo Colitti
4695cf0a4d Merge "Move checksum code from clatd to libnetutils." 2019-01-30 08:19:48 +00:00
Treehugger Robot
6c44d00d79 Merge "fs_mgr: make changes needed to port vold to new Fstab interface" 2019-01-30 06:31:50 +00:00
Treehugger Robot
ea43984478 Merge "Actually add right instant app boilerplate." 2019-01-30 05:15:06 +00:00
Suren Baghdasaryan
bb405bf986 Merge "libpsi: initial revision" 2019-01-30 04:47:57 +00:00
Tim Murray
eecd7ddfcf libpsi: initial revision
New library to create, register and destroy PSI monitors in a consistent
way with lmkd.

Test: used within lmkd
Bug: 111308141
Change-Id: If243a97f178e90fe41e2de90c7b858ba82440279
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2019-01-30 04:47:28 +00:00
Lorenzo Colitti
2e4280dfe1 Move checksum code from clatd to libnetutils.
This allows us to use it elsewhere, for example, in netd.

Bug: 65674744
Test: builds, boots
Test: atest clatd_test clatd_microbenchmark
Change-Id: I262ddd4176dabc3b10758fb0b4eb09643aa4911c
2019-01-30 12:33:29 +09:00
Treehugger Robot
30fef71b2c Merge "libfs_avb: support enable verity for a standalone partition" 2019-01-30 02:25:39 +00:00
Christopher Ferris
60eb19795b Replace libbacktrace with libunwindstack directly.
Small modifications to the dump_stack method and added unit tests to
verify the output.

Bug: 120606663

Test: Unit tests pass, debuggerd run on processes on target.
Change-Id: Id385a915b751abda3dd6baebed6c3ce498c3bf6e
2019-01-29 17:57:14 -08:00
Erick Reyes
302a259fa9 meminfo: handle multiple buffer references in dmabufinfo
Change the dmabufinfo library to handle multiple references to the same
buffer across PIDs by doing these changes:

- Add function AppendDmaBufInfo: appends the information for a specific
PID to an existing DmaBuffer vector
- Change the way fd/map references to a buffer belonging to a PID are
stored in DmaBuffer from vector<pid_t> to unorderedmap<pid_t, int>
- When parsing proc/%pid/{maps|fds}, look up the buffer by inode and
update the data if found

Test: builds
Bug: 63860998

Change-Id: If22feea772f182086ae3446b46d626a750674b1f
Signed-off-by: Erick Reyes <erickreyes@google.com>
2019-01-29 17:52:34 -08:00
David Anderson
8bc2b89ae6 Add user/group for gsid.
Bug: 122556707
Test: manual test
Change-Id: I18e44ff1bbb3c43cfc8f6f2997f9358052ce249b
2019-01-29 17:48:12 -08:00
Tom Cherry
3882b509b4 Actually add right instant app boilerplate.
Bug: 123366871
Test: treehugger
Change-Id: Id3d01396efe6afb69dea0e59dd6e1040ba82a1fd
2019-01-29 17:12:35 -08:00
Treehugger Robot
8a5943b37d Merge "init: delete code that sets ro.recovery_id" 2019-01-30 01:11:40 +00:00
Treehugger Robot
4d37665330 Merge "meminfo: Remove libpagemap dependency" 2019-01-30 00:54:42 +00:00
Josh Gao
82f0e7dad8 Merge "adb: turn off fastdeploy." 2019-01-29 23:50:07 +00:00
Christopher Ferris
f835ba6b66 Merge "Fix bug in unwind_info display of exidx frame." 2019-01-29 23:13:07 +00:00
Tom Cherry
2e545f8b2f fs_mgr: make changes needed to port vold to new Fstab interface
Particularly, capitulate that GetEntryForMountPoint() would be cleaner
than std::find_if() and update the rest of system/core to use it.

Test: build

Change-Id: I982b5a8552d44852d3ab22c20db83afcd4dd652b
2019-01-29 14:56:49 -08:00
Treehugger Robot
accdf0e9c7 Merge "healthd: update owners" 2019-01-29 22:24:34 +00:00
David Anderson
1326648f05 libfiemap_writer: Remove Flush and Write methods.
We no longer use these methods since they require write access to the
userdata block device. This patch removes them to simplify FiemapWriter,
and avoid opening userdata with write permissions.

Bug: 122556707
Test: fiemap_writer_test gtest
Change-Id: I0091eb5ff92253533c67c89b0059c34953aae211
2019-01-29 13:49:43 -08:00
Tom Cherry
d6c2feb9fa init: delete code that sets ro.recovery_id
It looks like this code is dead currently.  From history, this was
meant to be used as a way to check that the recovery image is what was
expected during runtime, but that effort never completed, and we have
full verification of the recovery image when booting into recovery
anyway.

The code is functionally dead as is too, since /recovery doesn't
actually exist in any fstab, since recovery is either mounted as a
ramdisk during recovery or not mounted during normal boot.

Test: boot
Change-Id: I48cd324ef0d5a163db2df2648f6042174b83f10e
2019-01-29 21:17:53 +00:00
Treehugger Robot
161c439ffb Merge "Add "instant app" boilerplate." 2019-01-29 20:50:07 +00:00
Yifan Hong
9474063654 Merge "healthd: charger loads resources from /product" 2019-01-29 19:57:11 +00:00
Treehugger Robot
9f5e9978c2 Merge "Allow to move frames out of Unwinder." 2019-01-29 19:23:23 +00:00
Josh Gao
287e442dc4 adb: turn off fastdeploy.
The PDK doesn't have frameworks/base, so having a dependency from adb to
a library in there breaks the build. #ifdef out fastdeploy until we
figure out what we're going to do here, to unbreak the PDK build.

Bug: http://b/118782743
Test: treehugger
Change-Id: I638cf09e5013935e112c7a57dae0e7e94e1a4680
2019-01-29 11:21:15 -08:00
Tom Cherry
d722fbf4b0 Add "instant app" boilerplate.
Bug: 123366871
Test: treehugger
Change-Id: I2963aea53ae96651854bbbcb8e411add5183e523
2019-01-29 08:53:01 -08:00
Bowgo Tsai
defe1cb5e7 libfs_avb: support enable verity for a standalone partition
The following static function has been added into class AvbHandle to
support loading the AVB hashtree descriptor to enable dm-verity for
a FstabEntry.

  static AvbHashtreeResult SetUpStandaloneAvbHashtree(FstabEntry* fstab_entry);

Bug: 112103720
Bug: 117960205
Test: atest libfs_avb_test
Test: atest libfs_avb_internal_test
Test: Add /system/etc/system_other.avbpubkey, then add
      avb_key=/system/etc/system_other.avbpubkey into /system/etc/fstab.postinstall.
      factory reset, boot a device and checks that system_other is
      mounted with verity (see the serial log below)

Serial log:
-----------
init: [libfs_avb]Built verity table: '1 /dev/block/by-name/system_a
    /dev/block/by-name/system_a 4096 4096 8521
    8521 sha1 895ba03023a35172b393429fadad9ee228b39203
    3405d16fec2cd12ad9e6b36d3bc983e1e83b5e09 10 use_fec_from_device
    /dev/block/by-name/system_a fec_roots 2 fec_blocks 8589 fec_start 8589
    restart_on_corruption ignore_zero_blocks'

init: [libfs_mgr]superblock s_max_mnt_count:65535,/dev/block/dm-7

init: [libfs_mgr]__mount(source=/dev/block/dm-7,target=/postinstall,type=ext4)=0:
Success

Change-Id: Ie339a43ff9c6a7d170e12ef466df666b98ddec19
2019-01-29 22:42:24 +08:00
Treehugger Robot
2cbdc561ad Merge "meminfo: Add memtrack dmabufinfo library" 2019-01-29 03:33:34 +00:00
Treehugger Robot
c90b0eafda Merge "Adding libfs_avb host tests into presubmit" 2019-01-29 01:46:41 +00:00
Treehugger Robot
47a4082f88 Merge "Remove extranous reading of fstab in BuilderTest::block_device_info" 2019-01-29 00:30:54 +00:00