)]}'
{
  "commit": "6d50e60cd2edb5a57154db5a6f64eef5aa59b751",
  "tree": "025056e23d57062c5e045d54613edc2e2fc4ca86",
  "parents": [
    "47f29df7db78ee4fcdb104cf36918d987ddd0278"
  ],
  "author": {
    "name": "David Rientjes",
    "email": "rientjes@google.com",
    "time": "Wed Oct 29 14:50:31 2014 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Wed Oct 29 16:33:14 2014 -0700"
  },
  "message": "mm, thp: fix collapsing of hugepages on madvise\n\nIf an anonymous mapping is not allowed to fault thp memory and then\nmadvise(MADV_HUGEPAGE) is used after fault, khugepaged will never\ncollapse this memory into thp memory.\n\nThis occurs because the madvise(2) handler for thp, hugepage_madvise(),\nclears VM_NOHUGEPAGE on the stack and it isn\u0027t stored in vma-\u003evm_flags\nuntil the final action of madvise_behavior().  This causes the\nkhugepaged_enter_vma_merge() to be a no-op in hugepage_madvise() when\nthe vma had previously had VM_NOHUGEPAGE set.\n\nFix this by passing the correct vma flags to the khugepaged mm slot\nhandler.  There\u0027s no chance khugepaged can run on this vma until after\nmadvise_behavior() returns since we hold mm-\u003emmap_sem.\n\nIt would be possible to clear VM_NOHUGEPAGE directly from vma-\u003evm_flags\nin hugepage_advise(), but I didn\u0027t want to introduce special case\nbehavior into madvise_behavior().  I think it\u0027s best to just let it\nalways set vma-\u003evm_flags itself.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nReported-by: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: \"Kirill A. Shutemov\" \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6b394f0b51485076b28ed9fc2136d854b5d1c677",
      "old_mode": 33188,
      "old_path": "include/linux/khugepaged.h",
      "new_id": "eeb3079857155355161047eda5d2d298d7fd2a3f",
      "new_mode": 33188,
      "new_path": "include/linux/khugepaged.h"
    },
    {
      "type": "modify",
      "old_id": "780d12c000e9a141017f2237bd19da6783d75d50",
      "old_mode": 33188,
      "old_path": "mm/huge_memory.c",
      "new_id": "de984159cf0b8a0be6a73b9f421e9a0b4f75c599",
      "new_mode": 33188,
      "new_path": "mm/huge_memory.c"
    },
    {
      "type": "modify",
      "old_id": "7f855206e7fb2bb1f9a30fcf7745bff7a2ae3adb",
      "old_mode": 33188,
      "old_path": "mm/mmap.c",
      "new_id": "87e82b38453c2cbca83f1dd7ad472c02b6a73b77",
      "new_mode": 33188,
      "new_path": "mm/mmap.c"
    }
  ]
}
