)]}'
{
  "log": [
    {
      "commit": "ee67dd75e215f88e5632c05c7e7e7c7d30910359",
      "tree": "90447b12715a95240614e440be8cbb7c42d191a1",
      "parents": [
        "f30170dfa514266a0bf007091aa54a866920208c"
      ],
      "author": {
        "name": "Vitaly Vul",
        "email": "vitaly.vul@sonymobile.com",
        "time": "Thu Sep 24 14:28:59 2015 +0200"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 20 09:16:59 2015 -0800"
      },
      "message": "mmap: fix calculation of is_private_anonymous variable\n\nCurrently is_private_anonymous is calculated as true if _either_\nMAP_PRIVATE or MAP_ANONYMOUS is set, which is a mistake.\nAccording to Documentation/vm/ksm.txt, \"KSM only merges anonymous\n(private) pages, never pagecache (file) pages\". MAP_PRIVATE can\nstill be set on file cache pages so in order to not redundantly\nset MADV_MERGEABLE on pages that are not fitted for it, both\nMAP_PRIVATE and MAP_ANONYMOUS should be set.\n\nAlong with this fix, add an extra check that the mapped page is\nnot a stack page before setting MADV_MERGEABLE for it. Stack pages\nchange too quickly and always end up in KSM \u0027page_volatile\u0027 list.\n\nChange-Id: If4954142852f17cc61f02985ea1cb625a7f3dec6\n"
    },
    {
      "commit": "c22a7de798c4c0da30ad095a0c61a8f905eb9613",
      "tree": "a6dadbf1ceae2c3cb0811b6c91d1619d48fcd7c5",
      "parents": [
        "313632db574d101275206ca025d21a5a3cd62150"
      ],
      "author": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Sat Nov 07 10:40:26 2015 -0500"
      },
      "committer": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Thu Nov 19 08:57:47 2015 -0500"
      },
      "message": "extend the PTRDIFF_MAX size check to mremap\n\nThis removes another way to obtain objects larger than PTRDIFF_MAX. The\nonly known remaining hole is now jemalloc\u0027s merging of virtual memory\nspans.\n\nTechnically this could be wrapped in an __LP64__ ifndef since it can\u0027t\noccur on 64-bit due to the 1:1 split. It doesn\u0027t really matter either\nway.\n\nChange-Id: Iab2af242b775bc98a59421994d87aca0433215bd\n"
    },
    {
      "commit": "706186d266d45c161f9dad3ec1851c78017bc1de",
      "tree": "6639e7bfff39c3dc48e4cee8caf7b1abb4407997",
      "parents": [
        "e07558fb80da4e196e8b7e371041c1e75c56b29b"
      ],
      "author": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Tue Nov 03 05:30:29 2015 -0500"
      },
      "committer": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Tue Nov 03 05:30:29 2015 -0500"
      },
      "message": "fix PTRDIFF_MAX check in the 32-bit mmap wrapper\n\nIt wasn\u0027t making use of the page-rounded size.\n\nChange-Id: I911345fcfd6419a4dbc18a4622b42e1b76729abb\n"
    },
    {
      "commit": "5ca66528c5e02655d79b9930456e31aab887989e",
      "tree": "9ae4cfa6d38d46e3e075a41938557ae6695e0974",
      "parents": [
        "cd0ed2f174d9015da5ae7206bc4c5190cd0bb51e"
      ],
      "author": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Tue Aug 04 00:48:41 2015 -0400"
      },
      "committer": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Sat Sep 12 01:52:12 2015 -0400"
      },
      "message": "make mmap fail on requests larger than PTRDIFF_MAX\n\nAllocations larger than PTRDIFF_MAX can be successfully created on\n32-bit with a 3:1 split, or in 32-bit processes running on 64-bit.\n\nAllowing these allocations to succeed is dangerous, as it introduces\noverflows for `end - start` and isn\u0027t compatible with APIs (mis)using\nssize_t to report either the size or an error. POSIX is guilty of this,\nas are many other Android APIs. LLVM even considers the `ptr + size`\ncase to be undefined, as all pointer arithmetic compiles down to signed\noperations and overflow is treated as undefined for standard C pointer\narithmetic (GNU C `void *` arithmetic works differently).\n\nThis also prevents dlmalloc from allocating \u003e PTRDIFF_MAX as it doesn\u0027t\nmerge mappings like jemalloc. A similar check will need to be added in\njemalloc\u0027s code path for huge allocations.\n\nThe musl libc implementation also performs this sanity check.\n\nChange-Id: I5f849543f94a39719f5d27b00cef3079bb5933e9\n"
    },
    {
      "commit": "9bd9b7dd205e79577f5cd1d9488aabe0f213ce35",
      "tree": "502fe092fd17b7eddae73d1bebe417ff40a81889",
      "parents": [
        "15e71cd760c35a4eab09b850904581ebbdc9bee3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 03 11:54:21 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 03 11:54:21 2014 -0800"
      },
      "message": "If the kernel doesn\u0027t have MADV_MERGEABLE, stop asking for it.\n\nNote that a dynamically-linked binary will still probably see two attempts ---\none by the dynamic linker (which will set its copy of the flag so it won\u0027t try\nagain) and then one by the executable itself (which gets a new uninitialized\ncopy of the flag).\n\nChange-Id: Id6b7e47780f0f24d2ca0384a75373f4824fa8f12\n"
    },
    {
      "commit": "431166d99519f6794f10c48694913d2fe864b841",
      "tree": "7c148908e51c210646a28f890da96897e6000138",
      "parents": [
        "652dd5196df87bdeef7bff452f1a4857a96e3133"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 27 16:28:31 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 27 16:36:56 2014 -0800"
      },
      "message": "Fix 32-bit mmap/mmap64 handling of negative offsets.\n\nWe don\u0027t actually need to worry about sign extension if we reject\nnegative values ourselves. Previously it was possible to come up\nwith negative but aligned values that we would pass to the kernel;\nin the case of mmap (as opposed to mmap64) we\u0027d incorrectly turn\nthose into large positive offsets.\n\nChange-Id: I2aa583e0f892d59bb77429aea8730b72db32dcb0\n"
    },
    {
      "commit": "99868904feeac944a0d482a2994f9d7b6828bff2",
      "tree": "1f630430195de631470350904561211cc5e3a8c8",
      "parents": [
        "22323f91b11b0fbaa0a101a75e116132028a5817"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 20 18:17:34 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 20 18:17:34 2013 -0800"
      },
      "message": "Avoid sign extension in 32-bit mmap.\n\nChange-Id: I2a77925f62f381a0b34648c3db8154a55dd80c46\n"
    },
    {
      "commit": "afcc0cccdafef0c67600cbbc72cee0e7a41f3f04",
      "tree": "506a007c24f06d7ec6415c22901f7485c06b8797",
      "parents": [
        "d5ddf40ecf72a03e38164389555ccdade779ab5a"
      ],
      "author": {
        "name": "Daniel Leung",
        "email": "daniel.leung@intel.com",
        "time": "Wed Sep 18 14:41:18 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 19 14:11:26 2013 -0700"
      },
      "message": "Add mmap64()\n\nThis adds mmap64() to bionic so that it is possible to have\nlarge offset passed to kernel. However, the syscall mechanism\nonly passes 32-bit number to kernel. So effectively, the\nlargest offset that can be passed is about 43 bits (since\noffset is signed, and the number passed to kernel is number\nof pages (page size \u003d\u003d 4K \u003d\u003e 12 bits)).\n\nChange-Id: Ib54f4e9b54acb6ef8b0324f3b89c9bc810b07281\nSigned-off-by: Andrew Boie \u003candrew.p.boie@intel.com\u003e\n"
    },
    {
      "commit": "e320a8c7802eb54f80693db03bb2a201580875e7",
      "tree": "2b803053b2b802f4ad01869d0f479a3bae89f6a2",
      "parents": [
        "bfba6aac99115972fad3341aef595c0ca1f7258b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 25 10:15:07 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 25 10:15:07 2013 -0700"
      },
      "message": "Avoid sign extension of the mmap offset.\n\noff_t is signed to support seeking backwards, but that\u0027s a liability\nwhen using off_t to represent a subset of a file.\n\nChange-Id: I2a3615166eb16212347eb47f1242e3bfb93c2022\n"
    },
    {
      "commit": "107cdd406b8e404af4d552498076cfe2dfe5efbf",
      "tree": "3a16d2410197ce4a4daabe8b1a5dd4a27893be80",
      "parents": [
        "b7b36b819e8029a152859f3204ba2da38a0e2879"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 17 13:12:26 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 17 13:12:26 2013 -0700"
      },
      "message": "Prevent the madvise(MADV_MERGEABLE) mmap hack from affecting errno.\n\nBug: 9889616\nChange-Id: I4a7323e0ae5aeb5cbe0da1b2bc7501d83b3a2aa4\n"
    },
    {
      "commit": "b7b36b819e8029a152859f3204ba2da38a0e2879",
      "tree": "3dfd8b38bf81525d758d5d7225cf22310f966006",
      "parents": [],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 17 20:02:11 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 17 20:02:11 2013 +0000"
      },
      "message": "Merge \"mmap: Reinstate passing MADV_MERGEABLE on private anonymous maps\""
    }
  ]
}
