)]}'
{
  "log": [
    {
      "commit": "c29c2baa6907a2f4c0a4efca9fa41fc5474ec1c4",
      "tree": "1c5a37c465cba55fca2bb83294363f4eed2c1e87",
      "parents": [
        "e353d8642ce6b77711dd443e9b4433a03dced92a"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Tue Oct 22 17:18:42 2019 -0700"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Thu Nov 07 18:19:31 2019 +0000"
      },
      "message": "init: Add support for native service registration with lmkd\n\ninit should be able to register native services with lmkd so that they\ncan be killed when needed. Only processes with oom_score_adjust not\nequal to the default -1000 will be registered with lmkd because with the\nscore that low the process is unkillable anyway.\nInform lmkd when a registered process is killed so that the record can be\nremoved.\nChange init.rc to start lmkd during init phase so that it is there to\nregister other services.\nReplace hardcoded oom_score_adj values with appropriate definitions.\n\nBug: 129011369\nTest: boot and verify native service registration\nChange-Id: Ie5ed62203395120d86dc1c8250fae01aa0b3c511\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "ab91ee986b603d0731579fffe7304b8e1c585add",
      "tree": "6136b5dfc6aa5949cf420e090a8f01dee51f3465",
      "parents": [
        "dbee3618be62ee3be275624edcbd4bf9d52dd832"
      ],
      "author": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Wed Nov 06 21:40:31 2019 +0000"
      },
      "committer": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Thu Nov 07 02:13:38 2019 +0000"
      },
      "message": "userspace reboot: unmount apexes and switch to bootstrap namespace\n\nThis will bring device to the state closer to the one during normal boot\n\nBug: 135984674\nTest: adb install system/apex/shim/com.android.apex.cts.shim.v1.apex\nTest: adb reboot userspace\nTest: verified install succeeded\nChange-Id: I6ef73bde2ca817c8a62bf19b8f1895dd0d6d2829\n"
    },
    {
      "commit": "dbee3618be62ee3be275624edcbd4bf9d52dd832",
      "tree": "5c3de80a54be6a3793a840a71365fb14ee77f00c",
      "parents": [
        "af7999097e34ba262c987a74611a6b8feb07c084",
        "42697d3f1891bc87154069e4205a94226cbe941e"
      ],
      "author": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Thu Nov 07 02:12:57 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 07 02:12:57 2019 +0000"
      },
      "message": "Merge \"Make remount into checkpointing for ext4 userdata a no-op\""
    },
    {
      "commit": "e4cb2c49e3bb241841fe4e587f6826e015bac39d",
      "tree": "aeeb8604846fbdc8f713b3395a8e53b0516bfe17",
      "parents": [
        "a8854d34607d6fce99f31e5d166e2a66d55a7bdc",
        "f831f10abe37645356007080cbf28a2c09f9d5e1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 07 00:52:42 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 07 00:52:42 2019 +0000"
      },
      "message": "Merge \"Move comments into selinux.h and fix\""
    },
    {
      "commit": "42697d3f1891bc87154069e4205a94226cbe941e",
      "tree": "9a3e8cb771758e8e1ee963844f26602c55b0a41a",
      "parents": [
        "2aabeed1fd68d119986146d74ffc6e5a7b9fdefa"
      ],
      "author": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Tue Nov 05 23:04:17 2019 +0000"
      },
      "committer": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Wed Nov 06 20:12:08 2019 +0000"
      },
      "message": "Make remount into checkpointing for ext4 userdata a no-op\n\nWe are going to teamfood userspace reboot soon, and in order to gather\nas much data as possible we are fine with ignoring checkpointing for the\ndevices with ext4 (teamfood will be a very limited set of people that\nare aware what they\u0027ve signed for).\n\nAs result of this, we don\u0027t need to reset vold and kill zram backing\ndevice. Added a TODO to restore that functionality if needed.\n\nSince I was there, fixed yet another typo in userspace-reboot-resume -_-\n\nBug: 135984674\nTest: adb reboot userspace\nChange-Id: I2b7a93aaf738fe9bec9d606d7e11aefb325550b1\n"
    },
    {
      "commit": "f831f10abe37645356007080cbf28a2c09f9d5e1",
      "tree": "b405798bc865d256e2655c934213587043fbd209",
      "parents": [
        "46452100977f66956175793a9557b0263bb58e0b"
      ],
      "author": {
        "name": "Paul Crowley",
        "email": "paulcrowley@google.com",
        "time": "Tue Nov 05 09:46:59 2019 -0800"
      },
      "committer": {
        "name": "Paul Crowley",
        "email": "paulcrowley@google.com",
        "time": "Tue Nov 05 09:48:24 2019 -0800"
      },
      "message": "Move comments into selinux.h and fix\n\nMake comments imperative, remove redundant words, clarify API level.\n\nBug: 26641735\nTest: treehugger\nChange-Id: Icad6001321aa2274b70fdcc74f6fe176f0b2d0db\n"
    },
    {
      "commit": "283e41de767e882d59f5fb2ac8d86a80941d4cfe",
      "tree": "1ab3b6d2a898946003546097078d84856b3924c1",
      "parents": [
        "552bbdde38b78c774cb7fae5b5006e2787749667",
        "a7144f7eb2a8004d87c52cbabbc336f6e99b9ca3"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Nov 01 21:52:42 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 01 21:52:42 2019 +0000"
      },
      "message": "Merge \"first_stage_init: if console enabled allow for errors in module loading\""
    },
    {
      "commit": "8fb7f773f04dc43dd4aff8d05b23ec06023c37b0",
      "tree": "dc699689ef2bcf3a8b8a9190cbb8f452598dfd94",
      "parents": [
        "8578a8a8ec3b28209ba0b9e2d1f1eda39c35f885"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Wed Oct 16 14:22:12 2019 -0700"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Thu Oct 31 18:37:02 2019 -0700"
      },
      "message": "init: hack for /charger symlink\n\nLegacy symlink from /charger to /system/bin/charger is\nremoved. Instead, all Android R devices are required\nto use /system/bin/charger instead.\n\nSee hardware/interfaces/health/2.1/README.md for details.\n\nBug: 142286265\nTest: charger mode\nChange-Id: Ib478a864ef68647bc9fc14650ca3d382952b80c8\n"
    },
    {
      "commit": "a7144f7eb2a8004d87c52cbabbc336f6e99b9ca3",
      "tree": "7750156df8b075e38850f60d42ec4eb847f47cce",
      "parents": [
        "d478271b2b793856eb098a0c580d44f02efc4837"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 31 08:02:10 2019 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 31 10:30:45 2019 -0700"
      },
      "message": "first_stage_init: if console enabled allow for errors in module loading\n\nAllow for module load errors if first stage console is enabled, userdebug\ndevelopment builds, load what you can and continue.\n\nTest: compile\nBug: 141311820\nChange-Id: I30f3ee1129373f6ffedcf03807c212c60d4c39aa\n"
    },
    {
      "commit": "7160fc1139bc2697d21968e9a9dba6cfec090036",
      "tree": "d5dbf31a30b4decc34847c1e1f0ad734d64cdf98",
      "parents": [
        "ff60db1bb1e70182c62f9af4cde57a4f30417415"
      ],
      "author": {
        "name": "Paul Crowley",
        "email": "paulcrowley@google.com",
        "time": "Fri Oct 25 17:12:45 2019 -0700"
      },
      "committer": {
        "name": "Paul Crowley",
        "email": "paulcrowley@google.com",
        "time": "Wed Oct 30 13:35:48 2019 -0700"
      },
      "message": "fs_mgr: Add stable_inodes flag to encrypted ext4\n\nAlso put libfscrypt into fs_mgr via whole_static_libs\nsince it\u0027s now a dependency.\n\nBug: 143307095\nTest: we can use the inline policy on it\nChange-Id: I82d7d5330abef76ce82accea25d2663748e87a8b\n"
    },
    {
      "commit": "8a603a7f9bad35ed99ec3e06b4a6b6180d50d8af",
      "tree": "a27d0222711287aed04a10bc64aa36bdc4a1e72d",
      "parents": [
        "f71ca37df449fab8c5ab52f565399bce88bfc876",
        "12a36076a75350154c3a5326da1f48e96ab6b94b"
      ],
      "author": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Mon Oct 28 16:28:23 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 28 16:28:23 2019 +0000"
      },
      "message": "Merge \"Userspace reboot: Support remounting userdata for f2fs\""
    },
    {
      "commit": "82f1cbea1ebf45dbb2bddf35920774edd280a639",
      "tree": "039ad211ffd47eeea108835ec4f160b17f3c96ba",
      "parents": [
        "c8ef01344d7272f4bf24c1c31099e29b2676d214",
        "9107e6f4f1bf3621b0fab431089989323eb9b116"
      ],
      "author": {
        "name": "Paul Crowley",
        "email": "paulcrowley@google.com",
        "time": "Fri Oct 25 18:05:26 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 25 18:05:26 2019 +0000"
      },
      "message": "Merge \"Use new libfscrypt interface\""
    },
    {
      "commit": "12a36076a75350154c3a5326da1f48e96ab6b94b",
      "tree": "75da00797aa76368a72186008c323c0981669c93",
      "parents": [
        "7234df438ad9c15d2e4b3e6e56edd726c2b3bbbe"
      ],
      "author": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Wed Oct 23 20:11:32 2019 +0100"
      },
      "committer": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Fri Oct 25 16:27:10 2019 +0100"
      },
      "message": "Userspace reboot: Support remounting userdata for f2fs\n\nTest: adb reboot userspace\nTest: adb shell /system/bin/vdc startCheckpoint 1;\n      adb reboot userspace\nBug: 135984674\nChange-Id: I227f2c1cc18495d893decb2df5173fc7a7919df6\n"
    },
    {
      "commit": "9107e6f4f1bf3621b0fab431089989323eb9b116",
      "tree": "33825c39ac2140332581a3f9a506e5ba43767982",
      "parents": [
        "d1a6d75d29d093eef4b96948037d0c36710a4a79"
      ],
      "author": {
        "name": "Paul Crowley",
        "email": "paulcrowley@google.com",
        "time": "Thu Oct 24 14:53:48 2019 -0700"
      },
      "committer": {
        "name": "Paul Crowley",
        "email": "paulcrowley@google.com",
        "time": "Thu Oct 24 20:47:48 2019 -0700"
      },
      "message": "Use new libfscrypt interface\n\nBug: 143307095\nTest: treehugger\nChange-Id: Icc97ff5b32e8d291a75c62640b4d9b8e4f64de09\n"
    },
    {
      "commit": "e7ec8c81e4889e37022c5a4dc6682a05a60c1cf6",
      "tree": "26446a5a8f6d9ebb62fd33ad059a086d74438a09",
      "parents": [
        "81a0738c68406650fcdfe3dead6625fe88840537"
      ],
      "author": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Thu Oct 24 23:18:39 2019 +0100"
      },
      "committer": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Fri Oct 25 00:44:26 2019 +0100"
      },
      "message": "init/reboot.cpp: user lower_snake_case instead of camelCase\n\nAlso removed unused parameter from TryUmountAndFsck.\n\nTest: builds\nChange-Id: I1a892a0356afb08bf0680476ae1170ea568c65e2\n"
    },
    {
      "commit": "5d9cdae3f33386bbf41df72fbad20e8b56bb2a63",
      "tree": "8c00641ebf203a8bfc2ad622fe4fede5deecfa20",
      "parents": [
        "581f8e2a5af41c3beea44d0452a1deab23a60d90",
        "422a758568aa4461ceaf04820d6c16cb7faab4ec"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Oct 23 23:07:30 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 23 23:07:30 2019 +0000"
      },
      "message": "Merge \"host_init_verifier: use libhidlmetadata\""
    },
    {
      "commit": "5310db82b012131242f723742e02426abcf1c684",
      "tree": "eaee8f4c306505cfa2003b4e8dd9d57e8c9da7e5",
      "parents": [
        "1e07245bf1505be1f0e66d88c771d2e1f007ebce"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Oct 22 08:27:23 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Oct 23 08:09:56 2019 -0700"
      },
      "message": "init: only provide control message results for devices launching \u003e Q\n\nThis is a behavior change and may have unintended consequences,\nespecially in Java, where failed property sets create exceptions.\nTherefore, we only provide this new behavior to devices launching \u003e Q.\n\nBug: 137070994\nTest: build\nChange-Id: If0b44aedc5c887ea6ea16dd3ec551ac2bf793cef\n"
    },
    {
      "commit": "c243e199361b8413a87f1a2788c34b55dcb59f30",
      "tree": "efd64d8e392327cef7c04171b5a2942897b4fec3",
      "parents": [
        "356951f2be7e590a5d3410c5c503dd14b518df1a",
        "dfe6d07a4bb9735dd97152e06ccd2da44d95de7d"
      ],
      "author": {
        "name": "David Anderson",
        "email": "dvander@google.com",
        "time": "Thu Oct 17 19:57:04 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 17 19:57:04 2019 +0000"
      },
      "message": "Merge \"Integrate libsnapshot with the boot control HAL.\""
    },
    {
      "commit": "dfe6d07a4bb9735dd97152e06ccd2da44d95de7d",
      "tree": "d5555e5b90ed34492873c2fb45f2f0eda9a36f19",
      "parents": [
        "d11c6f7fd8ab1cd747d48b086a008f653b77ca3f"
      ],
      "author": {
        "name": "David Anderson",
        "email": "dvander@google.com",
        "time": "Wed Oct 09 16:24:03 2019 -0700"
      },
      "committer": {
        "name": "David Anderson",
        "email": "dvander@google.com",
        "time": "Wed Oct 16 16:09:38 2019 -0700"
      },
      "message": "Integrate libsnapshot with the boot control HAL.\n\nThis patch translates UpdateState states into a MergeStatus from\nIBootControl 1.1, and asks the HAL to store it. Unfortunately this patch\nhas to work around a few issues.\n\nThe first issue is that Soong doesn\u0027t allow including only the headers\nfrom a HAL. The second issue is that entraining the headers requires\nlinking to libraries that would otherwise not be needed in init.\n\nTo address this, we now have three ways of linking to libsnapshot:\n  1. libsnapshot - Has access to gsid and HALs.\n  2. libsnapshot_nobinder - Has access to HALs, but not binder (for\n                            recovery).\n  3. libsnapshot_init - Does not use binder or HALs.\n\nThe HAL code is #ifdef\u0027d behind LIBSNAPSHOT_USE_HAL and we make use of\nforward declarations and dependency injection to minimize its spread.\n\nBug: 139154945\nTest: libsnapshot_test gtest\nChange-Id: I21ffd8a79a43d0589f2f71f346ac1b019584a183\n"
    },
    {
      "commit": "422a758568aa4461ceaf04820d6c16cb7faab4ec",
      "tree": "9347f77188ddb18a3c64d084f23b279f4d681806",
      "parents": [
        "f5bad500f33f090a296fe79df5b63a50619339d4"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Oct 15 14:53:19 2019 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Oct 15 14:59:18 2019 -0700"
      },
      "message": "host_init_verifier: use libhidlmetadata\n\nSince it\u0027s available in C++, it\u0027s easier to build host_init_verifier\nwith this than create a new way to export the json file.\n\nBug: 141567104\nTest: manually change hidl interface in a manifest\nhost_init_verifier: system/core/rootdir/init.rc: 69:\nhost_init_verifier: Interface is not in the known set of hidl_interfaces: \u0027android.hardwar.edne@1.0::IFoo\u0027. Please ensure the interface is spelled correctly and built by a hidl_interface target.\nChange-Id: Ic73dcb51855cb751734bc497d8e69f379966c511\n"
    },
    {
      "commit": "a5a107fb6d3335729cb28ed2cbddf5a01eec7b6e",
      "tree": "bf6bc5cb35de8f88f0cec5ba71716187ef271b0c",
      "parents": [
        "3902531b8641dc7931942b1b0ae7a23dda4327c2",
        "0dbfea7b0778bff25a43602e523deae5bb65b114"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Oct 14 13:48:52 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 14 13:48:52 2019 +0000"
      },
      "message": "Merge \"init: trigger shutdown directly from builtins\""
    },
    {
      "commit": "0dbfea7b0778bff25a43602e523deae5bb65b114",
      "tree": "108d52a6da321b7bec78f8c7acec47343b0c4de8",
      "parents": [
        "6b0e789a21cfb796a508e3c5507e49a2e8571582"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Oct 11 13:18:44 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Oct 11 13:45:42 2019 -0700"
      },
      "message": "init: trigger shutdown directly from builtins\n\nEspecially now that property_service is a thread, there may be some\ndelay between when init sets sys.powerctl and when the main thread of\ninit receives this and triggers shutdown.  It\u0027s possible that\noutstanding init commands are run during this gap and that is not\ndesirable.\n\nInstead, have builtins call TriggerShutdown() directly, so we can be\nsure that the next action that init runs will be to shutdown the\ndevice.\n\nTest: reboot works\nTest: reboot into recovery due to bad /data works\nChange-Id: I26fb9f4f57f46c7451b8b58187138cfedd6fd9eb\n"
    },
    {
      "commit": "aaab596687acc7e6419028525a7ecf4eb4e54597",
      "tree": "548ff08038a701fa47b8d51856f9e261bb1f531a",
      "parents": [
        "6b0e789a21cfb796a508e3c5507e49a2e8571582"
      ],
      "author": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Thu Oct 10 20:42:37 2019 +0100"
      },
      "committer": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Fri Oct 11 17:44:54 2019 +0100"
      },
      "message": "Only allow alphanumerical characters, \u0027-\u0027 and \u0027_\u0027 in event trigger names\n\nThis should help in preventing silly typos like \"on foo:\"\n\nTest: atest CtsInitTestCases\nTest: builds\nBug: 135984674\nChange-Id: I6e4e18970e957d25dea9f557f0d31a759fbe6150\n"
    },
    {
      "commit": "3f4b0d611338a772f63669bd12e792bbe43b1245",
      "tree": "d8efb7ccefa34881d7e2ab2021a7702149f5babd",
      "parents": [
        "d11c6f7fd8ab1cd747d48b086a008f653b77ca3f"
      ],
      "author": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Wed Oct 09 15:23:02 2019 +0100"
      },
      "committer": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Thu Oct 10 18:13:42 2019 +0100"
      },
      "message": "userspace reboot: stop post-data services and wait for them to be killed\n\n* Refactored code around stopping services a little bit to reuse it\n  between full reboot and userspace reboot.\n* Add a scope_guard to fallback to full reboot in case userspace reboot\n  fails.\n* In case of userspace reboot init will also wait for services to be\n  terminated/killed and log the ones that didn\u0027t react to\n  SIGTERM/SIGKILL in time.\n* If some of the services didn\u0027t react to SIGKILL, fail userspace reboot.\n\nTest: adb reboot userspace\nBug: 135984674\nChange-Id: I820c7bc406169333b0f929f0eea028d8384eb2ac\n"
    },
    {
      "commit": "4d7d903e2b3191f4a3688f3631bfb2db11ec8088",
      "tree": "86208667f86d72b22903d0c51e20fc9c70ad9eb0",
      "parents": [
        "f1933c910dc4bb305ceb4d96ab2f56f099d24a95",
        "636ebc9b3b2ecbfd4bb56714d04f2526dc0251fa"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 17:13:59 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 08 17:13:59 2019 +0000"
      },
      "message": "Merge \"init: actually report which signal is causing the reboot.\""
    },
    {
      "commit": "f1933c910dc4bb305ceb4d96ab2f56f099d24a95",
      "tree": "d76820f1a7c2f6e3ee31ed93096c1f8284852b7b",
      "parents": [
        "5bbe4a1b2639d053a6a73dcce488d19ff44377fc",
        "ba6968e63618ab5e37d3fb163e9ea27dc0aa3247"
      ],
      "author": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Tue Oct 08 14:42:36 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 08 14:42:36 2019 +0000"
      },
      "message": "Merge \"Add a skeleton of userspace reboot\""
    },
    {
      "commit": "ba6968e63618ab5e37d3fb163e9ea27dc0aa3247",
      "tree": "76b1ee0d67fbc509eec1ff62f4f6fc264f4c3a7f",
      "parents": [
        "f2098870c11249aee09ba8d52b23cca6b864dc1b"
      ],
      "author": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Mon Oct 07 16:26:33 2019 +0100"
      },
      "committer": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Tue Oct 08 12:16:06 2019 +0100"
      },
      "message": "Add a skeleton of userspace reboot\n\nThis CL only draws boundaries between userspace and full reboots, and\nadds some functionality that will be required for userspace reboot:\n\n* Whenever device is shutting down is now controlled in reboot.cpp,\n  since during userspace reboot this state can change.\n* Now it\u0027s also possible to restart handling of control messages inside\n  property service. In case of userspace reboot, init will restart it\n  after stopping post-data services.\n* New userspace-reboot-requested trigger is added similar to shutdown\n  one for full reboot.\n\nTest: adb reboot\nTest: adb reboot userspace\nBug: 135984674\nChange-Id: Id55a53ba781d2b90ce40449037b6d8d47e72c476\n"
    },
    {
      "commit": "636ebc9b3b2ecbfd4bb56714d04f2526dc0251fa",
      "tree": "9b10ba5d43e968d599a8260484c48fd0994a2017",
      "parents": [
        "d0accefc0529873ea5d1724330ad995b26f372c0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 07 18:16:23 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 07 18:16:23 2019 -0700"
      },
      "message": "init: actually report which signal is causing the reboot.\n\nIt wasn\u0027t clear to me why init was rebooting until I saw that it was\nSIGABRT, which then made me read through earlier log spam to work out\nwhat was actually unhappy (the SELinux compiler, in my case).\n\nTest: worked out why init was rebooting my device\nChange-Id: I605d8956213c4c23711073fd4b0ff99562b7f351\n"
    },
    {
      "commit": "4ad0da974e6a9045adbec0ff752188237f1b1670",
      "tree": "3cfebc1d8ae83fc184eadb2f76b36844f3f18cf0",
      "parents": [
        "d72d846754b11c13d6aa7b6024176bc834d0b5d5",
        "1be2a2ce8d3eb0a9face6f8d289778cbedf74641"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 07 23:12:56 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 07 23:12:56 2019 +0000"
      },
      "message": "Merge \"init: drop unused direct dependency on libcrypto.so\""
    },
    {
      "commit": "1be2a2ce8d3eb0a9face6f8d289778cbedf74641",
      "tree": "86a6be820c889ffff3ac9bda97c3696be494f66e",
      "parents": [
        "baca43b3d87dcf5db4ba35473dbd80a90425184b"
      ],
      "author": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Mon Oct 07 20:30:58 2019 +0100"
      },
      "committer": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Mon Oct 07 19:34:16 2019 +0000"
      },
      "message": "init: drop unused direct dependency on libcrypto.so\n\nWhen I previously tried this in https://r.android.com/1108553 , it broke on\nsome targets but I think that may have been fixed. I\u0027m trying it again now\nto see if this now passes treehugger and sticks.\n\nNote: There is still an indirect dependency via libfs_mgr.\n\nBug: 137267623\nTest: Treehugger\nChange-Id: I2d8b909e451bb64a1eb0719a145dfd74da1dcbad\n"
    },
    {
      "commit": "736557c5105c2bc338917ff4b3b668bceeb86c0d",
      "tree": "b911a386d7dfd48a6c9a027f728a7b905adbbfb8",
      "parents": [
        "d0accefc0529873ea5d1724330ad995b26f372c0",
        "eaadc9d4266c2c20274d9d4f4a8ad55c48e155f5"
      ],
      "author": {
        "name": "Eric Biggers",
        "email": "ebiggers@google.com",
        "time": "Mon Oct 07 19:09:43 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 07 19:09:43 2019 +0000"
      },
      "message": "Merge changes from topic \"fscrypt-key-mgmt-improvements\"\n\n* changes:\n  init/fscrypt_init_extensions: support setting v2 encryption policies\n  fs_mgr_fstab: support specifying encryption policy version in fstab\n"
    },
    {
      "commit": "72d249143de1b878606f334ba9ad2e52024a746f",
      "tree": "68746a548d9be5ab7bb9159d3e19dff5e0d8e4c7",
      "parents": [
        "36749bd6d08e55b46cc65f35ee8dc0f83f3c508c"
      ],
      "author": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Fri Oct 04 16:45:56 2019 +0100"
      },
      "committer": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Fri Oct 04 16:45:56 2019 +0100"
      },
      "message": "Make init.updatable_crashing a read/write property\n\nThis property will need to be reset during userspace reboot, so it can\u0027t\nbe a read-only property anymore.\n\nTest: builds\nBug: 135984674\nChange-Id: I4e079b537cb5c725ac0b652804fdc801a6facfcf\n"
    },
    {
      "commit": "5fcc2b5d71adf428c28bbfe570d467ee7984120f",
      "tree": "23686d40249c966f9cb85e1a561f9dd2c151ac0b",
      "parents": [
        "58ae8d47801e17882b24231b241f9496952a28b4"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Tue Oct 01 13:59:56 2019 -0700"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Thu Oct 03 14:26:01 2019 -0700"
      },
      "message": "Convert SnapshotStatus to proto\n\nAlso, add a \"name\" field to SnapshotStatus, and delete\nthe \"name\" arg from CreateSnapshot / WriteSnapshotStatus.\nReadSnapshotStatus will warn if the name mismatches from\nthe file name, and auto-correct it.\n\nTest: libsnapshot_test\n\nChange-Id: I725cf39c07684b100b140a8a21ea9d23ab9d2241\n"
    },
    {
      "commit": "1a191bf54d4a77edd0fc5203141ab67a84936e62",
      "tree": "f0457239c8f073d4037b5177f3464c770fdd968c",
      "parents": [
        "2becdb6579a51ee421efea9c173b557e7af6cb67"
      ],
      "author": {
        "name": "Bowgo Tsai",
        "email": "bowgotsai@google.com",
        "time": "Wed Oct 02 16:23:32 2019 +0800"
      },
      "committer": {
        "name": "Bowgo Tsai",
        "email": "bowgotsai@google.com",
        "time": "Wed Oct 02 09:24:56 2019 +0000"
      },
      "message": "Support loading system_ext_property_contexts\n\nCommit I27dd391fc06a3c78e88a65c7931c84de1699f157 makes property_service\nno longer load selinux property_contexts by function\nselinux_android_prop_context_handle.\n\nSo we should load property_contexts from /system_ext as well in\nproperty_service.cpp.\n\nBug: 137712473\nBug: 141871131\nTest: `adb shell getprop -Z` to check system_ext_property_contexts is loaded\nChange-Id: I49c5c725784c0d598062ae356be6226446f4942a\n"
    },
    {
      "commit": "eaadc9d4266c2c20274d9d4f4a8ad55c48e155f5",
      "tree": "99c31de8747ba370c06f1bcdd3511f29ce57dc6a",
      "parents": [
        "d964376a927a5210f7bb7e80ca738b05b65b8d87"
      ],
      "author": {
        "name": "Eric Biggers",
        "email": "ebiggers@google.com",
        "time": "Fri Sep 13 10:54:53 2019 -0700"
      },
      "committer": {
        "name": "Eric Biggers",
        "email": "ebiggers@google.com",
        "time": "Mon Sep 30 10:27:38 2019 -0700"
      },
      "message": "init/fscrypt_init_extensions: support setting v2 encryption policies\n\nSupport setting v2 encryption policies on init-created directories.  The\npolicy version to set is gotten from a new field in\n/data/unencrypted/mode, which is the file that\u0027s used to pass the\nencryption options from vold to init.\n\nAlso don\u0027t bother falling back to defaults if fields are missing from\nthis file, since it\u0027s re-written on every boot by vold.\n\nBug: 140500999\nTest: tested as series; see If64028d8580584b2c33c614cabd5d6b93657f608\nChange-Id: Ia9c5d4b80199686799e3ac80de78a50ed3bdabf4\n"
    },
    {
      "commit": "34aba6a690811dac48568fe9679e895b80bcb069",
      "tree": "796ee541da9e98b013f42a7a5f3d879b7057707e",
      "parents": [
        "3699dbe2e005334b49dffd4759df1fd13688ebef",
        "f016f256b5c86ddf74705c3d4614c52abe6a5ca6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Sep 28 00:28:57 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Sep 28 00:28:57 2019 +0000"
      },
      "message": "Merge \"Separate system_ext_sepolicy.cil out of system sepolicy\""
    },
    {
      "commit": "3699dbe2e005334b49dffd4759df1fd13688ebef",
      "tree": "16b5ad2f1a319d786e0745f4bc82a1f6cc2ce46a",
      "parents": [
        "aef269f11bc97b19aef4f0022a0e7491af988e31",
        "9328021ce7ba61759f917f9de4d4b0eb705e7854"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Sep 27 15:31:42 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 27 15:31:42 2019 +0000"
      },
      "message": "Merge \"init: add tips for debugging linker errors when launching init services\""
    },
    {
      "commit": "aef269f11bc97b19aef4f0022a0e7491af988e31",
      "tree": "f29d5de1d5374fc8ba5d8778871665f9d6bb739b",
      "parents": [
        "e36ae49985769e2df89ff3abbe06c1ce4d1a04bd",
        "3a803eb2d4451d884d2e79f5e624cb4e36873de6"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Sep 27 15:31:04 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 27 15:31:04 2019 +0000"
      },
      "message": "Merge changes from topic \"logwrapper-api-update\"\n\n* changes:\n  Update init/fs_mgr for new logwrapper function\n  logwrap: convert to C++, rename function logwrap_fork_execvp().\n"
    },
    {
      "commit": "9328021ce7ba61759f917f9de4d4b0eb705e7854",
      "tree": "a8a26ad7c51b1719651eb85374a1ca830914d635",
      "parents": [
        "2a62d42704ae00082e266162d0c6093c877b541f"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Sep 26 15:24:40 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Sep 26 15:24:40 2019 -0700"
      },
      "message": "init: add tips for debugging linker errors when launching init services\n\nTest: we can see linker errors in dmesg when following these tips\nChange-Id: I86b65e01d06ed7c0b908c4512d55872cd5595eca\n"
    },
    {
      "commit": "f0d17fb50ed749b577998618022b74b184d617b1",
      "tree": "994fa15f81626fae7b38c8547c4e6512fefcc21d",
      "parents": [
        "2a62d42704ae00082e266162d0c6093c877b541f",
        "92fd3caff7073572ef7a16d87d7f38a0e68f9f96"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 26 17:56:53 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 26 17:56:53 2019 +0000"
      },
      "message": "Merge changes from topic \"remove_ashmemd\"\n\n* changes:\n  libcutils: route to /dev/ashmem\u003cboot_id\u003e instead of ashmemd\n  ueventd: duplicate /dev/ashmem\n"
    },
    {
      "commit": "3a803eb2d4451d884d2e79f5e624cb4e36873de6",
      "tree": "dddb41c8a0157e6c328331336bb21f4900800ba7",
      "parents": [
        "ff7d067ffadb3e7b6fea59c33a4c314a600faf09"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Sep 25 16:23:50 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Sep 26 10:29:57 2019 -0700"
      },
      "message": "Update init/fs_mgr for new logwrapper function\n\nTest: cuttlefish boots, fsck logs seen\nChange-Id: Icbc01161b44e097be813f4af648fa671739078b9\n"
    },
    {
      "commit": "2a62d42704ae00082e266162d0c6093c877b541f",
      "tree": "3a22de6140bc0e22b4f7839c13e9110acc35d777",
      "parents": [
        "4cbf09549301418e3eb89af38bf217f66c29c7a3",
        "f117f34aed0c63b755194c173769a1c2eafe711a"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Sep 26 14:32:33 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 26 14:32:33 2019 +0000"
      },
      "message": "Merge \"Use libcrypto_static instead of libcrypto\""
    },
    {
      "commit": "4cbf09549301418e3eb89af38bf217f66c29c7a3",
      "tree": "65fc77db9ca2e5cfc0e9d10662e0c805bccf082e",
      "parents": [
        "7d91385cf54c73ce80174ee416e1b492a5fb10e8",
        "2ad47f35a774828c7ea7c4fdb3fd1dcb0a8bc939"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Thu Sep 26 14:24:46 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 26 14:24:46 2019 +0000"
      },
      "message": "Merge \"Must use libdexfile_support_static in a static executable.\""
    },
    {
      "commit": "993d07fc534f96f098af5e385378e165746133fb",
      "tree": "bfd02acf5414b598437c48554888d1f064c410ee",
      "parents": [
        "e7180a796c9368aeacd87a493065174064918de6",
        "f5e872e9e9077bf5c679bf45a4cb32838c38c0c4"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Sep 25 19:56:03 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 25 19:56:03 2019 +0000"
      },
      "message": "Merge changes from topic \"boringssl-kmsg\"\n\n* changes:\n  Redirect boringssl_self_test stdio to kmsg\n  init: add stdio_to_kmsg option\n"
    },
    {
      "commit": "ff89b8d8c28ee19dd94df239018c7142394c5082",
      "tree": "64e571d8faf1e6164fb6760256c1348df8a4dbe2",
      "parents": [
        "03642ad8b88a48fc22d714c9d0e4f2a368d356ac"
      ],
      "author": {
        "name": "Tri Vo",
        "email": "trong@google.com",
        "time": "Tue Sep 24 13:00:43 2019 -0700"
      },
      "committer": {
        "name": "Tri Vo",
        "email": "trong@google.com",
        "time": "Wed Sep 25 12:49:38 2019 -0700"
      },
      "message": "ueventd: duplicate /dev/ashmem\n\nWe want ashmem to only be used via libcutils API, with long-term goal\nbeing deprecation of ashmem with memfd. To do that we route libcutils to\na new source of ashmem fds. We then phase out uses of /dev/ashmem that\ndoesn\u0027t go through libcutils using SELinux.\n\nIn Q, we introduced ashmemd as the source of ashmem fds to libcutils.\nHowever, having a separate process and, consequently, binder hops to\nhandle /dev/ashmem results in performance/memory overhead.\n\nTo address the overhead, replace ashmemd with a duplicate of\n/dev/ashmem. Name it /dev/ashmem\u003cboot_id\u003e, where boot_id is a random\nnumber generated on each boot. This way we make sure that developers\ndon\u0027t accidentally depend on /dev/ashmem\u003cboot_id\u003e, as that name can\u0027t be\nhardcoded.\n\nBug: 139855428\nTest: writing \"add\"/\"remove\" to /sys/class/misc/ashmem/uevent correctly\nadds/removes /dev/ashmem and /dev/ashmem/boot_id\nChange-Id: I36d23116048bfcd99903ba46cc133161835a2cfa\n"
    },
    {
      "commit": "f74b7f575686245075c8bf6048a72af7836cdfb1",
      "tree": "dee0dbaa4168c4cb4897a83a9456f41d2cbee561",
      "parents": [
        "03642ad8b88a48fc22d714c9d0e4f2a368d356ac"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Sep 23 16:16:54 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Sep 24 12:47:14 2019 -0700"
      },
      "message": "init: add stdio_to_kmsg option\n\nSome services are not native android services and therefore don\u0027t log\nvia the normal mechanisms.  This gives developers an option to have\ntheir stdout/stderr logs sent directly to kmsg.\n\nTest: see test prints to kernel log\nChange-Id: I7973ea74d5cab3a90c2cd9a3d5de2266439d0c01\n"
    },
    {
      "commit": "2ad47f35a774828c7ea7c4fdb3fd1dcb0a8bc939",
      "tree": "b5a6b1cb5ecc103ba42c3c2f4758e0dfae49bdf0",
      "parents": [
        "5cdf2ef3103d9f320a833070f23ab69d330f9da6"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Sep 24 17:36:30 2019 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Sep 24 17:36:30 2019 +0100"
      },
      "message": "Must use libdexfile_support_static in a static executable.\n\nThe other one compiles in dlopen() calls that won\u0027t work.\n\nTest: Build \u0026 boot\nBug: 141485154\nChange-Id: I8ab697cfbe41bd21ad47655e47a0218d52738b58\n"
    },
    {
      "commit": "513c989908e189520534fd37c455b010374e6e4b",
      "tree": "7de4aae9793a9edfa84418b878450133322c6bab",
      "parents": [
        "f08e28e440a60736bc2ce4b044f3c771339fe1eb"
      ],
      "author": {
        "name": "lijiazi",
        "email": "lijiazi@xiaomi.com",
        "time": "Tue Sep 24 17:14:32 2019 +0800"
      },
      "committer": {
        "name": "lijiazi",
        "email": "lijiazi@xiaomi.com",
        "time": "Tue Sep 24 17:36:45 2019 +0800"
      },
      "message": "Uevent: remove useless dir\n\nThere are no uevent fils in these dirs, so there\u0027s no need to\ntraverse these dirs.\n\nTest: manual\n\nChange-Id: I57b82846ad863952d8717e6c3ab80c1e243ee4f8\nSigned-off-by: lijiazi \u003clijiazi@xiaomi.com\u003e\n"
    },
    {
      "commit": "e6d71689bb40f8d496c9594d49e9313029af3f75",
      "tree": "aff4fa5a1099d85e7784464fc8b4fa97cc76dc91",
      "parents": [
        "e71efc3dc4976ff7f2dca39efae83f30e85ae3b9",
        "1b094939e500d6c22e3235f3d1745a5ebf3ba564"
      ],
      "author": {
        "name": "Howard Chen",
        "email": "howardsoc@google.com",
        "time": "Sat Sep 21 02:48:37 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Sep 21 02:48:37 2019 +0000"
      },
      "message": "Merge \"Mount multiple DSU partitions when present.\""
    },
    {
      "commit": "03642ad8b88a48fc22d714c9d0e4f2a368d356ac",
      "tree": "44768c811e6ef6ff1210f897ab1937df3b68bc6e",
      "parents": [
        "89562f11c8f85857cb4260078849737c51e51bfb",
        "5241d10049f0d93c0123556a72c64b8b322dfba1"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Sep 20 14:59:58 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 20 14:59:58 2019 +0000"
      },
      "message": "Merge \"init: create sockets before forking\""
    },
    {
      "commit": "f016f256b5c86ddf74705c3d4614c52abe6a5ca6",
      "tree": "69d3983d3f2ccd48f64cd501848009c1c4e00125",
      "parents": [
        "c00229c34a86ea06054a56566d6b89528f4cf3c8"
      ],
      "author": {
        "name": "Bowgo Tsai",
        "email": "bowgotsai@google.com",
        "time": "Wed Aug 28 17:56:51 2019 +0800"
      },
      "committer": {
        "name": "Bowgo Tsai",
        "email": "bowgotsai@google.com",
        "time": "Fri Sep 20 18:20:21 2019 +0800"
      },
      "message": "Separate system_ext_sepolicy.cil out of system sepolicy\n\nCurrently system sepolicy can be extended via:\n  - BOARD_PLAT_PUBLIC_SEPOLICY_DIR\n  - BOARD_PLAT_PRIVATE_SEPOLICY_DIR\n\nTo support having a single shared core system sepolicy, those\ncustomization should be moved to the newly added system_ext partition.\n\nSystem-ext-specific sepolicy files will be installed into\n/system_ext/etc/selinux/*. system_ext_sepolicy.cil is merged into\nprecompiled_sepolicy at build-time. In case precompiled_sepolicy can\u0027t\nbe used (e.g. system-only-ota), the init will merge this file with\nthe rest of the sepolicy at runtime.\n\nBug: 137712473\nTest: boot aosp_crosshatch with system_ext_sepolicy.cil\nTest: boot aosp_crosshatch without system_ext_sepolicy.cil\nChange-Id: Ib37622271b559d65462de99ff424be831004508a\n"
    },
    {
      "commit": "1b094939e500d6c22e3235f3d1745a5ebf3ba564",
      "tree": "c4f2ec8e0f85b83cee309aa7b139ac2987c666c3",
      "parents": [
        "7922a446371add87d4aa53b33f4fb1a633568f64"
      ],
      "author": {
        "name": "Howard Chen",
        "email": "howardsoc@google.com",
        "time": "Wed Sep 11 18:22:01 2019 +0800"
      },
      "committer": {
        "name": "Howard Chen",
        "email": "howardsoc@google.com",
        "time": "Fri Sep 20 14:10:52 2019 +0800"
      },
      "message": "Mount multiple DSU partitions when present.\n\nThere might be partitions like product or system_ext in addition\nto the system partition. Those partitions can contain dependencies\nrequired by the system so we need to make the init to recognize\nthese partitions and mount them accordingly.\n\nBug: 140092208\nTest: gsi_tool install \u0026 reboot\nChange-Id: Ie5ef063292c3656e79cce9f887f23a8faa1ba2be\n"
    },
    {
      "commit": "5241d10049f0d93c0123556a72c64b8b322dfba1",
      "tree": "473953479670d380bdd60379ad091f7c28d7f3a4",
      "parents": [
        "bac7609c48c4fbe3440caf7375eec37cfefc46c5"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Sep 10 14:20:35 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Sep 19 16:10:30 2019 -0700"
      },
      "message": "init: create sockets before forking\n\nThere is a race condition with Service::Start and socket creation.\nSince socket creation currently happens after the fork(), it\u0027s\npossible that init can continue executing other commands before the\nsocket is created.  If init starts another service that relies on that\nsocket, it isn\u0027t guaranteed to be available.\n\nParticularly, we\u0027ve seen this with hwservicemanager starting after\nlogd, but hwservicemanager\u0027s logs sometimes not showing up.\n\nBug: 140810300\nTest: boot and logging functions correctly\n\nChange-Id: Ib2932e836d345830cd38f3b556598508fd953058\n"
    },
    {
      "commit": "2436e6b15a9f5f03392e942d9caa98ab69ed36d1",
      "tree": "60dbb1d904da040f61b263c999bdb9e7e12826aa",
      "parents": [
        "bac7609c48c4fbe3440caf7375eec37cfefc46c5"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Sep 19 11:16:19 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Sep 19 14:05:56 2019 -0700"
      },
      "message": "init: reboot immediately if /data isn\u0027t mounted\n\nAll of the logic in reboot.cpp is meant to safely shutdown services,\nsafely unmount emulated RW file systems, then finally unmount the\nremaining RW file systems, particularly /data.  If /data hasn\u0027t been\nmounted, then none of this logic is required.\n\nRunning this logic caused a lock up when shutting down blueline from\nearly-init.  Vold, or potentially a related HAL, locked up during the\nShutdownVold() calls.  debuggerd separately locked up in the watchdog\nthread.\n\nTherefore, this change immediately reboots if /data is not mounted.\nIt also removes the lines to call into debuggerd.  debuggerd will not\nrun due to SELinux in any case, so it can only be used when hands-on\ndebugging a device.\n\nBug: 141082587\nTest: shutdown with /data mounted continues as normal\nTest: shutdown from early-init immediately shuts the device down\nChange-Id: I79c72346b17c7dfe57e955d9739bcaf559badc14\n"
    },
    {
      "commit": "14c2472734ce9f92978b7193a6877c5c2ceba200",
      "tree": "4390ac8fa516766511a10c6742ca0bb17ada90ab",
      "parents": [
        "b0321c1de178ac2dfd05fb6537e0e63f7eecf87e"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Sep 18 13:47:19 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Sep 18 14:02:14 2019 -0700"
      },
      "message": "init: degeneralize subcontext init into only vendor_init\n\nThis code is more generic than it needs to be and one of the side\neffects is that an extra init process is forked for odm_init, despite\nit having the same context as vendor_init.  I don\u0027t think anything is\ngoing to change regarding that soon, so this change stops forking that\nextra process to save its memory and simplifies the code overall.\n\nBug: 141164879\nTest: init still uses vendor_init for vendor_scripts\nTest: init unit tests\nTest: init only has one subcontext process\nChange-Id: I0d224455604a681711e32f89fb20132378f69060\n"
    },
    {
      "commit": "f117f34aed0c63b755194c173769a1c2eafe711a",
      "tree": "305b910a06e78b4077d441e518b3327598cd9e7f",
      "parents": [
        "f3a5ab8b1d814706784b261cd3cdfa877346a1e9"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Sep 18 11:04:35 2019 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Sep 18 11:04:35 2019 -0700"
      },
      "message": "Use libcrypto_static instead of libcrypto\n\nReplace libcrypto with libcrypto_static, which can be protected through\nvisibility to ensure only modules that don\u0027t affect FIPS certification\ncan use it.\n\nBug: 141248879\nTest: m checkbuild\nChange-Id: I5f0b9acfb57f68570f6f58f2395f2bb1bc015365\n"
    },
    {
      "commit": "0e70ce26b8e6d599739d1b30b6a6c04986ff88ab",
      "tree": "748d408870a5b3a7d54832b9a14dc01a11f7b7f1",
      "parents": [
        "7509fca99a0b6fa2f3ceb9d2e84710dc574bcdfe",
        "1cfcee0e4de6860560dc2da785dc0b6928eadd66"
      ],
      "author": {
        "name": "David Anderson",
        "email": "dvander@google.com",
        "time": "Wed Sep 18 00:35:55 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 18 00:35:55 2019 +0000"
      },
      "message": "Merge \"init: Make sure /dev/block/by-name/userdata is created in snapshot mode.\""
    },
    {
      "commit": "f3a5ab8b1d814706784b261cd3cdfa877346a1e9",
      "tree": "8cf30fe4a4cf5eea624bb360467ebdeb115ff040",
      "parents": [
        "e5e9ee41d9de64db195095c2ed7a2474c2374a34",
        "4e6bf2510f635fc0fb046eeda8a0a1d5a96a0412"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 17 20:21:09 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 17 20:21:09 2019 +0000"
      },
      "message": "Merge \"Remove the global seccomp option.\""
    },
    {
      "commit": "1cfcee0e4de6860560dc2da785dc0b6928eadd66",
      "tree": "7566724a01cbc718a89006ae1dbeaebba68bef55",
      "parents": [
        "116d2ff50367ccf332fde1dfa4fcbfcc1173aabf"
      ],
      "author": {
        "name": "David Anderson",
        "email": "dvander@google.com",
        "time": "Mon Sep 16 18:42:10 2019 -0700"
      },
      "committer": {
        "name": "David Anderson",
        "email": "dvander@google.com",
        "time": "Tue Sep 17 13:19:22 2019 -0700"
      },
      "message": "init: Make sure /dev/block/by-name/userdata is created in snapshot mode.\n\nWhen userdata is used to store COW devices, we need to ensure we\u0027ve\ngenerated uevents for it.\n\nThis patch also refactors FirstStageMount to pass required devices\nthrough arguments rather than a member variable.\n\nBug: 140761481\nTest: manual test\nChange-Id: Ie5e1c9699f084da5467a758eea41c7907fecc5ca\n"
    },
    {
      "commit": "570d20d2ac875198416dff280b7a4b7adaacac81",
      "tree": "1a8297dc4e3585cc6dfee2886a61fb65e7679271",
      "parents": [
        "a550e7f4128a4e5747950d239fd41cbbc436649b"
      ],
      "author": {
        "name": "Paul Crowley",
        "email": "paulcrowley@google.com",
        "time": "Wed Sep 11 15:02:44 2019 -0700"
      },
      "committer": {
        "name": "Paul Crowley",
        "email": "paulcrowley@google.com",
        "time": "Fri Sep 13 15:50:23 2019 -0700"
      },
      "message": "Create /data/per_boot\n\nBug: 140882488\nTest: Booted twice, checked logs to ensure encryption\n    is different each time, adb created files in directory.\nChange-Id: I44f746acd1040f7baa9123d4824ba39b194f287b\n"
    },
    {
      "commit": "a550e7f4128a4e5747950d239fd41cbbc436649b",
      "tree": "fccc5c538fcde5f0eb8b8a6f2bcb2e84e286996c",
      "parents": [
        "101588127caf2c8e6763c79968d1ef0771273d06",
        "60971e6ce22bd4fee531dc72875acb4b913f69a7"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Sep 13 19:26:49 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 13 19:26:49 2019 +0000"
      },
      "message": "Merge \"init: add reboot_on_failure service option\""
    },
    {
      "commit": "530d8f1d48248aa82bf21c334f730aaa706d6fc4",
      "tree": "38cbacbfbe2e82e8aebffbbe03120d90c14766c9",
      "parents": [
        "6f735df0d1268cc976e5834c3cb1cc9e6fe9395d",
        "58505923e52df282a978d49798011c7a2ee1d9e2"
      ],
      "author": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Fri Sep 13 16:56:06 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 13 16:56:06 2019 +0000"
      },
      "message": "Merge \"Set LOCAL_INJECT_BSSL_HASH for init_first_stage\""
    },
    {
      "commit": "60971e6ce22bd4fee531dc72875acb4b913f69a7",
      "tree": "aa80b358efb90ac48551640a81e29dc0d52aefad",
      "parents": [
        "6f735df0d1268cc976e5834c3cb1cc9e6fe9395d"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Sep 10 10:40:47 2019 -0700"
      },
      "committer": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Fri Sep 13 16:48:35 2019 +0100"
      },
      "message": "init: add reboot_on_failure service option\n\nThis replaces the recently added `exec_reboot_on_failure` builtin, since\nit\u0027ll be cleaner to extend service definitions than extending `exec`.\nThis is in line with what we decided when adding `exec_start` instead\nof extending `exec` to add parameters for priority.\n\nTest: `exec_start` a service with a reboot_on_failure option and watch\n      the system reboot appropriately when the service is not found and when\n      the service terminates with a non-zero exit code.\n\nChange-Id: I332bf9839fa94840d159a810c4a6ba2522189d0b\n"
    },
    {
      "commit": "58505923e52df282a978d49798011c7a2ee1d9e2",
      "tree": "d87d2ad2f2d106d3664a1876a4dda37127d8e51d",
      "parents": [
        "bda0554bb2b7827602834ea94430b58274bbbd09"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Sep 05 15:32:36 2019 -0700"
      },
      "committer": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Fri Sep 13 03:31:42 2019 +0100"
      },
      "message": "Set LOCAL_INJECT_BSSL_HASH for init_first_stage\n\ninit_first_stage is built in Make and statically links libcrypto,\nso it needs to set LOCAL_INJECT_BSSL_HASH to make the FIPS self\ntest pass.\n\nBug: 137267623\nTest: m checkbuild\nChange-Id: Icd8ec07b731228a162db9a13d7304bf1d73127aa\n"
    },
    {
      "commit": "dcb3d156119d12f067474f4dc12e026c7fbd4ae3",
      "tree": "734644436987f695e562151e95849d938a9e2dd6",
      "parents": [
        "537e4af23512389438b86f31ee81eb522111f944"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Aug 07 16:02:28 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Sep 12 12:57:22 2019 -0700"
      },
      "message": "ueventd: allow using external firmware handlers\n\nUserspace may want to load a different firmware than the one that the\nkernel requests in some cases, therefore this change adds the ability\nto ueventd to run an external handler that will determine the name of\nthe file that should actually be loaded.\n\nBug: 138352500\nTest: unit tests\nChange-Id: Ic5da37268fd78109f83ae52d1b903bf7322a5ee5\n"
    },
    {
      "commit": "4e46a33c70c50940b19e37af7b99924f559b8542",
      "tree": "78ed479609281bf3e45c2a2ee2731fa127f9a71b",
      "parents": [
        "483c2f90598aedfcdedd120fcce26ab7c39989a4",
        "1ab3dfcab469198114c4bb4a3914c6b64b891f72"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Sep 10 17:04:57 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 10 17:04:57 2019 +0000"
      },
      "message": "Merge \"Reland^2: \"init: run property service in a thread\"\""
    },
    {
      "commit": "e351e5ed06a675b27fb797bfd8df95d5815c6ccf",
      "tree": "1d1f8631d049e92692f6dd9c01444c962f18eaf7",
      "parents": [
        "9bcec87086e13e2f32b2157cefcb700d8e398a01",
        "4233ec7f66d54d30109c838d09b358f21e214011"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Sep 10 14:52:31 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 10 14:52:31 2019 +0000"
      },
      "message": "Merge \"ueventd: make parallel restorecon functionality optional\""
    },
    {
      "commit": "16fb3f9e425bc511ec5f8952d3130c633dee8ddc",
      "tree": "c1684bdc95e9ffb95580ca645f643d9a256c1b93",
      "parents": [
        "983f76b3c632b29ca6ff858d986378a9028493c2"
      ],
      "author": {
        "name": "Jon Spivack",
        "email": "spivack@google.com",
        "time": "Fri Jul 26 13:14:42 2019 -0700"
      },
      "committer": {
        "name": "Jon Spivack",
        "email": "spivack@google.com",
        "time": "Mon Sep 09 15:24:42 2019 -0700"
      },
      "message": "Allow AIDL interfaces in service parsing\n\nBug: 138756857\nTest: Manual (using mediaextractor as a test service)\nChange-Id: Ice2c695fca7062d6a115df13a6ac1d6fe82a3a98\n"
    },
    {
      "commit": "4233ec7f66d54d30109c838d09b358f21e214011",
      "tree": "c72d0322a78fdc005a600bb3ead293067f8b356d",
      "parents": [
        "50e408db2d1bd015f87996f98b0bc21a39402ab0"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Sep 06 10:52:31 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Sep 09 09:02:48 2019 -0700"
      },
      "message": "ueventd: make parallel restorecon functionality optional\n\n5aa6197d5f387579ff04c330001840d6988e825f added the ability to\nparallelize restorecon to speed up boot for devices that have not\ncompletely moved to genfscon.  This parallel restorecon happens after\nthe parallel ueventd handling.\n\nThis causes a performance regression for devices that have moved to\ngenfscon, since previously, the restorecon() was done in the main\nueventd thread in parallel with the uevent handlers.\n\nI also tried to run the fully parallelized restorecon in parallel with\nthe uevent handlers, but that did not make any change to the cold boot\ntime, likely due to the additional overhead of parallelizing the work.\n\nBug: 140458170\nTest: blueline coldboot time returns to pre-regression time.\nChange-Id: I3cd6a869cc9b62792466813d94ad6c69834e854e\n"
    },
    {
      "commit": "983f76b3c632b29ca6ff858d986378a9028493c2",
      "tree": "29a7412bfaf1ccb7581826784d99ec1a24c21ddb",
      "parents": [
        "c8eadff1de468456fa321117788ed3fdba60fad0",
        "1136f1592a50c90b3b59fbc3293e4c1e155972e0"
      ],
      "author": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Sat Sep 07 23:46:00 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Sep 07 23:46:00 2019 +0000"
      },
      "message": "Merge \"Init: Run boringssl self test via separate binaries.\""
    },
    {
      "commit": "d5dff2604942e0756cb24cf575305714cb07a087",
      "tree": "b9b815c4e305ca218b3b66f4c5077854b28cbec3",
      "parents": [
        "4118221c66786eaeb1cb7bc6508f3c0ae8027d7c",
        "5f181bc503c27164bfa3fcf52fd26b0b68c3a580"
      ],
      "author": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Fri Sep 06 22:59:07 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 06 22:59:07 2019 +0000"
      },
      "message": "Merge \"init: boot into thermal shutdown target on supported devices\""
    },
    {
      "commit": "5f181bc503c27164bfa3fcf52fd26b0b68c3a580",
      "tree": "9e0a7c1899272af75c6ca2e134d60c916c9c645f",
      "parents": [
        "8c8ce02e2eb2dc0671518423f2e6b0661013a514"
      ],
      "author": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Tue Aug 27 16:35:35 2019 -0700"
      },
      "committer": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Fri Sep 06 11:26:43 2019 -0700"
      },
      "message": "init: boot into thermal shutdown target on supported devices\n\nBug: 137982557\nTest: thermal shutdown\nChange-Id: I4c7c4647e340be6be7a37a3dde6324b4d7903007\n(cherry picked from commit 271014e8325f17ac1fcf83dede7ce987c293fb2c)\n"
    },
    {
      "commit": "7b968315ee30218748b1b5daf896fd195f770158",
      "tree": "99d1fa68f1d6eb744188023f178d95f0e5024230",
      "parents": [
        "0b18c6735fec7d8874625b839ed6567b098f7e88",
        "7a5f6c5912233833c6e445c7aca1ba6b74d138d0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 06 17:34:05 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 06 17:34:05 2019 +0000"
      },
      "message": "Merge \"init/fscrypt_init_extensions: remove redundant log message\""
    },
    {
      "commit": "1ab3dfcab469198114c4bb4a3914c6b64b891f72",
      "tree": "7e8fb97277f79767cb4f473b22f1173011c3d149",
      "parents": [
        "50e408db2d1bd015f87996f98b0bc21a39402ab0"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Apr 22 17:46:37 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Sep 05 14:42:58 2019 -0700"
      },
      "message": "Reland^2: \"init: run property service in a thread\"\n\nIt\u0027s been a long standing issue that init cannot respond to property\nset messages when it is running a builtin command.  This is\nparticularly problematic when the commands involve IPC to vold or\nother daemons, as it prevents them from being able to set properties.\n\nThis change has init run property service in a thread, which\neliminates the above issue.\n\nThis change may also serve as a starting block to running property\nservice in an entirely different process to better isolate init from\nhandling property requests.\n\nReland: during reboot, init stops processing property_changed messages\nfrom property service, since it will not act on these anyway.  This\nhad an unexpected effect of causing future property_set calls to block\nindefinitely, since the buffer between init and property_service was\nfilling up and the send() call from property_service would then\nblock.  This change has init tell property_service to stop sending it\nproperty_changed messages once reboot begins.\n\nTest: CF boots, walleye boots, properties are set appropriately\nChange-Id: I26902708e8be788caa6dbcf4b6d2968d90962785\n"
    },
    {
      "commit": "7a5f6c5912233833c6e445c7aca1ba6b74d138d0",
      "tree": "a010db32498ddf21d37d44365e64640eae942215",
      "parents": [
        "48eb2ee17644dc7b497c0422c18745b1e063ff3f"
      ],
      "author": {
        "name": "Eric Biggers",
        "email": "ebiggers@google.com",
        "time": "Thu Sep 05 13:01:13 2019 -0700"
      },
      "committer": {
        "name": "Eric Biggers",
        "email": "ebiggers@google.com",
        "time": "Thu Sep 05 13:20:25 2019 -0700"
      },
      "message": "init/fscrypt_init_extensions: remove redundant log message\n\nOn every boot, there is a \"duplicate\" message logged at INFO level for\nevery system device-encrypted directory, e.g.:\n\n    1     1 I init    : Setting policy on /data/app-private\n    1     1 I init    : Encryption policy of /data/app-private set to 3a19970b1aa3abed modes 127/4\n\nOr:\n\n    1     1 I init    : Setting policy on /data/app-private\n    1     1 I init    : Verified that /data/app-private has the encryption policy 3a19970b1aa3abed modes 127/4\n\n(Before I51ee70706bc9ccb216ccefd7bdfbbfc57faae14d the second messages\nwere slightly different, but were similar and still at INFO level.)\n\nThe issue is that set_system_de_policy_on() prints its own log message,\nthen calls fscrypt_policy_ensure() which prints a message too; and the\nsecond message is essentially a superset of the first.\n\nClean this up by removing the message from set_system_de_policy_on().\n\nTest: Booted and checked the log.\nChange-Id: I2786ba7e2dbb355f159ac9d8fe5ad1f0a4cdbfea\n"
    },
    {
      "commit": "4e6bf2510f635fc0fb046eeda8a0a1d5a96a0412",
      "tree": "a60bf8c76b7bba573fdf1a6977e0d5d2684c1cb9",
      "parents": [
        "34f25373933d7c092cf713bc60b48a381fdfe0bc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 04 20:53:01 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 04 21:16:26 2019 -0700"
      },
      "message": "Remove the global seccomp option.\n\nAdded in af1a9bfb8f4461ba9a28e4df62a55b054d1eebca, but it\u0027s never been\nused in practice because of the performance impact, and it\u0027s incompatible\nwith our ability to add new system calls via a bionic module update\nbecause it defaults to disabling all unknown syscalls, and init will\nstill be using the non-updated bootstrap libc from when it first shipped.\n\nTest: treehugger\nChange-Id: I8e396675fcfaf0218a92f464d15e613f43319305\n"
    },
    {
      "commit": "1136f1592a50c90b3b59fbc3293e4c1e155972e0",
      "tree": "1a2e18452d2a0167ca52d7f86ddf7bc728fe59bd",
      "parents": [
        "7896e7adccbd272533ee2250f4a9c65cd4ca66d0"
      ],
      "author": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Fri Aug 23 14:05:29 2019 +0100"
      },
      "committer": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Thu Sep 05 01:41:08 2019 +0100"
      },
      "message": "Init: Run boringssl self test via separate binaries.\n\nInstead of init.cpp knowning about the boringssl self\ntest, use init.rc to exec dedicated self test executables.\n\nAdvantages:\n - The self test is run not only both the copy of libcrypto\n   in /system but also /apex/com.android.conscrypt.\n - The self test is run not only for the primary (e.g. 64bit)\n   ABI but also for a secondarry (e.g. 32bit) ABI.\n - The dependency on libcrypto is kept to the self test binary.\n - The self test binary abstracts the exact native API for\n   running the self test (this will change soon because the\n   self test will be run when the library is loaded).\n\nBug: 137267623\nTest: Check that logcat shows both binaries being started as root,\n      and finishing with exit code 0.\n\nChange-Id: I1e716749ee2133993f0f7b2836483391fd1a62f0\n"
    },
    {
      "commit": "7896e7adccbd272533ee2250f4a9c65cd4ca66d0",
      "tree": "83a7b6e1c74b5e49d4a34a5ee7661b07dc80eff6",
      "parents": [
        "a9ffef27e137458f8b12b10df2eeca58b99074ed"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Sep 04 15:26:52 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Sep 04 16:23:15 2019 -0700"
      },
      "message": "init: add exec_reboot_on_failure builtin\n\nAdd exec_reboot_on_failure builtin and refactor the VDC commands that\nhad similar functionality.  These will now also reboot in the case\nthat the program cannot be found or run for any reason.\n\nTest: boots normally, reboots if command is not found or if command\n      returns status \u00271\u0027\n\nChange-Id: I1c99498c2b741512a50188e1a325c25e9ec8fba0\n"
    },
    {
      "commit": "0589aa4265415d5264cea7f6d030254d4d4f54d0",
      "tree": "217e35a0367eb776e80af9b7d9ffac286312e544",
      "parents": [
        "0c100685dcbb24790615b228330f1b44642e6bf0",
        "905a5df83d1cdfd133ad53b3b6af999ddb485f94"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Sep 03 16:35:27 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 03 16:35:27 2019 +0000"
      },
      "message": "Merge \"init: Always reap processes before handling properties\""
    },
    {
      "commit": "0c100685dcbb24790615b228330f1b44642e6bf0",
      "tree": "838032723680954b58faea7345d9e876043d0f18",
      "parents": [
        "dec467f271124f2e3286a0f5c945c2140881a95c",
        "391332d2766f16226a3dc9dacdbd301deb8cf94e"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Mon Sep 02 10:28:30 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 02 10:28:30 2019 +0000"
      },
      "message": "Merge changes from topic \"art-without-bionic\"\n\n* changes:\n  Include com.android.runtime in the \"runtime\" linker namespace.\n  Update logic for detecting pre-apexd services to check that the ART APEX is mounted.\n  Update paths and names for the new ART APEX.\n"
    },
    {
      "commit": "dec467f271124f2e3286a0f5c945c2140881a95c",
      "tree": "30b6889353d1e069dbf518fafa50ecf7c1533d37",
      "parents": [
        "c9cddde0181d2eb2aef775e955bad02333dbf77d",
        "b2c2d6907fba8528a650959a74362bfb6e662c5a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Aug 31 13:39:37 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Aug 31 13:39:37 2019 +0000"
      },
      "message": "Merge \"Fix typo\""
    },
    {
      "commit": "905a5df83d1cdfd133ad53b3b6af999ddb485f94",
      "tree": "58fe73c80a7dce4a9fb7110a1e11f8abfeb22717",
      "parents": [
        "2b73b60c66d7c43515ed3c0db89735b9485f8ce6"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Aug 30 14:12:56 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Aug 30 14:20:05 2019 -0700"
      },
      "message": "init: Always reap processes before handling properties\n\nThere is a race that manifests like this:\n\n1) A service dies (not processed by init yet).\n2) service_manager processes death notification.\n3) service_manager gets checkService and calls init to start service.\n4) init gets the ctl.start / ctl.interface_start for the service\n   but the service already appears started, so it does nothing.\n5) init gets sigchld, but doesn\u0027t do anything else to restart the\n   service\n\nWe can avoid all of this if we already reap pending processes before\nhandling properties in the main loop of init.  Since reaping the\nservices calls waitid(), there\u0027s no race even if the signalfd for\nsigchld hasn\u0027t triggered yet.  It also won\u0027t cost us much efficiency,\nsince it\u0027s only a single system call.\n\nTest: CF boots, init unit tests pass\nChange-Id: Ie24ef406055b283797b41b1821c8ebcccead4db4\n"
    },
    {
      "commit": "b2c2d6907fba8528a650959a74362bfb6e662c5a",
      "tree": "abc19ab0a5dada8cfea788bfc2ec0d430b50272d",
      "parents": [
        "3bd09415a3f859467fae2b1516ffa3e95431bfa0"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Fri Aug 30 11:11:44 2019 -0700"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Fri Aug 30 11:15:58 2019 -0700"
      },
      "message": "Fix typo\n\nTest: builds\nChange-Id: I4b48e8b3d457382579216482249e734f74768c71\n"
    },
    {
      "commit": "cacf04351fcb6cbb73740ca078dcf93635a7f098",
      "tree": "9587b3a9d5e82671cda1bbfacd5208ae64a946a3",
      "parents": [
        "df96e1f25cad196385dc2ff6bcf1c8ec4619ab7c"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Wed Aug 21 18:34:31 2019 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri Aug 30 17:47:31 2019 +0100"
      },
      "message": "Update logic for detecting pre-apexd services to check that the ART APEX is\nmounted.\n\nNecessary to make e.g. bootanimation work, which depends on (at least)\nlibandroidicu.so in the ART APEX.\n\nTest: Build \u0026 boot\nBug: 135753770\nExempt-From-Owner-Approval: Approved internally\nChange-Id: Ibab4f5f7a243d0815b9c70a537bae8d77dee2fbb\nMerged-In: Ibab4f5f7a243d0815b9c70a537bae8d77dee2fbb\n"
    },
    {
      "commit": "df96e1f25cad196385dc2ff6bcf1c8ec4619ab7c",
      "tree": "dfe977e2822bdb7575ccb63d2230d2079ac0e4fe",
      "parents": [
        "cc746b51933624ea658a0656a51e0c9bf38b0f11"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Wed Jul 17 22:17:58 2019 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri Aug 30 17:47:31 2019 +0100"
      },
      "message": "Update paths and names for the new ART APEX.\n\nTest: Build \u0026 boot\nTest: atest CtsJniTestCases\nBug: 135753770\nExempt-From-Owner-Approval: Approved internally\nChange-Id: Ic59b7bc8aae7ce521cf3ec9df4ab72aa611d0b75\nMerged-In: Ic59b7bc8aae7ce521cf3ec9df4ab72aa611d0b75\n"
    },
    {
      "commit": "9800ad839a6c8f851cc0fdfba488ed604ed371c1",
      "tree": "dace8a22655c9ff97a52197005d41fea5546f7b9",
      "parents": [
        "956c204f1e0fa1bcb246ec776f5551f12e23d971"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Aug 28 18:34:24 2019 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Aug 29 16:08:36 2019 +0000"
      },
      "message": "init: -1 log for control message error paths.\n\nFixes: 140136969\nTest: check logs\nChange-Id: Id80f59927b44d1026c6e3389c80ca96baf0733c4\n"
    },
    {
      "commit": "4adbd2905a102c32775e83a1a90b04ccd293bd87",
      "tree": "4f83d46b3031492c3e2b05b5e0e1ef31bf599105",
      "parents": [
        "88bba9598937f18086fcf2bfbd5fafc785734aad",
        "3da2ba6d4aa16e5d087f98c1e8aa3e2e0820deef"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Aug 28 17:50:00 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 28 17:50:00 2019 +0000"
      },
      "message": "Merge \"Revert \"Reland: \"init: run property service in a thread\"\"\""
    },
    {
      "commit": "3da2ba6d4aa16e5d087f98c1e8aa3e2e0820deef",
      "tree": "ce8954219e3664034069ec15747a401eb4952bf5",
      "parents": [
        "8efca4bbb378ff5bd3af06d8511ea75a7ed49f99"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Aug 28 17:47:49 2019 +0000"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Aug 28 17:47:49 2019 +0000"
      },
      "message": "Revert \"Reland: \"init: run property service in a thread\"\"\n\nThis reverts commit 8efca4bbb378ff5bd3af06d8511ea75a7ed49f99.\n\nReason for revert: Still broken\n\nChange-Id: I3b37b1b00ff4b19f2eec2d8bd72042463d47cee3\n"
    },
    {
      "commit": "88bba9598937f18086fcf2bfbd5fafc785734aad",
      "tree": "d2a922a342caf30ca25d82b993c056d91483659b",
      "parents": [
        "34f25373933d7c092cf713bc60b48a381fdfe0bc",
        "33783fc29c4235822516e90277632b9bbef1c982"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 28 17:44:55 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 28 17:44:55 2019 +0000"
      },
      "message": "Merge \"init: set SetKptrRestrict before early-init\""
    },
    {
      "commit": "34f25373933d7c092cf713bc60b48a381fdfe0bc",
      "tree": "8fb3cf3d17911d78286d50cc2f9294887016f36b",
      "parents": [
        "15c87604035f0fbefb1f0f634ad8c9dd1ee93263",
        "8efca4bbb378ff5bd3af06d8511ea75a7ed49f99"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Aug 28 15:01:34 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 28 15:01:34 2019 +0000"
      },
      "message": "Merge \"Reland: \"init: run property service in a thread\"\""
    },
    {
      "commit": "15c87604035f0fbefb1f0f634ad8c9dd1ee93263",
      "tree": "ea5f8707bc63cdc6a1253b537460b7aa1b933b3d",
      "parents": [
        "fc71730834137bb2e34ad16cc9e74f3dd64746b6",
        "5aa6197d5f387579ff04c330001840d6988e825f"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Aug 28 14:58:12 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 28 14:58:12 2019 +0000"
      },
      "message": "Merge \"ueventd: parallelize restorecon /sys\""
    },
    {
      "commit": "33783fc29c4235822516e90277632b9bbef1c982",
      "tree": "f97da0e115f7858df3f6bf0a084a5fc36ae911b8",
      "parents": [
        "3bd09415a3f859467fae2b1516ffa3e95431bfa0"
      ],
      "author": {
        "name": "Ravi Kumar Siddojigari",
        "email": "rsiddoji@codeaurora.org",
        "time": "Tue Jul 30 16:41:20 2019 +0530"
      },
      "committer": {
        "name": "Jeff Vander Stoep",
        "email": "jeffv@google.com",
        "time": "Wed Aug 28 14:28:08 2019 +0200"
      },
      "message": "init: set SetKptrRestrict before early-init\n\nAs part of debugging long run issue we are enabling\nmodule info as part of debug build under the config key\nDEBUG_MODULE_LOAD_INFO , But doing so can lead to info leak\nas modules/dlkm are loaded in early-init and setting the\nkptr_restriction is done after early-init.\n\nSo moving setting of kptr_restrict much before early-init.\n\nBug: 138641073\n\nChange-Id: Ic3c0ca57a94c8b20136a15331dd646bd8825b625\n"
    },
    {
      "commit": "b245609059ebdba0e52227f94168b85c93623a96",
      "tree": "26672dbfae132187f1492846f31e0ede64e914e2",
      "parents": [
        "8381e72a84ef801581d4941c0d0db2ffd2132e5d",
        "6cad139bccfdd82418a87ac5b71e5667b0e48dfa"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Aug 28 02:40:03 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 28 02:40:03 2019 +0000"
      },
      "message": "Merge \"Mark some tests as requiring root.\""
    },
    {
      "commit": "5aa6197d5f387579ff04c330001840d6988e825f",
      "tree": "8f77f533b476a21e549a8c2ce1864c11621ea496",
      "parents": [
        "536dd4292ea687908f6e5ca61a00e6046d5bfe27"
      ],
      "author": {
        "name": "Bongkyu Kim",
        "email": "bongkyu.kim@lge.com",
        "time": "Wed Jan 30 19:59:53 2019 +0900"
      },
      "committer": {
        "name": "Bongkyu Kim",
        "email": "bongkyu.kim@lge.com",
        "time": "Wed Aug 28 09:55:09 2019 +0900"
      },
      "message": "ueventd: parallelize restorecon /sys\n\ngenerate subdir for /sys and /sys/devices, handle restorecon in parallel.\n\nThis reduces coldboot time on our target about 300ms.\n\nChange-Id: I9c3d0e97aacff0ca127880d936dfd5fcc2aee125\n"
    },
    {
      "commit": "a5c2aed35fbff0520973058e73ce7d01415ca64f",
      "tree": "e1b35773b1804fb9a94f724ca2ea724eea9baf43",
      "parents": [
        "30cda267c0215c8023dfbdff606d9bb87ace751b",
        "8180b48c4c22c4bbd8d156a8654e5fe5cceac7c4"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Aug 27 23:23:00 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 27 23:23:00 2019 +0000"
      },
      "message": "Merge \"init: send property_set failures to the audit netlink socket\""
    },
    {
      "commit": "6cad139bccfdd82418a87ac5b71e5667b0e48dfa",
      "tree": "47526f64243b20bb1a17f3981c6622e0ac4335dd",
      "parents": [
        "30cda267c0215c8023dfbdff606d9bb87ace751b"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Aug 27 16:02:38 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Aug 27 16:09:32 2019 -0700"
      },
      "message": "Mark some tests as requiring root.\n\nBug: http://b/140123924\nTest: mma\nChange-Id: I3ad277179018631c50d9295cdb173dd9dfa7ac59\n"
    },
    {
      "commit": "309d6dde312fc279da11c3b77d93d3e8177e830f",
      "tree": "cb873e3924181bff7c3ab3d8117f9a47632aa2fa",
      "parents": [
        "8d168c3321a81f11f8fc0d52e6cfbb760238b69c",
        "1b4e7328ad8ddb6b67c637c14b36fe581c047c98"
      ],
      "author": {
        "name": "Paul Crowley",
        "email": "paulcrowley@google.com",
        "time": "Tue Aug 27 02:26:25 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 27 02:26:25 2019 +0000"
      },
      "message": "Merge changes I1c1445ba,Ic0c8b163\n\n* changes:\n  Straighten out do_mkdir\n  Convert fscrypt_set_directory_policy to C++\n"
    },
    {
      "commit": "8d168c3321a81f11f8fc0d52e6cfbb760238b69c",
      "tree": "530d330d5641faa9ac687dd9dfffb665d8f3a9ee",
      "parents": [
        "ee9b49d7296229f828795b34028f664f41f76ab0",
        "c8edf84d45ca45df6bece19c3aa7eef5338f07c7"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Tue Aug 27 01:56:41 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 27 01:56:41 2019 +0000"
      },
      "message": "Merge \"init: Add first-stage init support for snapshot-based partitions.\""
    },
    {
      "commit": "8efca4bbb378ff5bd3af06d8511ea75a7ed49f99",
      "tree": "6581b531b039c688547511960bb886a6306c3bad",
      "parents": [
        "a033693a9e5e39725be039140851756d88e7cc1b"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Apr 22 17:46:37 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Aug 26 17:08:41 2019 -0700"
      },
      "message": "Reland: \"init: run property service in a thread\"\n\nIt\u0027s been a long standing issue that init cannot respond to property\nset messages when it is running a builtin command.  This is\nparticularly problematic when the commands involve IPC to vold or\nother daemons, as it prevents them from being able to set properties.\n\nThis change has init run property service in a thread, which\neliminates the above issue.\n\nThis change may also serve as a starting block to running property\nservice in an entirely different process to better isolate init from\nhandling property requests.\n\nTest: CF boots, walleye boots, properties are set appropriately\nChange-Id: I13b8bf240c9fcb1d2d5890a8be2f0ef74efd4adf\n"
    },
    {
      "commit": "e3cd3badbd4de06a9931ef94a315d704720b5fec",
      "tree": "ac033d58c47ba5dfe4d444aeb9573225c895e597",
      "parents": [
        "7a0948f6c4fb98dc26d0d34043c0ab19a6d3f0b1",
        "052f31c678bd4ec27d3eb4cc89b0e0f1d2fa97e6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 26 23:24:54 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 26 23:24:54 2019 +0000"
      },
      "message": "Merge \"Move fscrypt_init_extensions into system/core\""
    }
  ],
  "next": "8180b48c4c22c4bbd8d156a8654e5fe5cceac7c4"
}
