> 6.1-stable review patch. If anyone has any objections, please let me > know. I'm afraid this patch needs a little backporting for 6.1.x and earlier, because it frees entries in the transfer ring and this seems to involve updating a free space counter (num_trbs_free) on those kernel versions. There may be other incompatibilities, particularly in earlier versions, I'm not clamining that this is a complete review. Related patch "handle isoc Babble and Buffer Overrun events properly" depends on this one and needs to wait until issues are resolved. This is the problematic part which calls xhci_td_cleanup() and bypasses finish_td() where the counting is normally done: > + if (ep_seg) { > + /* give back previous TD, start handling new */ > + xhci_dbg(xhci, "Missing TD completion event after mid TD error\n"); > + ep_ring->dequeue = td->last_trb; > + ep_ring->deq_seg = td->last_trb_seg; > + inc_deq(xhci, ep_ring); > + xhci_td_cleanup(xhci, td, ep_ring, td->status); > + td = td_next; > }