)]}'
{
  "commit": "2d860ad76f4ee4d2eba0fe3797c8d7cdce432cc0",
  "tree": "928e3a162ce9bf9294afd138f5609cf3b70a747b",
  "parents": [
    "3493e84de60590d3012139187f631f2dfbf0887f"
  ],
  "author": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Thu Aug 13 13:05:10 2009 -0700"
  },
  "committer": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Thu Aug 13 23:09:27 2009 +0200"
  },
  "message": "genirq: prevent wakeup of freed irq thread\n\nfree_irq() can remove an irqaction while the corresponding interrupt\nis in progress, but free_irq() sets action-\u003ethread to NULL\nunconditionally, which might lead to a NULL pointer dereference in\nhandle_IRQ_event() when the hard interrupt context tries to wake up\nthe handler thread.\n\nPrevent this by moving the thread stop after synchronize_irq(). No\nneed to set action-\u003ethread to NULL either as action is going to be\nfreed anyway.\n\nThis fixes a boot crash reported against preempt-rt which uses the\nmainline irq threads code to implement full irq threading.\n\n[ tglx: removed local irqthread variable ]\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "61c679db4687a853c52f7d5b23b5ba5e267b4c17",
      "old_mode": 33188,
      "old_path": "kernel/irq/manage.c",
      "new_id": "d222515a5a062db18a1e38e5b75f8fd5cd38f745",
      "new_mode": 33188,
      "new_path": "kernel/irq/manage.c"
    }
  ]
}
