)]}'
{
  "commit": "7fb57a019f94ea0c1290c39b8da753be155af41c",
  "tree": "58e93fc2b2bd2e6656bbde2cc9e068a1ffe31b10",
  "parents": [
    "332ceddb8c4ba2367abcb9a94a69386b2785441b"
  ],
  "author": {
    "name": "Havard Skinnemoen",
    "email": "hskinnemoen@google.com",
    "time": "Wed Nov 30 13:28:14 2011 -0800"
  },
  "committer": {
    "name": "Greg Kroah-Hartman",
    "email": "gregkh@suse.de",
    "time": "Fri Dec 09 16:18:18 2011 -0800"
  },
  "message": "USB: cdc-acm: Fix potential deadlock (lockdep warning)\n\nRework the locking and lifecycle management in the cdc-acm driver.\nInstead of using a global mutex to prevent the \u0027acm\u0027 object from being\nfreed, use the tty_port kref to keep the device alive when either the\nUSB side or TTY side is still active.\n\nThis allows us to use the global mutex purely for protecting the\nacm_table, while use acm-\u003emutex to guard against disconnect during\nTTY port activation and shutdown.\n\nThe USB-side kref is taken during port initialization in probe(), and\nreleased at the end of disconnect(). The TTY-side kref is taken in\ninstall() and released in cleanup(). On disconnect, tty_vhangup() is\ncalled instead of tty_hangup() to ensure the TTY hangup processing is\ncompleted before the USB device is taken down.\n\nThe TTY open and close handlers have been gutted and replaced with\ntty_port_open() and tty_port_close() respectively. The driver-specific\ncode which used to be there was spread across install(), activate() and\nshutdown().\n\nReported-by: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Alan Cox \u003calan@linux.intel.com\u003e\nCc: Jiri Slaby \u003cjslaby@suse.cz\u003e\nSigned-off-by: Havard Skinnemoen \u003chskinnemoen@google.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e8c564a533469f00f7e40435933ae496187aa20a",
      "old_mode": 33188,
      "old_path": "drivers/usb/class/cdc-acm.c",
      "new_id": "3027ada1b81224ba8ee7f1bbb51eca2a94a7eecd",
      "new_mode": 33188,
      "new_path": "drivers/usb/class/cdc-acm.c"
    },
    {
      "type": "modify",
      "old_id": "ca7937f26e27ee3dba53feeb00fab2f49d3099aa",
      "old_mode": 33188,
      "old_path": "drivers/usb/class/cdc-acm.h",
      "new_id": "35ef887b7417f00e31e237b1cbc8b28ca9d8488a",
      "new_mode": 33188,
      "new_path": "drivers/usb/class/cdc-acm.h"
    }
  ]
}
