)]}'
{
  "commit": "b31f821c6dee6f3ecfca6b2583a6552538fb91bf",
  "tree": "3305511c230623ccd4fb1c766c57585479644cc6",
  "parents": [
    "65b4fe553bf43018c06740f3d1f6caf42cf95924"
  ],
  "author": {
    "name": "Pete Zaitcev",
    "email": "zaitcev@redhat.com",
    "time": "Thu Jan 05 00:14:02 2006 -0800"
  },
  "committer": {
    "name": "Greg Kroah-Hartman",
    "email": "gregkh@suse.de",
    "time": "Tue Jan 31 17:23:36 2006 -0800"
  },
  "message": "[PATCH] USB: ub 04 Loss of timer and a hang\n\nIf SCSI commands are submitted while other commands are still processed,\nthe dispatch loop turns, and we stop the work_timer. Then, if URB fails\nto complete, ub hangs until the device is unplugged.\n\nThis does not happen often, becase we only allow one SCSI command per\nblock device, but does happen (on multi-LUN devices, for example).\n\nThe fix is to stop timer only when we actually going to change the state.\n\nThe nicest code would be to have the timer stopped in URB callback, but\nthis is impossible, because it can be called from inside a timer, through\nthe urb_unlink. Then we get BUG in timer.c:cascade(). So, we do it a\nlittle dirtier.\n\nSigned-off-by: Pete Zaitcev \u003czaitcev@redhat.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "db4943c53d36bd035a9ef14d6abea2984973a794",
      "old_mode": 33188,
      "old_path": "drivers/block/ub.c",
      "new_id": "c3600cb3636565ee09386cd316b834e7f92d1100",
      "new_mode": 33188,
      "new_path": "drivers/block/ub.c"
    }
  ]
}
