)]}'
{
  "log": [
    {
      "commit": "4ce902c30e087f45c6d6ede2012519e2eea44194",
      "tree": "b4ffde5e3437db3f222fb08a9a8e971edde70b36",
      "parents": [
        "7fd1e75e2482e7f28eff15d9b6c8614132680ce6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 12 13:55:51 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 12 13:55:51 2016 -0700"
      },
      "message": "Support 32-bit ARM vdso.\n\nLinux 4.1 added this.\n\nBug: http://b/19198045\nChange-Id: I28be802ff403a61dd6733a001411b3ff05fef5a5\n"
    },
    {
      "commit": "93c0f5ee00d1357247fda333c9d49c8673c9c83b",
      "tree": "9afe2dc72f063df4b498aa1328be122e389fd777",
      "parents": [
        "487a1823e8617011009eded8eae9a75c1f871887"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Oct 06 11:08:13 2015 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Oct 09 15:59:04 2015 -0700"
      },
      "message": "Move VDSO pointers to a shared globals struct.\n\nChange-Id: I01cbc9cf0917dc1fac52d9205bda2c68529d12ef\n"
    },
    {
      "commit": "10726d52ac3a7b34a6e2d9c40532037ca1108485",
      "tree": "49c3613ab638c4f7f322d4ad5d95dfbbd7b82fd2",
      "parents": [
        "3bcfd47c6836a952b2093c64feb9f1e382891256"
      ],
      "author": {
        "name": "Robert Jarzmik",
        "email": "robert.jarzmik@intel.com",
        "time": "Wed Jul 15 15:26:43 2015 +0200"
      },
      "committer": {
        "name": "Mingwei Shi",
        "email": "mingwei.shi@intel.com",
        "time": "Wed Jul 22 01:31:38 2015 +0000"
      },
      "message": "libc: arch-x86: implement kernel vdso time functions\n\nThis patch give the possibility of time vdso support on 32bit kernel.\nIf the 32bit x86 kernel provides gettimeofday() and clock_gettime()\nprimitives in vdso. In this case make bionic use them. If the kernel\ndoesn\u0027t provide them, fallback to the legacy system call versions.\n\nChange-Id: I87b772a9486fa356903e1f98f486ab9eb0b6f6f7\nSigned-off-by: Robert Jarzmik \u003crobert.jarzmik@intel.com\u003e\nSigned-off-by: Mingwei Shi \u003cmingwei.shi@intel.com\u003e\n"
    },
    {
      "commit": "613f8145087a763e128d58e638bc85799fb06989",
      "tree": "8c358ed5f4f945c623d6d460e014df59843c669d",
      "parents": [
        "e70d7a78f0bfba8b09d37c145769cb8d1d7c5fb6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 20 22:34:27 2015 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 20 15:59:33 2015 -0700"
      },
      "message": "Revert \"Revert \"make vdso function pointers read-only at runtime\"\"\n\nThis reverts commit 1946856b1f18a27c51ba30bb9e304f25b722ee05.\n\nThis goes back to the original scheme of PROT_NONEing a page within\nlibc. Allocating a new page didn\u0027t fail safe for cases where these\nfunctions are called from the dynamic linker.\n\nBug: http://b/22568628\nChange-Id: I3e7241c8b54c27ea4a898bc952375c1e9ae38c80\n"
    },
    {
      "commit": "1946856b1f18a27c51ba30bb9e304f25b722ee05",
      "tree": "f3567ce93aab28ed00311845728277b054c2c570",
      "parents": [
        "df1a3c6d21702e3e96cfcddadee4a50bfac82110"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 20 17:30:33 2015 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 20 17:30:33 2015 +0000"
      },
      "message": "Revert \"make vdso function pointers read-only at runtime\"\n\nThis reverts commit df1a3c6d21702e3e96cfcddadee4a50bfac82110.\n\nThis change prevented N9 from booting (http://b/22568628).\n\nChange-Id: I071d6d6a0ae7881d65641839e665acdcf58462b4\n"
    },
    {
      "commit": "df1a3c6d21702e3e96cfcddadee4a50bfac82110",
      "tree": "4655b0e1a8b097c9761b070727e78a992cd8824f",
      "parents": [
        "60bc90909a49121789bf86f5d14f63967e8000e0"
      ],
      "author": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Fri Jul 17 12:13:27 2015 -0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 17 11:11:42 2015 -0700"
      },
      "message": "make vdso function pointers read-only at runtime\n\nGlobal, writable function pointers are low-hanging fruit for hijacking\ncontrol flow with an overflow from a global buffer or an arbitrary write\nvulnerability. This moves the function pointer table into a dedicated\npage and makes it read-only at runtime, similar to RELRO.\n\nThis increases the memory usage of the library by just under one page.\nThis could be avoided by having the linker load the vdso by replacing\nweak symbols. It\u0027s not significant within the Zygote spawning model\nthough because it\u0027s read-only after early init.\n\nChange-Id: Id7a49c96c1b15c2e1926528304b3c54a81e78caf\n"
    },
    {
      "commit": "05fc1d7050d5451aea08dc5f504d2670287b2d43",
      "tree": "fa1d81b61b303ee8ed94c511cc08b8f40ed6624b",
      "parents": [
        "43606bc1ce974e4ba42d7d2c3682ad5182e6fc96"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 28 18:02:33 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 28 19:23:11 2015 -0800"
      },
      "message": "Add missing includes.\n\nChange-Id: Ibf549266a19a67eb9158d341a69dddfb654be669\n"
    },
    {
      "commit": "8b5df3920f2843c9cdf04160517c1e8b77c992f5",
      "tree": "a0a678ee8f107e5c25f937f444a970a0539d2af7",
      "parents": [
        "2a8c929aaf8d34d2b6e89ed9c8b6da163316143e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 21 16:19:07 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 21 17:09:58 2015 -0800"
      },
      "message": "Turn on -Wold-style-cast and fix the errors.\n\nA couple of dodgy cases where we cast away const, but otherwise pretty boring.\n\nChange-Id: Ibc39ebd525377792b5911464be842121c20f03b9\n"
    },
    {
      "commit": "625993dfbb085a3cde7492eda8ec1cdc1ee39a78",
      "tree": "4385fee1dde6d90f42c616a2afc6766824f72835",
      "parents": [
        "770d0f6177ca1ad242b509151fb612f07ef8a07b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 15 16:53:13 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 16 14:27:43 2014 -0700"
      },
      "message": "Use VDSO for clock_gettime(2) and gettimeofday(2).\n\nBug: 15387103\nChange-Id: Ifc3608ea65060c1dc38120b10b6e79874f182a36\n"
    }
  ]
}
