)]}'
{
  "commit": "4557398f8cbaf9f254cff747534b4724c7f75c4f",
  "tree": "052b59279b1312a4fde83a76feb4a7a0c5cf7df1",
  "parents": [
    "c5b609797b8e212dbfaf23944da8bf8c53233d5c"
  ],
  "author": {
    "name": "Kirill Korotaev",
    "email": "dev@sw.ru",
    "time": "Sun Nov 13 16:07:30 2005 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Sun Nov 13 18:14:16 2005 -0800"
  },
  "message": "[PATCH] stop_machine() vs. synchronous IPI send deadlock\n\nThis fixes deadlock of stop_machine() vs.  synchronous IPI send.  The\nproblem is that stop_machine() disables interrupts before disabling\npreemption on other CPUs.  So if another CPU is preempted and then calls\nsomething like flush_tlb_all() it will deadlock with CPU doing\nstop_machine() and which can\u0027t process IPI due to disabled IRQs.\n\nI changed stop_machine() to do the same things exactly as it does on other\nCPUs, i.e.  it should disable preemption first on _all_ CPUs including\nitself and only after that disable IRQs.\n\nSigned-off-by: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: \"Andrey Savochkin\" \u003csaw@sawoct.com\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": "84a9d18aa8da0ecb9309c6b58a2b8b694a1493e2",
      "old_mode": 33188,
      "old_path": "kernel/stop_machine.c",
      "new_id": "b3d4dc858e3540a521ee69c32a9eab1798a67a44",
      "new_mode": 33188,
      "new_path": "kernel/stop_machine.c"
    }
  ]
}
