)]}'
{
  "commit": "2f67cd5b1d5066d11761aebb0bf4b76bc253cc99",
  "tree": "937b0f53c025ea429d0814c6200322b3460487a7",
  "parents": [
    "fa0de2b614ca89d14d046e6756ba020fd386ff71"
  ],
  "author": {
    "name": "Alan Stern",
    "email": "stern@rowland.harvard.edu",
    "time": "Thu Aug 16 16:16:00 2007 -0400"
  },
  "committer": {
    "name": "Greg Kroah-Hartman",
    "email": "gregkh@suse.de",
    "time": "Wed Aug 22 14:27:52 2007 -0700"
  },
  "message": "usb-storage: fix bugs in the disconnect pathway\n\nThis patch (as961) fixes a couple of bugs in the disconnect pathway of\nusb-storage.\n\nThe first problem, which apparently has been around for a while\nalthough nobody noticed it, shows up when an aborted command is still\npending when a disconnect occurs.  The SCSI error-handler will\ncontinue to wait in command_abort() until the us-\u003enotify completion is\nsignalled.  Thus quiesce_and_remove_host() needs to signal it.\n\nThe second problem was introduced recently along with autosuspend\nsupport.  Since usb_stor_scan_thread() now calls\nusb_autopm_put_interface() before exiting, we can\u0027t simply leave the\nscanning thread running after a disconnect; we must wait until the\nthread exits.  This is solved by adding a new struct completion to the\nprivate data structure.  Fortuitously, it allows the removal of the\nrather clunky mechanism used in the past to insure that all threads\nhave finished before the module is unloaded.\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nCC: Matthew Dharm \u003cmdharm-usb@one-eyed-alien.net\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "28842d208bb031738c8b68d79a6ac8ec91196fe7",
      "old_mode": 33188,
      "old_path": "drivers/usb/storage/usb.c",
      "new_id": "25e557d4fe6b054f23716d7ef06b84b8e9227bb9",
      "new_mode": 33188,
      "new_path": "drivers/usb/storage/usb.c"
    },
    {
      "type": "modify",
      "old_id": "6445665b1577c258d3a722e19e9a56fac549267a",
      "old_mode": 33188,
      "old_path": "drivers/usb/storage/usb.h",
      "new_id": "8d87503e256072efa90c16672b22db4a00fded87",
      "new_mode": 33188,
      "new_path": "drivers/usb/storage/usb.h"
    }
  ]
}
