xhci: Remove segments from radix tree on failed insert.
authorSarah Sharp <sarah.a.sharp@linux.intel.com>
Thu, 17 Oct 2013 19:44:58 +0000 (12:44 -0700)
committerSarah Sharp <sarah.a.sharp@linux.intel.com>
Tue, 4 Mar 2014 23:38:02 +0000 (15:38 -0800)
commitd57342232db459bf820b90e39496190965d7a775
treede7f7b7665c97b6f379559b78461564dfb9efd08
parenta3901538611f8d5180df44f5b61293e70903958f
xhci: Remove segments from radix tree on failed insert.

If we're expanding a stream ring, we want to make sure we can add those
ring segments to the radix tree that maps segments to ring pointers.
Try the radix tree insert after the new ring segments have been allocated
(the last segment in the new ring chunk will point to the first newly
allocated segment), but before the new ring segments are linked into the
old ring.

If insert fails on any one segment, remove each segment from the radix
tree, deallocate the new segments, and return.  Otherwise, link the new
segments into the tree.

HdG: Add a check to only update stream mappings in xhci_ring_expansion when
the ring is a stream ring.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
drivers/usb/host/xhci-mem.c