)]}'
{
  "commit": "57b30ae77bf00d2318df711ef9a4d2a9be0a3a2a",
  "tree": "d6e084bf0e2b82bb39302ee0e94e6f3f04762dbc",
  "parents": [
    "e7c2f967445dd2041f0f8e3179cca22bb8bb7f79"
  ],
  "author": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Tue Aug 21 13:18:24 2012 -0700"
  },
  "committer": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Tue Aug 21 13:18:24 2012 -0700"
  },
  "message": "workqueue: reimplement cancel_delayed_work() using try_to_grab_pending()\n\ncancel_delayed_work() can\u0027t be called from IRQ handlers due to its use\nof del_timer_sync() and can\u0027t cancel work items which are already\ntransferred from timer to worklist.\n\nAlso, unlike other flush and cancel functions, a canceled delayed_work\nwould still point to the last associated cpu_workqueue.  If the\nworkqueue is destroyed afterwards and the work item is re-used on a\ndifferent workqueue, the queueing code can oops trying to dereference\nalready freed cpu_workqueue.\n\nThis patch reimplements cancel_delayed_work() using\ntry_to_grab_pending() and set_work_cpu_and_clear_pending().  This\nallows the function to be called from IRQ handlers and makes its\nbehavior consistent with other flush / cancel functions.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d86b320319e010923c5ee551566c6fce2c0fab8c",
      "old_mode": 33188,
      "old_path": "include/linux/workqueue.h",
      "new_id": "4898289564abbc6ff6d899750be20b859e813615",
      "new_mode": 33188,
      "new_path": "include/linux/workqueue.h"
    },
    {
      "type": "modify",
      "old_id": "b394df8beaee6ea6288c351fbabb806208a62cb7",
      "old_mode": 33188,
      "old_path": "kernel/workqueue.c",
      "new_id": "039d0fae171a3d462e4f4a119761b3350112bc30",
      "new_mode": 33188,
      "new_path": "kernel/workqueue.c"
    }
  ]
}
