)]}'
{
  "commit": "19c5d45a09312ca20cd1f9df3fd1a87fe0cb8aac",
  "tree": "de228e847ea4846e77cd64b35ca74eb5daa3d242",
  "parents": [
    "72c1bbf308c75a136803d2d76d0e18258be14c7a"
  ],
  "author": {
    "name": "Alexey Dobriyan",
    "email": "adobriyan@sw.ru",
    "time": "Tue May 08 00:26:46 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Tue May 08 11:15:04 2007 -0700"
  },
  "message": "/proc/*/oom_score oops re badness\n\nEternal quest to make\n\n\twhile true; do cat /proc/fs/xfs/stat \u003e/dev/null 2\u003e/dev/null; done\n\twhile true; do find /proc -type f 2\u003e/dev/null | xargs cat \u003e/dev/null 2\u003e/dev/null; done\n\twhile true; do modprobe xfs; rmmod xfs; done\n\nwork reliably continues and now kernel oopses in the following way:\n\nBUG: unable to handle ... at virtual address 6b6b6b6b\nEIP is at badness\nprocess: cat\n\tproc_oom_score\n\tproc_info_read\n\tsys_fstat64\n\tvfs_read\n\tproc_info_read\n\tsys_read\n\nFailing code is prefetch hidden in list_for_each_entry() in badness().\nbadness() is reachable from two points. One is proc_oom_score, another\nis out_of_memory() \u003d\u003e select_bad_process() \u003d\u003e badness().\n\nSecond path grabs tasklist_lock, while first doesn\u0027t.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\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": "0697fd089de892e6f8eb5c456f01211cc81ebfe9",
      "old_mode": 33188,
      "old_path": "fs/proc/base.c",
      "new_id": "ab1b439923e6c622d1627486e9dae80aa0ae9cd5",
      "new_mode": 33188,
      "new_path": "fs/proc/base.c"
    }
  ]
}
