)]}'
{
  "log": [
    {
      "commit": "482f36cf74c0461bbad4a33df27d1b8e72ccc2d2",
      "tree": "d0ade431b56e65db325e9b777d10fa7810185b59",
      "parents": [
        "cc22a8e5a25e63fa61e1236ef4df28bfea05be35"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon May 08 13:38:15 2017 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue May 09 02:25:32 2017 +0000"
      },
      "message": "init: remove restorecon() from util.cpp\n\nrestorecon() has become nothing more than a small wrapper around\nselinux_android_restore().  This itself isn\u0027t super problematic, but\nit is an obstacle for compiling util.cpp on the host as that function\nis not available on the host.\n\nBug: 36970783\nTest: Boot bullhead\nMerged-In: I7e209ece6898f9a0d5eb9e5d5d8155c2f1ba9faf\nChange-Id: I7e209ece6898f9a0d5eb9e5d5d8155c2f1ba9faf\n"
    },
    {
      "commit": "cc22a8e5a25e63fa61e1236ef4df28bfea05be35",
      "tree": "f12cded28a17b94a6760b8ca90f5fb39b10e8534",
      "parents": [
        "84606f8686cf486b19644e2ac167dd2a6868805b",
        "54d8ff1121440d0ef4565ce0ab3751f82fdb393c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 09 00:59:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 09 00:59:07 2017 +0000"
      },
      "message": "Merge \"logd: add \"+passcred\" for logdw socket\""
    },
    {
      "commit": "84606f8686cf486b19644e2ac167dd2a6868805b",
      "tree": "3d2c71280cd0d7e395658850ab74b45d926f6342",
      "parents": [
        "9811cd33ac6ae18e8ac41f5ca312772e0bbdeafd",
        "e38d3a60bc13a63bf61fe519290747a749553eb5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon May 08 23:53:52 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 08 23:53:54 2017 +0000"
      },
      "message": "Merge \"Convert libnativebridge[23]?-dummy to soong.\""
    },
    {
      "commit": "54d8ff1121440d0ef4565ce0ab3751f82fdb393c",
      "tree": "f4d3401d31d70cc5ed4794557de654d3092520f8",
      "parents": [
        "9811cd33ac6ae18e8ac41f5ca312772e0bbdeafd"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri May 05 15:32:10 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon May 08 16:19:48 2017 -0700"
      },
      "message": "logd: add \"+passcred\" for logdw socket\n\nTell init to set SO_PASSCRED on the socket before bind() and handoff.\n\nTest: gtest logd-unit-test --gtest_filter\u003dlogd.statistics right after boot\nBug: 37985222\nChange-Id: I318969ee3241834e5326233aabd97e52ef505969\n"
    },
    {
      "commit": "9811cd33ac6ae18e8ac41f5ca312772e0bbdeafd",
      "tree": "b739efab08669751f4e4cd2da68b501f1eeec8db",
      "parents": [
        "761ae047779ac5b995b1b9792221cf9f8d69bb8c",
        "b066fccc5c977f3e464676d58a7fa550d368f426"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon May 08 23:19:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 08 23:19:33 2017 +0000"
      },
      "message": "Merge \"init: add \"+passcred\" for socket to set SO_PASSCRED\""
    },
    {
      "commit": "761ae047779ac5b995b1b9792221cf9f8d69bb8c",
      "tree": "0f806475de099ad8780590f29120366ebb542577",
      "parents": [
        "823816ee9f3ee7519a282d3a089d23f0e96018ef",
        "8bf37d7a4d0b8e05a5fe6500c2e3c13eef2a99e7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon May 08 22:44:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 08 22:44:34 2017 +0000"
      },
      "message": "Merge \"adb: properly handle libusb_clear_halt failure.\""
    },
    {
      "commit": "e38d3a60bc13a63bf61fe519290747a749553eb5",
      "tree": "b654fc907988f67a047a409a4ad4fb53d5724e88",
      "parents": [
        "823816ee9f3ee7519a282d3a089d23f0e96018ef"
      ],
      "author": {
        "name": "Tomasz Wasilczyk",
        "email": "twasilczyk@google.com",
        "time": "Mon May 08 15:29:10 2017 -0700"
      },
      "committer": {
        "name": "Tomasz Wasilczyk",
        "email": "twasilczyk@google.com",
        "time": "Mon May 08 15:29:10 2017 -0700"
      },
      "message": "Convert libnativebridge[23]?-dummy to soong.\n\nBug: 37512442\nTest: mmm system/core/libnativebridge/tests\nChange-Id: Ib1ca9ef830f58041095226c2ba18d1302c7833b4\n"
    },
    {
      "commit": "b066fccc5c977f3e464676d58a7fa550d368f426",
      "tree": "5371a7e99c4ab965fcdc7c77342631c184083285",
      "parents": [
        "823816ee9f3ee7519a282d3a089d23f0e96018ef"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri May 05 14:44:35 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon May 08 14:04:13 2017 -0700"
      },
      "message": "init: add \"+passcred\" for socket to set SO_PASSCRED\n\nIn the init scripts for socket, the type can have a suffix of\n\"+passcred\" to request that the socket be bound to report SO_PASSCRED\ncredentials as part of socket transactions.\n\nTest: gTest logd-unit-tests --gtest_filter\u003dlogd.statistics right after boot\n      (fails without logd.rc change)\nBug: 37985222\nChange-Id: Ie5b50e99fb92fa9bec9a32463a0e6df26a968bfd\n"
    },
    {
      "commit": "8bf37d7a4d0b8e05a5fe6500c2e3c13eef2a99e7",
      "tree": "ee5bcc125e5ad991956a18efa52107e92adda60a",
      "parents": [
        "5b8a92af5d4e014383a90a508d64607d37bc12b6"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri May 05 18:19:21 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon May 08 13:50:58 2017 -0700"
      },
      "message": "adb: properly handle libusb_clear_halt failure.\n\nThe original code used continue to attempt to try to skip the current\ndevice, but there was an loop between the outside one and the continue.\nMove the device handling logic into a function and replace continue\nwith return.\n\nTest: mma\nChange-Id: Iaa7f4b5ddc26d2ce03f1172d37d6307190b44412\n"
    },
    {
      "commit": "823816ee9f3ee7519a282d3a089d23f0e96018ef",
      "tree": "09beec5bc41049b17570a03fb762a056a6f51b19",
      "parents": [
        "2bc6196faa38e0d5a4bd0bf6ca962dcfa60248a4",
        "982e0693ce69021636e779c759ff6c596038dd1f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon May 08 20:46:40 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 08 20:46:41 2017 +0000"
      },
      "message": "Merge \"Revert \"Make /data/data a symlink to /data/user/0\"\""
    },
    {
      "commit": "2bc6196faa38e0d5a4bd0bf6ca962dcfa60248a4",
      "tree": "f4f5678c211a570ef824efdeaca955f2e8818bd2",
      "parents": [
        "ee9e5d098191cf1fa0932db7498963de3d6dcf1b",
        "2e7b8e2d1aff139895127a93c020bddb98a0f26e"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon May 08 20:18:33 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 08 20:18:34 2017 +0000"
      },
      "message": "Merge \"debuggerd_handler: use syscall(__NR_get[pt]id) instead of get[pt]id.\""
    },
    {
      "commit": "ee9e5d098191cf1fa0932db7498963de3d6dcf1b",
      "tree": "71051bb7464aae953217b831d7a11fa426eebce8",
      "parents": [
        "0dda322d4aaa429ff10aad4e45f69cbfce54a6f7",
        "a4103a85b6e5ed7c54e44e081ccdd21cc4303cfd"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon May 08 18:01:25 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 08 18:01:27 2017 +0000"
      },
      "message": "Merge changes Ie0b30417,I8b6e802e\n\n* changes:\n  Turn off debuggerd for host bionic\n  Remove old simulator support from liblog\n"
    },
    {
      "commit": "0dda322d4aaa429ff10aad4e45f69cbfce54a6f7",
      "tree": "34c01e5c9654ad0f22c2e461b1b2bfdd2475aa8d",
      "parents": [
        "6019991c6ee34179295578df949b81b76aaefcd2",
        "2cbbe9f7a35efdc94e8e34ef92eb6f70a85887fe"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon May 08 16:11:36 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 08 16:11:38 2017 +0000"
      },
      "message": "Merge changes I46690d1c,I84c11aa5\n\n* changes:\n  init: do not log directly from read_file() and write_file()\n  init: Check DecodeUid() result and use error string\n"
    },
    {
      "commit": "982e0693ce69021636e779c759ff6c596038dd1f",
      "tree": "44c364cc6a7929a386ef2fc7b92a9e927d3050da",
      "parents": [
        "6019991c6ee34179295578df949b81b76aaefcd2"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri May 05 17:42:37 2017 +0000"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon May 08 16:06:38 2017 +0000"
      },
      "message": "Revert \"Make /data/data a symlink to /data/user/0\"\n\nThis reverts commit d147cb5887f1ee9c978f58cdf59e9ddb99209ac6.\n\nOriginal change breaks AVD\nOriginal changes breaks SF/AF\nBug: 38026755\nBug: 38030346\nBug: 38114264\n\nChange-Id: Iab56244f0dc0f6b0df2916c691277a882fc7d184\n"
    },
    {
      "commit": "6019991c6ee34179295578df949b81b76aaefcd2",
      "tree": "69afa439f4c415d8c8b76b2d9272128eb59c6c31",
      "parents": [
        "1445c4b9321b288710ca9cbe0b14473dcb4ab8db",
        "77cbfd6341a7a500fdb8e2f3cc4a4f721254f10e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon May 08 15:28:11 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 08 15:28:13 2017 +0000"
      },
      "message": "Merge \"fs_mgr_verity: fix androidboot.veritymode\u003denforcing doesn\u0027t work\""
    },
    {
      "commit": "77cbfd6341a7a500fdb8e2f3cc4a4f721254f10e",
      "tree": "69afa439f4c415d8c8b76b2d9272128eb59c6c31",
      "parents": [
        "1445c4b9321b288710ca9cbe0b14473dcb4ab8db"
      ],
      "author": {
        "name": "Bowgo Tsai",
        "email": "bowgotsai@google.com",
        "time": "Mon May 08 17:15:20 2017 +0800"
      },
      "committer": {
        "name": "Bowgo Tsai",
        "email": "bowgotsai@google.com",
        "time": "Mon May 08 17:22:52 2017 +0800"
      },
      "message": "fs_mgr_verity: fix androidboot.veritymode\u003denforcing doesn\u0027t work\n\nShould set verity mode to VERITY_MODE_DEFAULT when\nandroidboot.veritymode\u003denforcing.\n\nBug: 38103331\nTest: `adb shell getprop partition.system.verified` returns 2 when veritymode\u003denforcing\nTest: `adb shell getprop partition.vendor.verified` returns 2 when veritymode\u003denforcing\nChange-Id: I2f34eb6509f91989ce726e540cf2c0d353347ede\n"
    },
    {
      "commit": "1445c4b9321b288710ca9cbe0b14473dcb4ab8db",
      "tree": "5b372e122e3adf3cd0a2e702dee79af4b32c65c6",
      "parents": [
        "9a4f572a9551c925c75fb47be901813082f2a1f4",
        "0de03b53fcf8c5807abbfc71d082f3b9cad031fa"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun May 07 21:08:55 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun May 07 21:08:56 2017 +0000"
      },
      "message": "Merge \"Assume bionic has up-to-date linux/capability.h\""
    },
    {
      "commit": "a4103a85b6e5ed7c54e44e081ccdd21cc4303cfd",
      "tree": "7930ad96da245a76b1fc4b9ce4e6c1314d386628",
      "parents": [
        "f3452d817886829669a7ff6dbce5b73d336caa52"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Sun May 07 12:48:03 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Sun May 07 13:22:01 2017 -0700"
      },
      "message": "Turn off debuggerd for host bionic\n\nBug: 31559095\nTest: Attempt to build host bionic\nChange-Id: Ie0b30417bdc2c59fd4793a79fd23dc9ccd398937\n"
    },
    {
      "commit": "f3452d817886829669a7ff6dbce5b73d336caa52",
      "tree": "da755004c1e40b74e6bbf43cb6d5a81bba96c3c8",
      "parents": [
        "0de03b53fcf8c5807abbfc71d082f3b9cad031fa"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Sun May 07 12:17:15 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Sun May 07 13:21:35 2017 -0700"
      },
      "message": "Remove old simulator support from liblog\n\nAs far as I know, this isn\u0027t used anymore, and is causing problems when\nbuilding with bionic on the host (with the cast of open).\n\nBug: 31559095\nTest: host bionic compiles\nChange-Id: I8b6e802e2d6dcc6e8476e387a5a365903aec3be1\n"
    },
    {
      "commit": "0de03b53fcf8c5807abbfc71d082f3b9cad031fa",
      "tree": "51031226bedd8811a8dfc53a5e8a38f507c153c5",
      "parents": [
        "ddfd5056a29ad8a92cee075a558129cee7c64a84"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Sun May 07 11:59:21 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Sun May 07 12:06:55 2017 -0700"
      },
      "message": "Assume bionic has up-to-date linux/capability.h\n\nThe fallback android_filesystem_capability.h doesn\u0027t play nicely with\nother kernel headers, since it #undef\u0027s __user. If we\u0027re building with\nbionic (either for device or host), we use the same kernel headers, so\njust use those.\n\nBug: 38056396\nTest: build with Host_bionic:true\nChange-Id: Idc61b6d96d86891164abe71604924638d67aefe2\n"
    },
    {
      "commit": "9a4f572a9551c925c75fb47be901813082f2a1f4",
      "tree": "3a74f0ea6ea5d219c970cd428b35df1178eb9931",
      "parents": [
        "ddfd5056a29ad8a92cee075a558129cee7c64a84",
        "47e02f429d049d42afd4e10203aa64ae1c229032"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Sat May 06 06:30:40 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat May 06 06:30:41 2017 +0000"
      },
      "message": "Merge \"Small test fixes.\""
    },
    {
      "commit": "ddfd5056a29ad8a92cee075a558129cee7c64a84",
      "tree": "5f62e4abc6dbfec0c6bc298bcc1d2ac6175ee617",
      "parents": [
        "5b8a92af5d4e014383a90a508d64607d37bc12b6",
        "2708a953d21f447e7377b0e1ea9dd69f703ad56e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat May 06 05:24:47 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat May 06 05:24:49 2017 +0000"
      },
      "message": "Merge \"Give slightly less useless versions to adb and fastboot.\""
    },
    {
      "commit": "5b8a92af5d4e014383a90a508d64607d37bc12b6",
      "tree": "48dce677ed86a23ad63838073d1397e08348cf33",
      "parents": [
        "71feb7b3216a2e60db4ee8039804b067504c2a0b",
        "ae797ec305f44c6ef6b2db9861f27e5fed5de6a5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat May 06 01:12:56 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat May 06 01:12:57 2017 +0000"
      },
      "message": "Merge \"Remove unused lambda captures\""
    },
    {
      "commit": "71feb7b3216a2e60db4ee8039804b067504c2a0b",
      "tree": "4ca7628a63d7d1b873ee060ddf01ec744d52d774",
      "parents": [
        "484acce026c14c8303dee845b8021d5a11e7d1a7",
        "4acb36020bfa3cb63ed81358754758e76fc5787d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat May 06 01:07:45 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat May 06 01:07:46 2017 +0000"
      },
      "message": "Merge \"Fix macOS build.\""
    },
    {
      "commit": "47e02f429d049d42afd4e10203aa64ae1c229032",
      "tree": "4b95c4778685459bdeafc705ed326fe880f41b31",
      "parents": [
        "484acce026c14c8303dee845b8021d5a11e7d1a7"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 05 16:29:50 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 05 17:09:49 2017 -0700"
      },
      "message": "Small test fixes.\n\nBug: 31919199\n\nTest: Ran the unit tests.\nChange-Id: I62bdb007f9cfa57e3faaa05993fd6e23ce32b82f\n"
    },
    {
      "commit": "2708a953d21f447e7377b0e1ea9dd69f703ad56e",
      "tree": "d119e22827b310ec05f7ffeddb8d0c3ac790e0ea",
      "parents": [
        "484acce026c14c8303dee845b8021d5a11e7d1a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 05 16:29:19 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 05 16:29:19 2017 -0700"
      },
      "message": "Give slightly less useless versions to adb and fastboot.\n\nThis will let us see (a) whether the user has a legit build or something they\nbuilt themselves and (b) what Android release it corresponds to.\n\nThis isn\u0027t as useful as showing what Platform Tools release we correspond to,\nbut I\u0027m planning on doing that as a separate line.\n\nBug: N/A\nTest: adb --version ; fastboot --version\nChange-Id: Idca489295e3c6f8571146f95822c08808e36b382\n"
    },
    {
      "commit": "4acb36020bfa3cb63ed81358754758e76fc5787d",
      "tree": "4ca7628a63d7d1b873ee060ddf01ec744d52d774",
      "parents": [
        "484acce026c14c8303dee845b8021d5a11e7d1a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 05 16:26:00 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 05 16:26:30 2017 -0700"
      },
      "message": "Fix macOS build.\n\n  system/core/adb/client/usb_libusb.cpp:162:20: error: unused function \u0027get_device_serial_path\u0027 [-Werror,-Wunused-function]\n  static std::string get_device_serial_path(libusb_device* device) {\n                     ^\n\nBug: N/A\nTest: no choice but to submit and see...\nChange-Id: I0026d3273891588c27df5ccd71c41ad9907b038d\n"
    },
    {
      "commit": "2e7b8e2d1aff139895127a93c020bddb98a0f26e",
      "tree": "048c949d533b6c7e3d796b224eab2e1519a402d4",
      "parents": [
        "8fad110bfa18b962b8c6e3a25297970a0febe1f2"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu May 04 17:12:57 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri May 05 14:58:12 2017 -0700"
      },
      "message": "debuggerd_handler: use syscall(__NR_get[pt]id) instead of get[pt]id.\n\nbionic\u0027s cached values for getpid/gettid can be invalid if the crashing\nprocess manually invoked clone to create a thread or process, which\nwill lead the crash_dump refusing to do anything, because it sees the\nactual values.\n\nUse the getpid/gettid syscalls directly to ensure correct values on\nthis end.\n\nBug: http://b/37769298\nTest: debuggerd_test\nChange-Id: I0b1e652beb1a66e564a48b88ed7fa971d61c6ff9\n"
    },
    {
      "commit": "484acce026c14c8303dee845b8021d5a11e7d1a7",
      "tree": "85a459c95ee4ef69438862fcad97c7f949790a6a",
      "parents": [
        "5ad9ba12df41e201f9b96e97ec5f8288c3493143",
        "4a9531d3263c5ea32501d3a1417373d465d04aac"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 05 21:43:36 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 05 21:43:38 2017 +0000"
      },
      "message": "Merge changes If7b13672,I96135a8c\n\n* changes:\n  AshmemTest: expand ProtTest cases\n  AshmemTest: test lseek() and read() on ashmem fds\n"
    },
    {
      "commit": "2cbbe9f7a35efdc94e8e34ef92eb6f70a85887fe",
      "tree": "215ecac00aa47fbac652e5e7bc99761176884b84",
      "parents": [
        "517e1f17cfec2143d4d10a64b1496a550acf3ea2"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu May 04 18:17:33 2017 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri May 05 14:37:12 2017 -0700"
      },
      "message": "init: do not log directly from read_file() and write_file()\n\nTheir callers may be able to add more context, so use an error string\nto record the error.\n\nBug: 38038887\nTest: boot bullhead\nTest: Init unit tests\nChange-Id: I46690d1c66e00a4b15cadc6fd0d6b50e990388c3\n"
    },
    {
      "commit": "517e1f17cfec2143d4d10a64b1496a550acf3ea2",
      "tree": "eda028c6359878b7f5d3ab56d2dc65a4ac1cad39",
      "parents": [
        "3d7ee068e0a0ce707965835f58abce65189abda4"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu May 04 17:40:33 2017 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri May 05 14:37:01 2017 -0700"
      },
      "message": "init: Check DecodeUid() result and use error string\n\nCheck the result of DecodeUid() and return failure when uids/gids are\nunable to be decoded.\n\nAlso, use an error string instead of logging directly such that more\ncontext can be added when decoding fails.\n\nBug: 38038887\nTest: Boot bullhead\nTest: Init unit tests\nChange-Id: I84c11aa5a8041bf5d2f754ee9af748344b789b37\n"
    },
    {
      "commit": "5ad9ba12df41e201f9b96e97ec5f8288c3493143",
      "tree": "29a9e3cda42304ab1d147de3b947ce67b2a52cf3",
      "parents": [
        "fd8fab19df622e37007946a504c33549a4710af1",
        "cd35664cdc5097bf38fa2f12aa310855b3c123af"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 05 21:33:55 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 05 21:33:56 2017 +0000"
      },
      "message": "Merge \"Improve udev failure diagnostics.\""
    },
    {
      "commit": "ae797ec305f44c6ef6b2db9861f27e5fed5de6a5",
      "tree": "78f0b73be7bc30b64894ba091f375583134c5b1a",
      "parents": [
        "fd8fab19df622e37007946a504c33549a4710af1"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Fri May 05 14:09:10 2017 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Fri May 05 14:09:10 2017 -0700"
      },
      "message": "Remove unused lambda captures\n\nTest: build\nBug: 37752547\nChange-Id: Id318f412ad81b6e7de3ad644cba4405bb04f2729\n"
    },
    {
      "commit": "4a9531d3263c5ea32501d3a1417373d465d04aac",
      "tree": "c317f037156d7183991bbf4b800af5dad9ea8587",
      "parents": [
        "be11d570ecd6d49e1ec06c83609d51431268efdb"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Tue Apr 11 15:08:36 2017 -0700"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Fri May 05 20:04:12 2017 +0000"
      },
      "message": "AshmemTest: expand ProtTest cases\n\nashmem buffers start with PROT_EXEC | PROT_READ | PROT_WRITE and can\nhave bits individually removed (but not added) through the\nASHMEM_SET_PROT_MASK ioctl.  Test that removing prot bits more than once\nworks, and that the kernel blocks adding prot bits.\n\nAlso test that the complementary ASHMEM_GET_PROT_MASK ioctl returns the\nexpected prot mask.\n\nTest:  /data/nativetest64/libcutils_test/libcutils_test64 \\\n       --gtest_filter\u003dAshmemTest.* (on hikey)\nTest:  /data/nativetest/libcutils_test/libcutils_test32 \\\n       --gtest_filter\u003dAshmemTest.* (on hikey)\n\nChange-Id: If7b13672547ec4cf6dfd1886197f40f12b2f1c85\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "be11d570ecd6d49e1ec06c83609d51431268efdb",
      "tree": "85b24a1c988bbd1fdf8c30426ab0dad5a3f41fbb",
      "parents": [
        "1dcd257a21b5212bcbbc1f6468b903fef8d29231"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Wed Apr 05 10:03:10 2017 -0700"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Fri May 05 19:58:09 2017 +0000"
      },
      "message": "AshmemTest: test lseek() and read() on ashmem fds\n\nashmem has in-kernel handlers for lseek() and read(), but they aren\u0027t\ncurrently being tested.\n\nAdd tests for various seeks on a buffer containing holes.  If we land\ninside data, then check that we read() the expected data at that offset.\n\nTest:  /data/nativetest64/libcutils_test/libcutils_test64 \\\n       --gtest_filter\u003dAshmemTest.* (on hikey)\nTest:  /data/nativetest/libcutils_test/libcutils_test32 \\\n       --gtest_filter\u003dAshmemTest.* (on hikey)\n\nBug: 37254818\nChange-Id: I96135a8cea2ce99932e3bc97b5254c95ef6b264a\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "cd35664cdc5097bf38fa2f12aa310855b3c123af",
      "tree": "5eb284e3e38426b7f9a53bd528eb20115d301956",
      "parents": [
        "bdbcdf3a16b9279791b6a409453db22b40c825fb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 03 17:25:34 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 05 12:50:16 2017 -0700"
      },
      "message": "Improve udev failure diagnostics.\n\nA couple of folks had trouble understanding the existing message.\n\nBefore:\n\n  8XV7N15917000596\tno permissions (udev requires plugdev group membership); see [http://developer.android.com/tools/device.html]\n\nAfter:\n\n  8XV7N15917000596\tno permissions (user buttmunch is not in the plugdev group); see [http://developer.android.com/tools/device.html]\n\nThis also fixes a libusb regression where we wouldn\u0027t show anything for\ndevices where we don\u0027t have permissions.\n\nBug: http://b/37707122\nTest: ran \"adb devices\" as user buttmunch\nChange-Id: I2fcd735ff4178145432b532a6e4dc8c93b2743fd\n"
    },
    {
      "commit": "fd8fab19df622e37007946a504c33549a4710af1",
      "tree": "a798a6ca14eae512f5cd84d5bb3c1f66491df03a",
      "parents": [
        "7245ab6a11d2486a5170bbb13073ba87765754d0",
        "f30a810bcea188fddc96a752f4198304444136c0"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 05 17:49:02 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 05 17:49:04 2017 +0000"
      },
      "message": "Merge \"Use async safe logging in signal handlers.\""
    },
    {
      "commit": "7245ab6a11d2486a5170bbb13073ba87765754d0",
      "tree": "1ee547ee6e23db5810a0d98cfd72a55aca2ad0d3",
      "parents": [
        "1dcd257a21b5212bcbbc1f6468b903fef8d29231",
        "11409548776bbbbd77c5a02f93394e43c140559c"
      ],
      "author": {
        "name": "Thierry Strudel",
        "email": "tstrudel@google.com",
        "time": "Fri May 05 16:37:25 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 05 16:37:26 2017 +0000"
      },
      "message": "Merge \"fs_mgr_avb: allow verification error when the device is unlocked\""
    },
    {
      "commit": "11409548776bbbbd77c5a02f93394e43c140559c",
      "tree": "1ee547ee6e23db5810a0d98cfd72a55aca2ad0d3",
      "parents": [
        "1dcd257a21b5212bcbbc1f6468b903fef8d29231"
      ],
      "author": {
        "name": "Bowgo Tsai",
        "email": "bowgotsai@google.com",
        "time": "Fri May 05 19:11:25 2017 +0800"
      },
      "committer": {
        "name": "Bowgo Tsai",
        "email": "bowgotsai@google.com",
        "time": "Fri May 05 22:36:40 2017 +0800"
      },
      "message": "fs_mgr_avb: allow verification error when the device is unlocked\n\nCurrent AVB flow in fs_mgr doesn\u0027t allow verification error even if the\ndevice is unlocked. This makes first stage mount fail when the device\nis flashed with a different-sized boot.img because there is verification\nerror (HASH_MISMATCH) for the boot partition.\n\nFix this by allowing verification error only when the device is\nunlocked. Whether to enable dm-verity for HASHTREE partitions is still\ncontrolled by the HASHTREE_DISABLED flag in the top-level vbmeta.\n\nBug: 37985430\nTest: First stage mount /vendor with AVB on a device.\n      Check dm-verity is enabled on /vendor.\nTest: Unlock device, flash a different-sized boot.img. Boot device and check\n      dm-verity is still enabled on /vendor.\nTest: First stage mount /vendor with AVB on a device with HASHTREE_DISABLED\n      is set on the top-level vbmeta, check dm-verity is not enable on /vendor.\n\nChange-Id: I709431bc1c37e4f86133d171cee8e90621cdb857\n"
    },
    {
      "commit": "1dcd257a21b5212bcbbc1f6468b903fef8d29231",
      "tree": "99d49302220565337578061162bc4f60234cd0c1",
      "parents": [
        "7b706c5b9e230895a1d8bb65f8f0b3d9c85cb703",
        "7f0a5bd7677d74ea5ea2aa84be2fdf3747eb85f1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 05 03:36:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 05 03:36:06 2017 +0000"
      },
      "message": "Merge \"trusty/storage/* to Android.bp\""
    },
    {
      "commit": "7b706c5b9e230895a1d8bb65f8f0b3d9c85cb703",
      "tree": "ce7fa3d90b2974f45e43777a91f30482256ab7f5",
      "parents": [
        "bdbcdf3a16b9279791b6a409453db22b40c825fb",
        "951968841145a45c423463e8cd9de592cc264f5f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 05 03:33:14 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 05 03:33:16 2017 +0000"
      },
      "message": "Merge \"use passed blk dev name for quota / super block check\""
    },
    {
      "commit": "951968841145a45c423463e8cd9de592cc264f5f",
      "tree": "ce7fa3d90b2974f45e43777a91f30482256ab7f5",
      "parents": [
        "bdbcdf3a16b9279791b6a409453db22b40c825fb"
      ],
      "author": {
        "name": "Keun-young Park",
        "email": "keunyoung@google.com",
        "time": "Thu May 04 18:28:15 2017 -0700"
      },
      "committer": {
        "name": "Keun-young Park",
        "email": "keunyoung@google.com",
        "time": "Thu May 04 18:31:06 2017 -0700"
      },
      "message": "use passed blk dev name for quota / super block check\n\n- It was using blk dev name from fstab and quota / super block check was always\n  failing for FDE\n\nbug: 37913441\nTest: reboot and confirm quota\nChange-Id: I8a9e890ef2787f2959e6a0225c6b21d35602f19e\n"
    },
    {
      "commit": "f30a810bcea188fddc96a752f4198304444136c0",
      "tree": "714d56df20aec116f8b96360a0ffac6ed1fdfc3c",
      "parents": [
        "8fad110bfa18b962b8c6e3a25297970a0febe1f2"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 03 17:22:24 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 04 17:15:17 2017 -0700"
      },
      "message": "Use async safe logging in signal handlers.\n\nTest: Boot on bullhead.\nTest: Ran the libbacktrace tests on bullhead.\nTest: Added a temporary log message in the signal handler, and ran the\nTest: backtrace tests.\nChange-Id: I0a6888c9f311af2c8cc7fbb4929315911bd2bb3c\n"
    },
    {
      "commit": "bdbcdf3a16b9279791b6a409453db22b40c825fb",
      "tree": "bd57bb505572a3a0ccbb970d885fbc9a401f7bb2",
      "parents": [
        "9083ff1c24b9e84b9bca46de1fd4a86243e73103",
        "45964a8e909533839a4d3b5c5976a4e614e8237f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 05 00:04:43 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 05 00:04:45 2017 +0000"
      },
      "message": "Merge \"Clean up the partition name mapping in fastboot.\""
    },
    {
      "commit": "9083ff1c24b9e84b9bca46de1fd4a86243e73103",
      "tree": "47c2933c2b7b16cbe51cd29138434adbc0681e99",
      "parents": [
        "c5dbd7134d274336a903e4d42cc5fafc6c087677",
        "fd713e53e890f5b3bf26a1c5a980137cc4378c3a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu May 04 23:47:30 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 04 23:47:32 2017 +0000"
      },
      "message": "Merge changes from topic \u0027adb_thread_safety\u0027\n\n* changes:\n  adb: wait for devices to come up instead of sleeping for 3s.\n  adb: initialize mDNS asynchronously.\n  adb: add fdevent_run_on_main_thread.\n"
    },
    {
      "commit": "c5dbd7134d274336a903e4d42cc5fafc6c087677",
      "tree": "8cf443544ad51462e8f81c82fc957c25c7f4d7f8",
      "parents": [
        "971e6585a6377acb14f79665b1071cb1e9d68efb",
        "be9024dfbbc1fc663d8fb20386378b4229fd02f1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 04 23:21:34 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 04 23:21:36 2017 +0000"
      },
      "message": "Merge \"This code has moved to toybox proper.\""
    },
    {
      "commit": "971e6585a6377acb14f79665b1071cb1e9d68efb",
      "tree": "f9cfe883f8ae8222ae171b594c19179b144e0847",
      "parents": [
        "8fad110bfa18b962b8c6e3a25297970a0febe1f2",
        "04a8218f09d342b3d0c4a67fc4df9ad805bc49cc"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu May 04 23:05:37 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 04 23:05:38 2017 +0000"
      },
      "message": "Merge \"adb: make darwin build with thread safety analysis.\""
    },
    {
      "commit": "fd713e53e890f5b3bf26a1c5a980137cc4378c3a",
      "tree": "7224b0001fc375b87ad7b3a0974057880988524d",
      "parents": [
        "6f46e6b912b2cd30a699757c3f4bbf9b679e2b79"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 03 22:37:10 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu May 04 16:03:12 2017 -0700"
      },
      "message": "adb: wait for devices to come up instead of sleeping for 3s.\n\nReplace a hard-coded 3 second sleep with logic to wait until we\u0027ve\nscanned USB devices once and they\u0027ve all come online.\n\nBefore:\n    adb shell true  0.00s user 0.00s system 0% cpu 3.047 total\n\nAfter:\n    adb shell true  0.00s user 0.00s system 9% cpu 0.041 total\n\nBug: http://b/37869663\nTest: `time adb shell true` after adb kill-server\nChange-Id: I251d42afb885908ed9d03167287594ea16650d3f\n"
    },
    {
      "commit": "04a8218f09d342b3d0c4a67fc4df9ad805bc49cc",
      "tree": "f9cfe883f8ae8222ae171b594c19179b144e0847",
      "parents": [
        "8fad110bfa18b962b8c6e3a25297970a0febe1f2"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu May 04 15:58:01 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu May 04 16:03:12 2017 -0700"
      },
      "message": "adb: make darwin build with thread safety analysis.\n\nTest: mma on darwin\nChange-Id: I44dfc53fc381e60de83f3bc503691cdb8179ca91\n"
    },
    {
      "commit": "6f46e6b912b2cd30a699757c3f4bbf9b679e2b79",
      "tree": "d1306f602ab118ec0e1462acc6a4cbd16aff97ff",
      "parents": [
        "4c936397c1dc8b127d7e27a9ee02ff7d0deef785"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 03 14:23:09 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu May 04 16:03:12 2017 -0700"
      },
      "message": "adb: initialize mDNS asynchronously.\n\nUse fdevent_run_on_main_thread to initialize mDNS in a thread and\nregister an fdevent from the main thread upon success.\n\nThis reduces the startup time of `adb server` by ~3 seconds when mDNS\ncan\u0027t be successfully started. With an already running adb server,\n`time adb server nodaemon` goes from:\n\n    adb server nodaemon  0.00s user 0.16s system 4% cpu 3.817 total\n\nto:\n\n    adb server nodaemon  0.00s user 0.01s system 1% cpu 0.665 total\n\nBug: http://b/37869663\nTest: `adb server nodaemon` with an existing adb server\nChange-Id: Ia5a1a2a138610f3bf6792400050ca68f95ae3734\n"
    },
    {
      "commit": "4c936397c1dc8b127d7e27a9ee02ff7d0deef785",
      "tree": "333f5eb2682085884aa523a9696027c7b646b60c",
      "parents": [
        "04a8218f09d342b3d0c4a67fc4df9ad805bc49cc"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 03 14:10:39 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu May 04 16:03:12 2017 -0700"
      },
      "message": "adb: add fdevent_run_on_main_thread.\n\nAdd a function to run a function on the main thread, to allow fdevents\nthat depend on a blocking function to be registered.\n\nBug: http://b/37869663\nTest: adb_test on linux\nChange-Id: I84a0b372360420b7647057297b8f437e8afa874e\n"
    },
    {
      "commit": "8fad110bfa18b962b8c6e3a25297970a0febe1f2",
      "tree": "789bbaf8ab89acae56b116c30c156d10cd279947",
      "parents": [
        "d673da4bfbe332ed35d21c3cc5b67c3abc762e73",
        "0f6a270d24ba373fdb74b2059e0366ba4fbbd8fe"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 04 21:06:10 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 04 21:06:12 2017 +0000"
      },
      "message": "Merge \"libcutils: fs_config internal table alias test\""
    },
    {
      "commit": "d673da4bfbe332ed35d21c3cc5b67c3abc762e73",
      "tree": "bb5eff10b7f00836a8e4f9c5de23e513e94705a0",
      "parents": [
        "61559e491ebdcbbb2e597c24570f76eb55817330",
        "47dea71b165c855ec40e855f7514fb745dacac38"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 04 21:00:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 04 21:00:07 2017 +0000"
      },
      "message": "Merge \"Move all logging to use the async safe logging.\""
    },
    {
      "commit": "61559e491ebdcbbb2e597c24570f76eb55817330",
      "tree": "7e641f482f778115a7fee6f3cf4ca03002818a97",
      "parents": [
        "3d7ee068e0a0ce707965835f58abce65189abda4",
        "323d5791b4b8080165799f8ee91d976e6be921cc"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 04 19:54:16 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 04 19:54:17 2017 +0000"
      },
      "message": "Merge \"init: cleanup exec_service documentation\""
    },
    {
      "commit": "0f6a270d24ba373fdb74b2059e0366ba4fbbd8fe",
      "tree": "1d566ba399526fb43366be62afbaff1b426a86ac",
      "parents": [
        "3d7ee068e0a0ce707965835f58abce65189abda4"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue May 02 08:56:15 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu May 04 11:41:17 2017 -0700"
      },
      "message": "libcutils: fs_config internal table alias test\n\nPrivate interface to permit testing only added to fs_config to\nexpose android_files and android_dirs.\n\nMake sure that both paths to a partition are specified in fs_config\ninternal tables.\n\nTest: gTest libcutils-unit-test --gtest_filter\u003dfs_config.*\nBug: 37703469\nChange-Id: Ida5fccdb786dc6d67325005d4fdd1fa1ffaef396\n"
    },
    {
      "commit": "323d5791b4b8080165799f8ee91d976e6be921cc",
      "tree": "de4e3eda97807eb5b91c3a954fc109c7bade43c3",
      "parents": [
        "672dd970f475a3166f9558affcb0aaafeda4322b"
      ],
      "author": {
        "name": "William Roberts",
        "email": "william.c.roberts@intel.com",
        "time": "Wed May 03 15:04:19 2017 -0700"
      },
      "committer": {
        "name": "William Roberts",
        "email": "william.c.roberts@intel.com",
        "time": "Thu May 04 11:14:23 2017 -0700"
      },
      "message": "init: cleanup exec_service documentation\n\nThe exec_service documentation was difficult to read, clarify it.\n\nTests:\nRun grip.py to verify that the markdown still works correctly.\nRun aspell to verify spelling.\n\nChange-Id: I29bdd456f3d3ea2a91c9d4772bd09a5a195f97a9\nSigned-off-by: William Roberts \u003cwilliam.c.roberts@intel.com\u003e\n"
    },
    {
      "commit": "3d7ee068e0a0ce707965835f58abce65189abda4",
      "tree": "f492d1d407eda502b03f5ca21fb70307bca5dc9e",
      "parents": [
        "e2629c5682bdd680cbca94ac496f34be4a891a8d",
        "92433d8af0c50133483eaee8ed8f3ac8ee3b455f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 04 17:33:52 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 04 17:33:54 2017 +0000"
      },
      "message": "Merge \"Remove bogus _LARGEFILE_SOURCE.\""
    },
    {
      "commit": "7f0a5bd7677d74ea5ea2aa84be2fdf3747eb85f1",
      "tree": "f71455a0507374b53ea50011543be7283d3aab2b",
      "parents": [
        "8fc6cc8910dbb4c77333aa432b4732237157ed0b"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed May 03 19:10:49 2017 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu May 04 15:51:50 2017 +0000"
      },
      "message": "trusty/storage/* to Android.bp\n\nTest: links\nBug: 37512442\nChange-Id: I53449f572e41a24a4e49b16ef01bdbb23cc10cb5\n"
    },
    {
      "commit": "be9024dfbbc1fc663d8fb20386378b4229fd02f1",
      "tree": "cd6910bf96a64e249f8c88f1c52e2313b736f55e",
      "parents": [
        "e2629c5682bdd680cbca94ac496f34be4a891a8d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 03 22:56:10 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 03 22:56:10 2017 -0700"
      },
      "message": "This code has moved to toybox proper.\n\nBug: http://b/36653902\nTest: ran toybox tests\nChange-Id: If0f858121fa29b49fe85c3c21eacd8d5c55fb57b\n"
    },
    {
      "commit": "45964a8e909533839a4d3b5c5976a4e614e8237f",
      "tree": "fcf8b3e5fd4f1a67d2a793f4037b57101608cf80",
      "parents": [
        "e2629c5682bdd680cbca94ac496f34be4a891a8d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 03 22:43:23 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 03 22:45:37 2017 -0700"
      },
      "message": "Clean up the partition name mapping in fastboot.\n\nAlso remove -p.\n\nBug: N/A\nTest: builds\nChange-Id: Iea55affc7262323c0d341003359d3175580efbfd\n"
    },
    {
      "commit": "92433d8af0c50133483eaee8ed8f3ac8ee3b455f",
      "tree": "e8bdcace624ab377e603b238cf54c7729085d860",
      "parents": [
        "5eefcbdd3b1eeb5a00247a92241496ee6c80f107"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 03 22:21:16 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 03 22:21:16 2017 -0700"
      },
      "message": "Remove bogus _LARGEFILE_SOURCE.\n\nBug: N/A\nTest: builds\nChange-Id: I145a521a58dc8f838ce188540b02bcda4e81b610\n"
    },
    {
      "commit": "e2629c5682bdd680cbca94ac496f34be4a891a8d",
      "tree": "bc389d3fb5075549e0b07318a621321bfb9b8933",
      "parents": [
        "c7988b1f684d7c0b86a0e3d58228ebc45297c858",
        "2d019f859b5b4c29eb59794c731316cefa99994d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 04 02:07:02 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 04 02:07:02 2017 +0000"
      },
      "message": "Merge \"init: manually restorecon mke2fs tools on ramdisk\""
    },
    {
      "commit": "47dea71b165c855ec40e855f7514fb745dacac38",
      "tree": "16a4c2a15d9ded4438d1dd7d45a64764c16b8047",
      "parents": [
        "c7988b1f684d7c0b86a0e3d58228ebc45297c858"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 03 17:34:29 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 03 18:04:18 2017 -0700"
      },
      "message": "Move all logging to use the async safe logging.\n\nAlso, add a link to the .clang-format-2 for this directory and clang\nformat the files that changed.\n\nBug: 31919199\n\nTest: Boot bullhead.\nTest: Run unit tests on bullhead. There are a few that fail, but they\nTest: failed before and are not a result of this change.\nChange-Id: I3d3b2111f6f6bf8a0d7039295d34d5168c191651\n"
    },
    {
      "commit": "c7988b1f684d7c0b86a0e3d58228ebc45297c858",
      "tree": "3f1116ac201f396a1bc1216941f9240b65954443",
      "parents": [
        "5eefcbdd3b1eeb5a00247a92241496ee6c80f107",
        "ef3d343254405cc360b4df843c6e4a843c335012"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu May 04 00:12:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 04 00:12:23 2017 +0000"
      },
      "message": "Merge \"adb: use the actual wMaxPacketSize for usb endpoints.\""
    },
    {
      "commit": "5eefcbdd3b1eeb5a00247a92241496ee6c80f107",
      "tree": "c107adff33b06fa76cc4de53efca405a3f4e3cf9",
      "parents": [
        "49bbe16447189c4e06d033cd7bc9704d2a717a16",
        "e67da71dc18849e8b850abde51d12d453441e3be"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 03 23:48:24 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 03 23:48:25 2017 +0000"
      },
      "message": "Merge \"Add dtbo image support for device tree overlay\""
    },
    {
      "commit": "49bbe16447189c4e06d033cd7bc9704d2a717a16",
      "tree": "30e9ecc78abf00ad427bf260136fe9a0236aa5f7",
      "parents": [
        "2983d2710ee56a665541df9ec7d0a7cf8e9c17ca",
        "d147cb5887f1ee9c978f58cdf59e9ddb99209ac6"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed May 03 23:42:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 03 23:43:00 2017 +0000"
      },
      "message": "Merge \"Make /data/data a symlink to /data/user/0\""
    },
    {
      "commit": "2983d2710ee56a665541df9ec7d0a7cf8e9c17ca",
      "tree": "c802029cc8d1611d594a7df07d5798e5e7906b38",
      "parents": [
        "e1e3e20337a192ce7de37a2cf2c99614d0d0ce1e",
        "68f679c35b930fb1619fed101d7a850abb701f0a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 03 23:38:57 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 03 23:38:59 2017 +0000"
      },
      "message": "Merge \"adb: enable -Wthread-safety on linux/darwin.\""
    },
    {
      "commit": "e1e3e20337a192ce7de37a2cf2c99614d0d0ce1e",
      "tree": "cfeda341cc4156f9c7f936c75c7d7ccf0f6378ec",
      "parents": [
        "5ad06cbb1c934997e2c0af0608d7c80ce4ee477c",
        "4599627492aa90e537fe681c1f2f439a29549382"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 03 23:24:13 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 03 23:24:14 2017 +0000"
      },
      "message": "Merge changes Ieb44fa8f,I01b26fe5\n\n* changes:\n  init: setup keyring before ueventd starts\n  logd: refine permissions to access /data/system/packages.list\n"
    },
    {
      "commit": "2d019f859b5b4c29eb59794c731316cefa99994d",
      "tree": "2b7e14dfb0ad4b0e33bf31202aa936a225010bb7",
      "parents": [
        "5ad06cbb1c934997e2c0af0608d7c80ce4ee477c"
      ],
      "author": {
        "name": "Jin Qian",
        "email": "jinqian@google.com",
        "time": "Wed May 03 11:52:20 2017 -0700"
      },
      "committer": {
        "name": "Jin Qian",
        "email": "jinqian@google.com",
        "time": "Wed May 03 16:15:45 2017 -0700"
      },
      "message": "init: manually restorecon mke2fs tools on ramdisk\n\nFiles in the ramdisk by default have the rootfs label and must be\nmanually restoreconed.\n\nBug: 35219933\nChange-Id: I2a749f128dc3a609907101ce703747f8990b4386\n"
    },
    {
      "commit": "5ad06cbb1c934997e2c0af0608d7c80ce4ee477c",
      "tree": "a24f0502a70e5354629a455140a9734bb416eab4",
      "parents": [
        "672dd970f475a3166f9558affcb0aaafeda4322b",
        "5a86cb7694b31c7506ed5c42241f4e601efa65cb"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 03 22:11:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 03 22:11:06 2017 +0000"
      },
      "message": "Merge \"init: use do_exec() for init_user0\""
    },
    {
      "commit": "4599627492aa90e537fe681c1f2f439a29549382",
      "tree": "d28fb9beda3fd0840210e71e7257fafa4c08c847",
      "parents": [
        "d392ac160cb207b7351c359c99cb095fdfb5eecb"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue May 02 14:44:39 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed May 03 21:51:04 2017 +0000"
      },
      "message": "init: setup keyring before ueventd starts\n\nInvent keyutils.h to supply capability to set session keyring.\nThe keyring will hold things like the FBE encryption keys.\n\nTest: gTest logd-unit-tests --gtest_filter\u003dlogd.statistics\nBug: 37751120\nBug: 36645158\nChange-Id: Ieb44fa8f53dda6cf506a6243498c72d7f7f3cde7\n"
    },
    {
      "commit": "d147cb5887f1ee9c978f58cdf59e9ddb99209ac6",
      "tree": "4ed4400b3335b851e2b13d4bab28de6967c616d3",
      "parents": [
        "672dd970f475a3166f9558affcb0aaafeda4322b"
      ],
      "author": {
        "name": "cjbao",
        "email": "cathy.bao@intel.com",
        "time": "Wed Apr 12 00:01:41 2017 +0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed May 03 21:38:31 2017 +0000"
      },
      "message": "Make /data/data a symlink to /data/user/0\n\nFor legacy reason, /data/data is a real dir and /data/user/0 is a\nsymbolic link to it.  Overhead for linux kernel to walk through\nsymbolic link is not negligible. This is unnessary overhead to\ncarry over.  This patch is to make /data/user/0 a a real dir and\nmake legacy folder /data/data a symbolic link.  OTAed system does\nnot get impacted.\n\nTest: Manual test\nChange-Id: I419564a75f6ebf3154badb8725ba9831164592b6\nSigned-off-by: cjbao \u003ccathy.bao@intel.com\u003e\n"
    },
    {
      "commit": "e67da71dc18849e8b850abde51d12d453441e3be",
      "tree": "73f5a9509d26c3af61bf0aa389a4b401acfff2fd",
      "parents": [
        "672dd970f475a3166f9558affcb0aaafeda4322b"
      ],
      "author": {
        "name": "Yueyao Zhu",
        "email": "yueyao@google.com",
        "time": "Wed May 03 14:33:32 2017 -0700"
      },
      "committer": {
        "name": "Yueyao Zhu",
        "email": "yueyao@google.com",
        "time": "Wed May 03 14:36:43 2017 -0700"
      },
      "message": "Add dtbo image support for device tree overlay\n\nTest: Used the built fastboot tool to run flashall on a device\nBug: 32969430\nBug: 36813951\nChange-Id: If2db3055bb7250a57d9a78b0534df491b68b6224\n"
    },
    {
      "commit": "d392ac160cb207b7351c359c99cb095fdfb5eecb",
      "tree": "61565b93ee2866a02dbfec46f42eb9080b43d02f",
      "parents": [
        "672dd970f475a3166f9558affcb0aaafeda4322b"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Apr 27 14:46:31 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed May 03 14:35:14 2017 -0700"
      },
      "message": "logd: refine permissions to access /data/system/packages.list\n\nRefine DAC security surrounding logd.daemon worker thread and add a\npositive test for logd failure to access /data/system/packages.list.\n\n- Add AID_PACKAGE_INFO to groups of worker thread.\n- Move AID_SYSTEM to groups, setgid to AID_LOGD.\n- Do not drop capabilities until after setting the uid and gids.\n- Add a test that is part of logd.statistics test to check when\n  packagelistparser appears broken.\n- If /data/system/packages.list is encrypted, ensure we do not pick\n  up the existing inode to ensure strong positive when finding access\n  problems.\n- Replace all occurrences of NULL with nullptr in gTest code for\n  compliance with best practices.\n\nTest: gTest logd-unit-tests --gtest_filter\u003dlogd.statistics\n      (expect consistent failure, later CLs fix)\nBug: 37751120\nBug: 36645158\nChange-Id: I01b26fe5e25203246ae432d272c8daa9c07cab54\n"
    },
    {
      "commit": "68f679c35b930fb1619fed101d7a850abb701f0a",
      "tree": "303a4a242f039f3da3c2f4ee37620a425fdbcf1c",
      "parents": [
        "483d2f9a59bf4a5130e0a79306f30c25f675812c"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 03 14:01:35 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 03 14:28:21 2017 -0700"
      },
      "message": "adb: enable -Wthread-safety on linux/darwin.\n\nDelete the sysdeps/mutex tests that -Wthread-safety complains about.\nWe\u0027re using the standard library\u0027s std::mutex on all platforms now,\nanyway.\n\nTest: mma\nChange-Id: I3bf958c72604b29dfb1d9c898d3c9aa34aed2685\n"
    },
    {
      "commit": "5a86cb7694b31c7506ed5c42241f4e601efa65cb",
      "tree": "a24f0502a70e5354629a455140a9734bb416eab4",
      "parents": [
        "672dd970f475a3166f9558affcb0aaafeda4322b"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed May 03 13:19:03 2017 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed May 03 13:25:08 2017 -0700"
      },
      "message": "init: use do_exec() for init_user0\n\nSimilar to what installkey used to do, init_user0 forks and\nsynchronously waits for vdc to return.  This is dangerous to do in\ninit however as init also processes properties from a single thread.\n\nI\u0027m not aware of any specific issues that this is currently causing,\nbut it\u0027s a good preventative measure to match what installkey does and\nuse do_exec().\n\nTest: Boot bullhead, see that init_user0 still happens\nChange-Id: I853c61594fe3d97e91bbb2319ebddf2bbe80d457\n"
    },
    {
      "commit": "ef3d343254405cc360b4df843c6e4a843c335012",
      "tree": "c6bc56796e85122ec28e989067efbb2ff0166c60",
      "parents": [
        "483d2f9a59bf4a5130e0a79306f30c25f675812c"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue May 02 15:01:09 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 03 12:32:39 2017 -0700"
      },
      "message": "adb: use the actual wMaxPacketSize for usb endpoints.\n\nPreviously, adb was assuming a fixed maximum packet size of 1024 bytes\n(the value for an endpoint connected via USB 3.0). When connected to an\nendpoint that has an actual maximum packet size of 512 bytes (i.e.\nevery single device over USB 2.0), the following could occur:\n\n    device sends amessage with 512 byte payload\n    client reads amessage\n    client tries to read payload with a length of 1024\n\nIn this scenario, the kernel will block, waiting for an additional\npacket which won\u0027t arrive until something else gets sent across the\nwire, which will result in the previous read failing, and the new\npacket being dropped.\n\nBug: http://b/37783561\nTest: python test_device.py on linux/darwin, with native/libusb\nChange-Id: I556f5344945e22dd1533b076f662a97eea24628e\n"
    },
    {
      "commit": "672dd970f475a3166f9558affcb0aaafeda4322b",
      "tree": "929cab9727eaccb874c7ee30faeed764f5648ab9",
      "parents": [
        "deb19a631fd26583e81743010d8cd83f122a708a",
        "e7656b7200d934d6f77df422d6d3dee469230dea"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed May 03 18:14:37 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 03 18:14:38 2017 +0000"
      },
      "message": "Merge \"ueventd: do not reference init\u0027s sehandle\""
    },
    {
      "commit": "deb19a631fd26583e81743010d8cd83f122a708a",
      "tree": "67de504f6e150ba6e8d3ef284f514c286f72fedc",
      "parents": [
        "c50245e43e3f2acd138d9a153b03ba880cb7e41b",
        "ac225780dd6ccf217e5fb64c7af8f41f9c54f4a1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 03 17:43:33 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 03 17:43:35 2017 +0000"
      },
      "message": "Merge \"Move libc_logging to libasync_safe.\""
    },
    {
      "commit": "c50245e43e3f2acd138d9a153b03ba880cb7e41b",
      "tree": "5594b82a0ecc85e50344e803412bd3ef8204ba04",
      "parents": [
        "499af386236a978319d6e2784ba9ef8c14ed8c6e",
        "163ecc68c7a7ee06a384880fec0d05d303812a4e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 03 16:48:43 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 03 16:48:44 2017 +0000"
      },
      "message": "Merge \"libcutils: convert fs_config.cpp\""
    },
    {
      "commit": "499af386236a978319d6e2784ba9ef8c14ed8c6e",
      "tree": "9c2956853042a06384105a3ac4c4c0298f44bc6d",
      "parents": [
        "0447a3e5d1591b0a232106534ca0463bac5346dc",
        "4cc03611cdd8f381d199e63f353075d6c7a3c44d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 03 15:21:24 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 03 15:21:26 2017 +0000"
      },
      "message": "Merge \"Don\u0027t display bugreport progress when it recedes, for real...\""
    },
    {
      "commit": "163ecc68c7a7ee06a384880fec0d05d303812a4e",
      "tree": "ad606f2d47fb000b5e4205a979391d5c337db29e",
      "parents": [
        "0447a3e5d1591b0a232106534ca0463bac5346dc"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue May 02 08:56:15 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed May 03 08:04:35 2017 -0700"
      },
      "message": "libcutils: convert fs_config.cpp\n\nC++ify fs_config.c\n\nTest: gTest libcutils-test\nBug: 37703469\nChange-Id: Id48ae22f203ed923942257575296c69b32345ae6\n"
    },
    {
      "commit": "ac225780dd6ccf217e5fb64c7af8f41f9c54f4a1",
      "tree": "e1d7d6ac5060a784e0ed675e3dfb6ef7da963e8a",
      "parents": [
        "8fc6cc8910dbb4c77333aa432b4732237157ed0b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 25 11:23:10 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue May 02 18:38:46 2017 -0700"
      },
      "message": "Move libc_logging to libasync_safe.\n\nMove the name of the \"private/libc_logging.h\" header to \u003casync_safe/log.h\u003e.\n\nFor use of libc_malloc_debug_backtrace, remove the libc_logging library.\nThe library now includes the async safe log functions.\n\nRemove the references to libc_logging.cpp in liblog, it isn\u0027t needed because\nthe code is already protected by a check of the __ANDROID__ define.\n\nTest: Compiled and boot bullhead device.\nTest: Run debuggerd unit tests.\nTest: Run liblog unit tests on target and host.\nTest: Run libmemunreachable unit tests (these tests are flaky though).\nChange-Id: Ie79d7274febc31f210b610a2c4da958b5304e402\n"
    },
    {
      "commit": "0447a3e5d1591b0a232106534ca0463bac5346dc",
      "tree": "a051037cf004d7acb85bef2fa637d8f0c9c7c36f",
      "parents": [
        "dd6e73f432b78bdcba813d6f7ab3b3d18389418f",
        "ea5fca4cd06006e99695c8372be0a58302314651"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 03 01:33:07 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 03 01:33:07 2017 +0000"
      },
      "message": "Merge \"init: fix first stage mount failure due to /dev/device-mapper not found\""
    },
    {
      "commit": "dd6e73f432b78bdcba813d6f7ab3b3d18389418f",
      "tree": "f62e5cc24907075fc787886214e31bfcbbdff2b0",
      "parents": [
        "66b25eb810eb542e7b6ef5d5b0f89cf5f23abe06",
        "bf0492a9a1e3976dd4aea5596d1b1e10e8cbeea2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 03 01:02:19 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 03 01:02:21 2017 +0000"
      },
      "message": "Merge \"Preserve errno better in native_handle functions.\""
    },
    {
      "commit": "66b25eb810eb542e7b6ef5d5b0f89cf5f23abe06",
      "tree": "3970250e46fa1522f15cdae201f12c1efc56bf47",
      "parents": [
        "8fc6cc8910dbb4c77333aa432b4732237157ed0b",
        "09e794c05d392941e04d961e1c4072b8bcc4133a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 03 00:51:06 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 03 00:51:09 2017 +0000"
      },
      "message": "Merge \"Improve \"adb sideload\" error reporting.\""
    },
    {
      "commit": "09e794c05d392941e04d961e1c4072b8bcc4133a",
      "tree": "ba9461027b91736ef593fa358c7910ba34a06db1",
      "parents": [
        "16214f2955eb8570f120893a02d978ca91f0a5a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 02 14:31:59 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 02 14:41:04 2017 -0700"
      },
      "message": "Improve \"adb sideload\" error reporting.\n\nRather than quietly fall through to the legacy code with no explanation,\nsay why the first connection failed, and that the second attempt is only\ngoing to be relevant for folks trying to sideload to a pre-KitKit device.\n\nBefore:\n\n  $ adb sideload mysid-ota-424425.zip\n  opening \u0027mysid-ota-424425.zip\u0027...\n  connecting...\n  falling back to older sideload method...\n  error: closed\n\nAfter:\n\n  $ adb sideload mysid-ota-424425.zip\n  adb: sideload connection failed: no devices/emulators found\n  adb: trying pre-KitKat sideload method...\n  adb: pre-KitKat sideload connection failed: no devices/emulators found\n\nAlso switch the legacy code to just read+write blocks rather than trying to\nload the whole OTA package into RAM (which is in short supply on Win32).\nThis is probably of no practical use other than that it lets us report a\nbetter error message (better than \"terminate called after throwing an\ninstance of \u0027std::bad_alloc\u0027\").\n\nBug: https://issuetracker.google.com/37139736\nTest: \"adb sideload\" with no device/a mysid/an angler\nChange-Id: Ia568044aac61bd054301ebfd7fcd5ad5d6f3147a\n"
    },
    {
      "commit": "4cc03611cdd8f381d199e63f353075d6c7a3c44d",
      "tree": "307f62adc590d59c99e7bdd41aa2d2fb7a442225",
      "parents": [
        "dedcbaad51106a62a72721a68a27c132d3c04a82"
      ],
      "author": {
        "name": "Felipe Leme",
        "email": "felipeal@google.com",
        "time": "Tue May 02 10:06:33 2017 -0700"
      },
      "committer": {
        "name": "Felipe Leme",
        "email": "felipeal@google.com",
        "time": "Tue May 02 10:08:39 2017 -0700"
      },
      "message": "Don\u0027t display bugreport progress when it recedes, for real...\n\nThe previous fix was taking account just the progress reported by dumpstate,\nnot progress/percentage. As such, it was not detecting the cases where the\npercentage decreased but the progress didn\u0027t.\n\nBug: 37878670\nTest: m -j32 adb_test \u0026\u0026 ./out/host/linux-x86/nativetest64/adb_test/adb_test --gtest_filter\u003dBugreportTest.*\n\nChange-Id: I5830028f3191a9b17f63aeed5c049b29fa7d1179\n"
    },
    {
      "commit": "ea5fca4cd06006e99695c8372be0a58302314651",
      "tree": "5e9de5927d1a584e05f3db2de20a6306d545dfa7",
      "parents": [
        "d340c1ebbe62246bdee64ae2c7e88f42cb0e8360"
      ],
      "author": {
        "name": "Bowgo Tsai",
        "email": "bowgotsai@google.com",
        "time": "Tue May 02 18:30:33 2017 +0800"
      },
      "committer": {
        "name": "Bowgo Tsai",
        "email": "bowgotsai@google.com",
        "time": "Wed May 03 00:38:43 2017 +0800"
      },
      "message": "init: fix first stage mount failure due to /dev/device-mapper not found\n\nIt has been reported that fs_mgr failed to open /dev/device-mapper\nduring the first stage mount. It\u0027s because other uevent (e.g., i2c\ncharger device) happens to be sent at the same time we\u0027re triggering\nthe device-mapper uevent to be sent. Current implementation returns\nCOLDBOOT_STOP unconditionally so it will only process the first received\nuevent, leaving device-mapper uevent unhandled when the race happens.\n\nFix this by only returning COLDBOOT_STOP when the received uevent-\u003epath\nmatches that of device mapper.\n\nBug: 37745254\n\nTest: first stage mount /vendor with vboot 2.0 (avb) on bullhead\nTest: first stage mount /vendor with vboot 1.0 on sailfish\nChange-Id: I4a77093ec8f90a5ca981a088f34d082d0270533b\n"
    },
    {
      "commit": "8fc6cc8910dbb4c77333aa432b4732237157ed0b",
      "tree": "33ef1d3ba14a3b6e671f8caf36ad8848fa057a19",
      "parents": [
        "6ea4f213d8aef05bdc2670769a30564b70578c0a",
        "1e033d6804afb8f671065c3e094a4cc52919a5e9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 02 15:24:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 02 15:24:25 2017 +0000"
      },
      "message": "Merge \"adb: Support \u0027adb enable/disable-verity\u0027 when using AVB.\""
    },
    {
      "commit": "1e033d6804afb8f671065c3e094a4cc52919a5e9",
      "tree": "33ef1d3ba14a3b6e671f8caf36ad8848fa057a19",
      "parents": [
        "6ea4f213d8aef05bdc2670769a30564b70578c0a"
      ],
      "author": {
        "name": "David Zeuthen",
        "email": "zeuthen@google.com",
        "time": "Wed Apr 12 16:07:06 2017 -0400"
      },
      "committer": {
        "name": "David Zeuthen",
        "email": "zeuthen@google.com",
        "time": "Tue May 02 09:39:55 2017 -0400"
      },
      "message": "adb: Support \u0027adb enable/disable-verity\u0027 when using AVB.\n\nLink with libavb_user and use this to enable/disable dm-verity if AVB\nis in use.\n\nBug: 34124301\nTest: Manually tested.\nChange-Id: Ic03651312b955081cb3c126f6dafc46d6eeec0da\n"
    },
    {
      "commit": "6ea4f213d8aef05bdc2670769a30564b70578c0a",
      "tree": "b81defb8556f43277c9c8e98bc1d7954bc282935",
      "parents": [
        "d340c1ebbe62246bdee64ae2c7e88f42cb0e8360",
        "16c6fd1da7ecbafdd0d72c945d4974edc088d269"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 02 13:35:57 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 02 13:35:58 2017 +0000"
      },
      "message": "Merge \"fs_mgr: Clear AvbOps struct.\""
    },
    {
      "commit": "bf0492a9a1e3976dd4aea5596d1b1e10e8cbeea2",
      "tree": "0d636e0d98234ca805c649a6c1f4099552da0dbc",
      "parents": [
        "16214f2955eb8570f120893a02d978ca91f0a5a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 01 21:34:15 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 01 21:34:15 2017 -0700"
      },
      "message": "Preserve errno better in native_handle functions.\n\nSo a caller of native_handle_clone can trust errno to be relevant.\n\nBug: http://b/37215366\nTest: builds\nChange-Id: I0992f38ad559db4a02fce07123842dbad8e3f473\n"
    },
    {
      "commit": "d340c1ebbe62246bdee64ae2c7e88f42cb0e8360",
      "tree": "4fd37234d51e4d2d1fd2445750c74eded1fdae95",
      "parents": [
        "ab28acef763f2ff709d606541016ea0b9d4c1939",
        "0b771b33fd934db9a7962ad704cdd38f72895c1a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 02 00:51:47 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 02 00:51:48 2017 +0000"
      },
      "message": "Merge \"Stop writing NUL bytes in adbkey.pub.\""
    },
    {
      "commit": "ab28acef763f2ff709d606541016ea0b9d4c1939",
      "tree": "18f23e28f2bd37c88f8f1b84cccedbe29a71047f",
      "parents": [
        "7c3f147070acf6b5d859f2b3b280e04d9e5c41a6",
        "fafea32468e0d59c1ce2eb845dd07a0b4e746cf0"
      ],
      "author": {
        "name": "Chenjie Luo",
        "email": "cjluo@google.com",
        "time": "Tue May 02 00:44:46 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 02 00:44:47 2017 +0000"
      },
      "message": "Merge \"Modularize logd.\""
    },
    {
      "commit": "7c3f147070acf6b5d859f2b3b280e04d9e5c41a6",
      "tree": "2b52f58c428de4957e66a062cdd6781be5350195",
      "parents": [
        "6a8314c8bfa4a182ddf560609ebb514ec30b32bf",
        "7da548578c25683fe0082283303e16961df312da"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue May 02 00:30:15 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 02 00:30:17 2017 +0000"
      },
      "message": "Merge \"init: add an initializer for keychord_id_\""
    },
    {
      "commit": "e7656b7200d934d6f77df422d6d3dee469230dea",
      "tree": "9ef0aa7484486d201006d9dfd6f9deb03db0fc1b",
      "parents": [
        "6a8314c8bfa4a182ddf560609ebb514ec30b32bf"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon May 01 17:10:09 2017 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon May 01 17:22:49 2017 -0700"
      },
      "message": "ueventd: do not reference init\u0027s sehandle\n\nInit exposes a global \u0027sehandle\u0027 that ueventd references as part of\ndevices.cpp and util.cpp.  This is particularly dangerous in\ndevice_init() in which both uevent and init write to this global.\n\nThis change creates a separate local copy for devices.cpp and puts\nrestrictions on where init.h can be included to make sure the global\nused by init is not reference by non-init code.  Future changes to\ninit should remove this global.\n\nTest: Boot bullhead\n\nChange-Id: Ifefa9e1932e9d647d06cca2618f5c8e5a7a85460\n"
    },
    {
      "commit": "0b771b33fd934db9a7962ad704cdd38f72895c1a",
      "tree": "b465007b08edfa14187d7ef9066365bc71c3cec6",
      "parents": [
        "16214f2955eb8570f120893a02d978ca91f0a5a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 01 13:45:30 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 01 16:05:16 2017 -0700"
      },
      "message": "Stop writing NUL bytes in adbkey.pub.\n\nIn N we moved some code from C to C++ without realizing that EVP_EncodedLength\nincludes space for a terminating NUL and EVP_EncodeBlock writes one. Because\nour key reading code copes with the NUL, we never noticed.\n\nDistinguish between the required space returned by EVP_EncodedLength and the\nactual number of bytes (not including NUL) used return by EVP_EncodeBlock.\n\nBug: http://b/36187819\nTest: hexdump of ~/.android/adbkey.pub\nChange-Id: I81a487ddbb5c884593b6426d1f41cfaece26ff90\n"
    },
    {
      "commit": "6a8314c8bfa4a182ddf560609ebb514ec30b32bf",
      "tree": "54c0cb66d6d953d1e79e65c4c7552bfec6ee649b",
      "parents": [
        "c8877530c75cd392bb9a22aa6ba07d52763308a7",
        "6daf5144483d66384a61649ed6225a4e07b72650"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon May 01 22:48:28 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 01 22:48:29 2017 +0000"
      },
      "message": "Merge \"ueventd: remove leftovers of the SELinux policy update mechanism\""
    },
    {
      "commit": "c8877530c75cd392bb9a22aa6ba07d52763308a7",
      "tree": "498f802af6f57c165887dce7bd3b8e2a5a743312",
      "parents": [
        "1879c00e64cf4e89e26e099404e439ebe6c9c0bf",
        "f51c66b23b675bd2198e3793090f8ef9e8eb8ef0"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon May 01 22:36:07 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 01 22:36:12 2017 +0000"
      },
      "message": "Merge \"ueventd: fix typo from previous patchset\""
    }
  ],
  "next": "7da548578c25683fe0082283303e16961df312da"
}
