)]}'
{
  "commit": "4f84e4be53a04a65d97bf0faa0c8f99e29bc0170",
  "tree": "3371de51ff061cde22dc824f83f4a66c7701dc67",
  "parents": [
    "d8aaf12142d066d3982475d58a9094c85a06a5a9"
  ],
  "author": {
    "name": "Joshua Wise",
    "email": "jwise@google.com",
    "time": "Sat Jun 23 17:16:45 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Sun Jun 24 08:59:12 2007 -0700"
  },
  "message": "x86_64: fix misplaced `continue\u0027 in mce.c\n\nBackground:\n  When a userspace application wants to know about machine check events, it\n  opens /dev/mcelog and does a read(). Usually, we found that this interface\n  works well, but in some cases, when the system was taking large numbers of\n  machine check exceptions, the read() would hang. The system would output a\n  soft-lockup warning, and the daemon reading from /dev/mcelog would suck up\n  as much of a single CPU as it could spinning in system space.\n\nDescription:\n  This patch fixes this bug. In particular, there was a \"continue\" inside a\n  timeout loop that presumably was intended to break out of the outer loop,\n  but instead caused the inner loop to continue. This patch also makes the\n  condition for the break-out a little more evident by changing a\n  !time_before to a time_after_eq.\n\nResult:\n  The read() no longer hangs in this test case.\n\nTesting:\n  On my system, I could replicate the bug with the following command:\n    # for i in `seq 15000`; do ./inject_sbe.sh; done\n  where inject_sbe.sh contains commands to inject a single-bit error into the\n  next memory write transaction.\n\nPatch:\n  This patch is against git f1518a088bde6aea49e7c472ed6ab96178fcba3e.\n\nSigned-off-by: Joshua Wise \u003cjwise@google.com\u003e\nSigned-off-by: Tim Hockin \u003cthockin@google.com\u003e\nCc: Andi Kleen \u003cak@suse.de\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": "a14375dd54252d1ca6405e1f28a4e7246ae3cbbe",
      "old_mode": 33188,
      "old_path": "arch/x86_64/kernel/mce.c",
      "new_id": "aa1d1599179433b1e116cd834dfebebe2ab3c67f",
      "new_mode": 33188,
      "new_path": "arch/x86_64/kernel/mce.c"
    }
  ]
}
