This looks like bug 219039, please see if my suggested solution works.
The upstream commit is correct, because the call to inc_deq() has been moved outside handle_tx_event() so there is no longer this critical difference between doing 'goto cleanup' and 'return 0'. The intended change of this commit also makes sense to me.
This refactor is already present in v6.9 so I don't think the commit will have any effect besides fixing the isochronous bug which it is meant to fix.
But it is not present in v6.6 and v6.1, so they break/crash/hang/etc. Symptoms may vary, but I believe the root cause is the same because the code is visibly wrong.
I would like to use this opportunity to point out that the xhci driver is currenty undergoing (much needed IMO) cleanups and refactors and this is not the first time when a naive, verbatim backport is attempted of a patch which works fine on upstream, but causes problems on earlier kernels. These things need special scrutiny, beyond just "CC:stable".
Regards, Michal