Commit graph

1294 commits

Author SHA1 Message Date
James Hawkins
c8ac067773 Revert "bootstat: Refactor init/utils/boot_clock into base/chrono_utils."
This reverts commit 7c92e48450.

Mac sdk still broken (despite testing locally).

Change-Id: I7d9206e15997cd0efe081bd3fa17d53d2b20ec32
2017-02-14 19:20:20 +00:00
James Hawkins
7c92e48450 bootstat: Refactor init/utils/boot_clock into base/chrono_utils.
Use this for bootstat and init. This replaces the custom uptime parser in
bootstat.

This is a reland of aosp/332854 with a fix for Darwin.

Bug: 34352037
Test: chrono_utils_test
Change-Id: Ib2567d8df0e460ab59753ac1c053dd7f9f1008a7
2017-02-13 15:47:21 -08:00
Treehugger Robot
d7b5c7b2da Merge "Add a sample service for testing init." 2017-02-10 01:40:12 +00:00
Jorge Lucangeli Obes
28e980b59c Add a sample service for testing init.
I find myself using something like this every time I add functionality
to init. I cannot possibly be the only one doing this. On the other
hand, if this hasn't been added for so long, maybe there's a reason
for that.

The advantage of using a test service versus modifying an existing
service is that the test service doesn't *require* any permissions or
privileges, so you can add and/or remove whatever you need to test
without breaking the service.

I found it useful to have the service check its own /proc/<pid>/status
from command-line arguments, so that's what the service does.

This CL also adds a .clang-format file for init.

Bug: None
Test: Service runs and exits successfully.

Change-Id: I3e7841a7283158e10c0bf55e0103c03902afb1f0
2017-02-09 18:23:09 -05:00
Treehugger Robot
d54d4c275e Merge "ueventd: source ueventd configs from vendor and odm" 2017-02-09 21:25:44 +00:00
James Hawkins
0e3167e203 Revert "bootstat: Remove custom uptime parser in favor of elapsedRealtime."
This reverts commit 26f40c04c3.

This change broke the Darwin SDK target.

Test: none
Change-Id: Ia54fe2c31da8d8fa2825e023b035fb8321dcd457
2017-02-08 14:16:51 -08:00
Sandeep Patil
bf298e6d0c ueventd: source ueventd configs from vendor and odm
While keeping the old /ueventd.$ro.hardware.rc configuration for devices
without early mount or vendor,odm split

b/34967636

Test: Boot angler and sailfish without regressions

Change-Id: I8d671911fd23fb1c0b5624ae209bad86137c88b7
Signed-off-by: Sandeep Patil <sspatil@google.com>
2017-02-08 13:51:02 -08:00
James Hawkins
26f40c04c3 bootstat: Remove custom uptime parser in favor of elapsedRealtime.
Refactored init/utils/boot_clock into base/chrono_utils.

Bug: 34352037
Test: none
Change-Id: Ied0c00867336b85922369d7ff37520e3d28fc61e
2017-02-07 15:43:32 -08:00
Wei Wang
2d0fdaaafc init: clean up exec command
Add wait time log for exec service execution time
Fix memory leak when exec service failed to start

Test: on marlin
Bug: 34518530
Change-Id: I01736bd9b1429414f3dc91dd5d02d88a681f0985
2017-02-03 10:40:39 -08:00
Paul Lawrence
c4af05f8a3 Revert "Enable seccomp in init with generated policy"
This reverts commit db929bf9b7.

Seccomp is now inserted at the zygote level, not in init

Bug: 34710876
Test: Boots, seccomp policy in zygote & zygote64 but not init
Change-Id: I9075a79793171a4eaccf6228e9ff3398c791f8bd
2017-02-02 09:27:49 -08:00
Treehugger Robot
d25e4c5819 Merge "init: add wait_for_prop builtin command" 2017-02-02 04:45:36 +00:00
Alex Shlyapnikov
2e71ceb0f4 Expand seccomp whitelist
Add syscalls required by sanitizers.

Bug: 34606909
Test: Make sure Android boots when built with SANITIZE_TARGET='address'
Change-Id: Ifa223fb663a4ff43c8b8df9b7bf9452e41079e2e
2017-02-01 18:03:08 -08:00
Wei Wang
132ac31b47 init: add wait_for_prop builtin command
There are many use cases from vendors to exec service in background and then
use a shell scriprt to wait for the command done.

This CL is to add a wait_for_prop command to suppor those use cases.

Bug: 34746108
Test: on marlin
Change-Id: Ia81290b0928f9d375710d2daa546714f0cd65b72
2017-02-01 16:11:33 -08:00
Treehugger Robot
2cd07e8b97 Merge "Expand seccomp whitelist" 2017-02-01 01:17:43 +00:00
Paul Lawrence
8afdd2aac6 Expand seccomp whitelist
Bug: 34817266
Test: Boots, app starts
Change-Id: I39026064ec6c7130256ae463163c1f7634e3bdd4
2017-01-31 15:26:00 -08:00
Treehugger Robot
301e7e2cdb Merge "Expand seccomp whitelist" 2017-01-31 22:44:44 +00:00
Paul Lawrence
ae3f906093 Expand seccomp whitelist
Bug: 34813887
Bug: 34809883
Bug: 34767389
Bug: 34719286
Test: Device boots, the app in b/34719286 runs when it didn't before
Change-Id: Iad198e3ca620e7a07464b0d182f969bb807bd948
2017-01-31 08:35:00 -08:00
Sandeep Patil
d04b1ac006 Merge "init: split property context into platform & non-platform components" 2017-01-30 19:16:17 +00:00
Elliott Hughes
795798d62c bionic and init don't need to share knowledge of property file locations.
So move them into init.

Bug: http://b/33926793
Test: boots
Change-Id: I5a9601180df589b8c87ac8195a02ee24b531d4da
2017-01-27 16:21:55 -08:00
Treehugger Robot
d0ff90afef Merge "Allow failing app through seccomp policy" 2017-01-27 20:02:56 +00:00
James Hawkins
7dde4fa4e2 Merge "boottime/init: Report ro.boottime.init* properties in milliseconds." 2017-01-27 18:37:22 +00:00
Paul Lawrence
e4ddaa4f2f Allow failing app through seccomp policy
Bug: 34651972
Test: Made sure failing app went to login screen
Change-Id: I111a379f3e8283aa829d9ceb97f95b34bbee4055
2017-01-27 18:32:11 +00:00
James Hawkins
27c052263c boottime/init: Report ro.boottime.init* properties in milliseconds.
* Nanosecond precision ended up being harder to grok.
* This change modifies the Timer class to have duration_ms instead of
duration_ns.

Bug: 34466121
Test: adb logcat | grep bootstat
Change-Id: Ibd1c27dc3cb29d838a956e342281b2fb98d752a6
2017-01-27 08:26:14 -08:00
Paul Lawrence
73f6e44c8b Allow __NR_perf_event_open
Bug: 34732712
Test: strace simpleperf32 record -g runs
Change-Id: Id2ffd1e808587bf809a7ff0303163816a0e8fbce
2017-01-27 08:25:56 -08:00
Sandeep Patil
7a5db4ec7f init: split property context into platform & non-platform components
Bug: 33746484
Test: Successfully boot with original service and property contexts.
Test: Successfully boot with split serivce and property contexts.
Test: 'getprop -Z'
Change-Id: Ib9c087115040c1609aa64a3ed66d4e67e937e33d
Signed-off-by: Sandeep Patil <sspatil@google.com>
2017-01-26 15:31:10 -08:00
Paul Lawrence
31b2a9d7a3 Allow __NR_pipe for 32-bit processes
Used by 32-bit debuggers

Bug: 34716063
Test: Make sure a Chrome crash produces a valid stack trace in logcat
Change-Id: Ie42f035da7f19ace403eb2111524f02c0bbfd0d5
2017-01-26 12:31:55 -08:00
Treehugger Robot
0a3c2392c7 Merge "fs_mgr: support using libavb to enable dm-verity" 2017-01-25 18:24:30 +00:00
Robert Sesek
ca2da60206 Ensure property_set connection sockets are CLOEXEC.
When handling a property control message to start a service, the
connection socket was being left open. The child socket FD would then be
inherited by the service from init as "/null".

Bug: 34698883

Test: adb shell start webview_zygote32; adb shell ls -l /proc/<pid>/fd,
      no "/null" FD open.

Change-Id: I25f34e1bfc1414e6143acf23414b05f5a241cace
2017-01-25 08:08:51 -05:00
bowgotsai
b51722b4e2 fs_mgr: support using libavb to enable dm-verity
external/avb/libavb provides the new Android Verified Boot (AVB) flow.
It has different verity metadata format than previous formats in
fs_mgr_verity.cpp fs_mgr should support using libavb to read the metadata
(a.k.a. HASHTREE descriptor in AVB) to enable dm-verity in kernel.

Two important files in this commit:

 - fs_mgr_avb_ops.c: an implementation of struct AvbOps* for libavb to do
   platform dependent I/O operations, e.g., read_from_partition.

 - fs_mgr_avb.cpp: it reads the metadata (a.k.a. vbmeta images in AVB) from
   all partitions, verifies its integrity against the values of
   androidboot.vbmeta.{hash_alg, size, digest} passed from bootloader in
   kernel command line. Then enable dm-verity for partitions having the
   corresponding HASHTREE descriptor and with an 'avb' fstab flag.

Bug: 31264231
Test: Enable dm-verity on /system partition
Test: Enable dm-verity with FEC on /system partition

Change-Id: I4652806984fe5a30c61be0839135b5ca78323d38
2017-01-25 18:03:20 +08:00
Dimitry Ivanov
c9bb0338bc Revert "Revert "New protocol for property_service""
This reverts commit 70c4ecf2b5.
Bug: http://b/33926793
Bug: http://b/34670529
Test: run bionic-unit-tests --gtest_filter=prop*

Change-Id: I75b28146805ff37fbdcf0543ccb515ee5895eb2a
2017-01-24 13:01:13 -08:00
Dimitry Ivanov
17767caed9 Merge "Revert "New protocol for property_service"" 2017-01-24 20:00:44 +00:00
Dimitry Ivanov
70c4ecf2b5 Revert "New protocol for property_service"
This reverts commit dee4bd236b.
Bug: http://b/33926793
Bug: http://b/34670529

Change-Id: Ife3a5a471ee29cb12c2c41efef885ba40b8970e6
2017-01-24 18:38:09 +00:00
Treehugger Robot
9fd1190790 Merge "Allow tkill" 2017-01-24 04:31:26 +00:00
Treehugger Robot
1b3350e4ca Merge "Allow restart_syscall" 2017-01-24 04:08:48 +00:00
Treehugger Robot
571cd23fa8 Merge "init: add ro.boot.init_rc" 2017-01-24 03:59:13 +00:00
Colin Cross
2e253cbcc6 Allow tkill
tkill and tgkill are syscalls that do not have glibc wrappers, but
they are required in order to send a signal to a specific thread.
Non-android software may call them directly with syscall().  Bionic
provides a wrapper for tgkill, so seccomp allows it, but not for
tkill.  Add tkill to the whitelist.

This can be reproduced with:
sleep 1000 & sleep 1 ; strace -p $!
then hit ctrl-C, and the shell will print "Bad system call" because
the strace process died with SIGSYS

Bug: 34586922
Test: repro case is fixed
Change-Id: Ib6962a967f2cc757f2906de7905e75e1b6d6f39f
2017-01-23 17:10:51 -08:00
Colin Cross
47afc6b64e Allow restart_syscall
restart_syscall is used by the kernel whenever a syscall with a
timeout is interrupted.  Whitelist it in seccomp to prevent
processes being killed with SIGSYS when being ptraced.

Bug: 34586922
Test: hwui_unit_tests
Change-Id: Ic47dcad33f3082eb5673c3c67fe17200d4daaf74
2017-01-23 17:05:01 -08:00
Dimitry Ivanov
dee4bd236b New protocol for property_service
New protocol assumes that there is no limit on name or value
and effectively removed limit on property name length.

It also send back a uint32_t with error code (or 0 on success)

Bug: http://b/33926793
Test: mm, boot, run bionic-unit-tests --gtest_filter=prop*
Change-Id: Iac6290398ddc495e03f8fbbc3a79e923eff5df6f
2017-01-23 15:30:05 -08:00
Dave Weinstein
44f7e4f421 Move the kptr_restrict setting from init.rc to init.cpp.
Also ensure that it uses the highest supported value, and
abort if the value is not above a minimum threshold.

Test: Tested against the curent kernel (maximum value of 2,
      set to 0 by the kernel initially) and against a
      modified kernel (maximum value of 4, set to 4 by the
      kernel initially)

Bug: 30368199
Change-Id: I608db577258b68b390ffe96f452e1f7c0bc9ad8a
2017-01-20 09:40:43 -08:00
Treehugger Robot
8dbab358f0 Merge "Load default/build props from each partition" 2017-01-20 03:58:52 +00:00
Treehugger Robot
cfb8800e18 Merge "Enable seccomp in init with generated policy" 2017-01-19 23:26:10 +00:00
Jaekyun Seok
de21de7a42 Load default/build props from each partition
The following files will be loaded additionally.
- /odm/default.prop and /vendor/default.prop for default props.
- /odm/build.prop for build props.

The props files must follow the following priority order.
- /default.prop > /odm/default.prop > /vendor/default.prop
- /system/build.prop > /odm/build.prop > /vendor/buid.prop

Test: tested default/build prop files with enabling early mount, but
didn't test files of odm partition because odm partition doesn't
exist now.
Bug: 34116668
Change-Id: I946d076dae38f2288865dd986fb16d801d4abcc0
2017-01-19 08:45:40 +09:00
Jorim Jaggi
8e81cd6609 Merge "Revert "init: split property context into platform & non-platform components"" 2017-01-18 16:33:32 +00:00
Jorim Jaggi
328cb5d141 Revert "init: split property context into platform & non-platform components"
This reverts commit 871c306855.

Change-Id: I3e14b71e9fc5f37c9691405ce20031451643f9b4
2017-01-18 15:33:26 +00:00
Treehugger Robot
b8e5553887 Merge "init: split property context into platform & non-platform components" 2017-01-18 06:09:02 +00:00
Hung-ying Tyan
959aeb17d5 init: add ro.boot.init_rc
SoC vendors and ODMs need a way to run different init scripts under
different boot modes. This patch adds a new ro.boot.init_rc kernel
cmdline argument to support this.

Bug: 26639863
Test: Tested on bullhead with androidboot.init_rc given a
non-existent .rc file which leads to expected boot failures.
Boot succeeds if androidboot.init_rc is not specified.

Change-Id: I2bca1cc3de6720feced041fe87266fb8afcce8b0
2017-01-18 09:39:36 +08:00
Tao Bao
4c5c9db17b Merge "Revert "init: add ro.boot.init_rc"" 2017-01-17 20:19:23 +00:00
Tao Bao
01519a207c Revert "init: add ro.boot.init_rc"
This reverts commit 7e6d30e5f2.

Bug: 26639863
Bug: 34318089
Change-Id: Ie71d773ee7c6c6a90e8298f8e0798eacba12d0be
2017-01-17 20:16:45 +00:00
Treehugger Robot
0cf5e36c00 Merge "init: add ro.boot.init_rc" 2017-01-14 08:06:09 +00:00
Treehugger Robot
5d05d0e74e Merge "Move to .md files for even trivial documentation." 2017-01-13 19:39:26 +00:00