)]}'
{
  "commit": "2680eed723b664d83e6181ae275fac0ec8fa05ff",
  "tree": "f4c137e43c3bdf78e6923bb3aafaf38680c4c301",
  "parents": [
    "6d48ff8bcfd403ec8d3ef7a56538ea9e6f773b9c"
  ],
  "author": {
    "name": "Hugh Dickins",
    "email": "hugh@veritas.com",
    "time": "Tue Mar 04 14:29:13 2008 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Tue Mar 04 16:35:15 2008 -0800"
  },
  "message": "memcg: fix mem_cgroup_move_lists locking\n\nEver since the VM_BUG_ON(page_get_page_cgroup(page)) (now Bad page state) went\ninto page freeing, I\u0027ve hit it from time to time in testing on some machines,\nsometimes only after many days.  Recently found a machine which could usually\nproduce it within a few hours, which got me there at last.\n\nThe culprit is mem_cgroup_move_lists, whose locking is inadequate; and the\narrangement of structures was such that you got page_cgroups from the lru list\nneatly put on to SLUB\u0027s freelist.  Kamezawa-san identified the same hole\nindependently.\n\nThe main problem was that it was missing the lock_page_cgroup it needs to\nsafely page_get_page_cgroup; but it\u0027s tricky to go beyond that too, and I\ncouldn\u0027t do it with SLAB_DESTROY_BY_RCU as I\u0027d expected.  See the code for\ncomments on the constraints.\n\nThis patch immediately gets replaced by a simpler one from Hirokazu-san; but\nis it just foolish pride that tells me to put this one on record, in case we\nneed to come back to it later?\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\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": "66d0e84cefa6533174e08d7c86006953f4bbd68a",
      "old_mode": 33188,
      "old_path": "mm/memcontrol.c",
      "new_id": "dcbe30aad1da8dc322eab57d4f43cf9c3c37187e",
      "new_mode": 33188,
      "new_path": "mm/memcontrol.c"
    }
  ]
}
