)]}'
{
  "commit": "9845cbbd113fbb5b769a45d8e88dc47bc12df4e0",
  "tree": "6ceaa19094138fe27cc6be0009dea1ef770c762b",
  "parents": [
    "01412886b735ef241f9a41adf9f707ce1522eb61"
  ],
  "author": {
    "name": "Kirill A. Shutemov",
    "email": "kirill.shutemov@linux.intel.com",
    "time": "Tue Feb 25 15:01:42 2014 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Tue Feb 25 15:25:44 2014 -0800"
  },
  "message": "mm, thp: fix infinite loop on memcg OOM\n\nMasayoshi Mizuma reported a bug with the hang of an application under\nthe memcg limit.  It happens on write-protection fault to huge zero page\n\nIf we successfully allocate a huge page to replace zero page but hit the\nmemcg limit we need to split the zero page with split_huge_page_pmd()\nand fallback to small pages.\n\nThe other part of the problem is that VM_FAULT_OOM has special meaning\nin do_huge_pmd_wp_page() context.  __handle_mm_fault() expects the page\nto be split if it sees VM_FAULT_OOM and it will will retry page fault\nhandling.  This causes an infinite loop if the page was not split.\n\ndo_huge_pmd_wp_zero_page_fallback() can return VM_FAULT_OOM if it failed\nto allocate one small page, so fallback to small pages will not help.\n\nThe solution for this part is to replace VM_FAULT_OOM with\nVM_FAULT_FALLBACK is fallback required.\n\nSigned-off-by: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nReported-by: Masayoshi Mizuma \u003cm.mizuma@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: David Rientjes \u003crientjes@google.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": "da23eb96779f2bfb4e893eece4774f14499ebaaa",
      "old_mode": 33188,
      "old_path": "mm/huge_memory.c",
      "new_id": "4df39b1bde91ff9c9300db00f9df485733c064db",
      "new_mode": 33188,
      "new_path": "mm/huge_memory.c"
    },
    {
      "type": "modify",
      "old_id": "5f2001a7ab31f746798bf2dee65c502003ff8862",
      "old_mode": 33188,
      "old_path": "mm/memory.c",
      "new_id": "22dfa617bddb69af777298c45739a0113f965b13",
      "new_mode": 33188,
      "new_path": "mm/memory.c"
    }
  ]
}
