)]}'
{
  "commit": "2fa88daa6f299bfb83672c3b525d786ad03b4735",
  "tree": "1b3a7cf0507f2b090a581e14ef9a1261e73225d7",
  "parents": [
    "d94c05e33d9212ee67b8d4998f984cc71df8168b"
  ],
  "author": {
    "name": "Sarah Sharp",
    "email": "sarah.a.sharp@linux.intel.com",
    "time": "Tue Nov 03 22:02:24 2009 -0800"
  },
  "committer": {
    "name": "Greg Kroah-Hartman",
    "email": "gregkh@suse.de",
    "time": "Tue Nov 17 16:46:34 2009 -0800"
  },
  "message": "USB: xhci: Fix TRB physical to virtual address translation.\n\nThe trb_in_td() function in the xHCI driver is supposed to translate a\nphysical transfer buffer request (TRB) into a virtual pointer to the ring\nsegment that TRB is in.\n\nUnfortunately, a mistake in this function may cause endless loops as the\ndriver searches through the linked list of ring segments over and over\nagain.  Fix a couple bugs that may lead to loops or bad output:\n\n1. Bail out if we get a NULL pointer when translating the segment\u0027s\nprivate structure and the starting DMA address of the segment chunk.  If\nthis happens, we\u0027ve been handed a starting TRB pointer from a different\nring.\n\n2. Make sure the function works when there\u0027s multiple segments in the\nring.  In the while loop to search through the ring segments, use the\ncurrent segment variable (cur_seg), rather than the starting segment\nvariable (start_seg) that is passed in.\n\n3. Stop searching the ring if we\u0027ve run through all the segments in the\nring.\n\nSigned-off-by: Sarah Sharp \u003csarah.a.sharp@linux.intel.com\u003e\nCc: stable \u003cstable@kernel.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "173c39c7648912a1e63ef53a38881c4091094a07",
      "old_mode": 33188,
      "old_path": "drivers/usb/host/xhci-ring.c",
      "new_id": "821b7b4709de6531b28afb78c428ad4f5379ff81",
      "new_mode": 33188,
      "new_path": "drivers/usb/host/xhci-ring.c"
    }
  ]
}
