)]}'
{
  "commit": "3bb1a852ab6c9cdf211a2f4a2f502340c8c38eca",
  "tree": "d08aa652e8eb40c47d5bc37fa1a240b4fb7db029",
  "parents": [
    "2ae88149a27cadf2840e0ab8155bef13be285c03"
  ],
  "author": {
    "name": "Martin Bligh",
    "email": "mbligh@mbligh.org",
    "time": "Sat Oct 28 10:38:24 2006 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Sat Oct 28 11:30:50 2006 -0700"
  },
  "message": "[PATCH] vmscan: Fix temp_priority race\n\nThe temp_priority field in zone is racy, as we can walk through a reclaim\npath, and just before we copy it into prev_priority, it can be overwritten\n(say with DEF_PRIORITY) by another reclaimer.\n\nThe same bug is contained in both try_to_free_pages and balance_pgdat, but\nit is fixed slightly differently.  In balance_pgdat, we keep a separate\npriority record per zone in a local array.  In try_to_free_pages there is\nno need to do this, as the priority level is the same for all zones that we\nreclaim from.\n\nImpact of this bug is that temp_priority is copied into prev_priority, and\nsetting this artificially high causes reclaimers to set distress\nartificially low.  They then fail to reclaim mapped pages, when they are,\nin fact, under severe memory pressure (their priority may be as low as 0).\nThis causes the OOM killer to fire incorrectly.\n\nFrom: Andrew Morton \u003cakpm@osdl.org\u003e\n\n__zone_reclaim() isn\u0027t modifying zone-\u003eprev_priority.  But zone-\u003eprev_priority\nis used in the decision whether or not to bring mapped pages onto the inactive\nlist.  Hence there\u0027s a risk here that __zone_reclaim() will fail because\nzone-\u003eprev_priority ir large (ie: low urgency) and lots of mapped pages end up\nstuck on the active list.\n\nFix that up by decreasing (ie making more urgent) zone-\u003eprev_priority as\n__zone_reclaim() scans the zone\u0027s pages.\n\nThis bug perhaps explains why ZONE_RECLAIM_PRIORITY was created.  It should be\npossible to remove that now, and to just start out at DEF_PRIORITY?\n\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ed0762b283a9fd725b08a10fd2e194f89fcba3c0",
      "old_mode": 33188,
      "old_path": "include/linux/mmzone.h",
      "new_id": "e06683e2bea39fb61fc02803aff1e5fcee2ce7fd",
      "new_mode": 33188,
      "new_path": "include/linux/mmzone.h"
    },
    {
      "type": "modify",
      "old_id": "f5fc45472d5ca77d3406b9ced195c45fde97ca78",
      "old_mode": 33188,
      "old_path": "mm/page_alloc.c",
      "new_id": "ecf853b5e30ec5bd85a2ec29b68292282838cbcd",
      "new_mode": 33188,
      "new_path": "mm/page_alloc.c"
    },
    {
      "type": "modify",
      "old_id": "f05527bf792b1e28b78d3a45cf2244efb4b34cf2",
      "old_mode": 33188,
      "old_path": "mm/vmscan.c",
      "new_id": "b32560ead5c0c518e0b3db5c2c1bbe802c1c441c",
      "new_mode": 33188,
      "new_path": "mm/vmscan.c"
    },
    {
      "type": "modify",
      "old_id": "45b124e012f5fe8c7c8274dfd3f8f0861ce58aaa",
      "old_mode": 33188,
      "old_path": "mm/vmstat.c",
      "new_id": "8614e8f6743b599c3761d6d2ca30f0012048676e",
      "new_mode": 33188,
      "new_path": "mm/vmstat.c"
    }
  ]
}
