)]}'
{
  "commit": "62ade86ab6c7e26409229ca45503cae97bf698cf",
  "tree": "569ce54e1fce1f985cc9525712c39b2b020e1fdf",
  "parents": [
    "b1dab2f0409c478fd2d9e227c2c018524eca9603"
  ],
  "author": {
    "name": "Hugh Dickins",
    "email": "hughd@google.com",
    "time": "Fri May 18 11:28:34 2012 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Sat May 19 10:10:27 2012 -0700"
  },
  "message": "memcg,thp: fix res_counter:96 regression\n\nOccasionally, testing memcg\u0027s move_charge_at_immigrate on rc7 shows\na flurry of hundreds of warnings at kernel/res_counter.c:96, where\nres_counter_uncharge_locked() does WARN_ON(counter-\u003eusage \u003c val).\n\nThe first trace of each flurry implicates __mem_cgroup_cancel_charge()\nof mc.precharge, and an audit of mc.precharge handling points to\nmem_cgroup_move_charge_pte_range()\u0027s THP handling in commit 12724850e806\n(\"memcg: avoid THP split in task migration\").\n\nChecking !mc.precharge is good everywhere else, when a single page is to\nbe charged; but here the \"mc.precharge -\u003d HPAGE_PMD_NR\" likely to\nfollow, is liable to result in underflow (a lot can change since the\nprecharge was estimated).\n\nSimply check against HPAGE_PMD_NR: there\u0027s probably a better\nalternative, trying precharge for more, splitting if unsuccessful; but\nthis one-liner is safer for now - no kernel/res_counter.c:96 warnings\nseen in 26 hours.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b659260c56ad5591c4debdae6b865a057fb01b7c",
      "old_mode": 33188,
      "old_path": "mm/memcontrol.c",
      "new_id": "7685d4a0b3ce811f187d9dd978282e0a99476a56",
      "new_mode": 33188,
      "new_path": "mm/memcontrol.c"
    }
  ]
}
