On Fri, 2 Apr 2010, Nate Case wrote: > > Maybe reuse of the sitd in sitd_complete() needs to be delayed in the > > same way that reuse of the itd in itd_complete() is, via > > free_cached_itd_list(). > > I didn't know what I was doing honestly, but I attempted to try this > today also. In short, I added a cached_sitd_list to the ehci_hcd and > changed the index field of struct ehci_sitd to be an array like in > struct ehci_itd. Next, I went through and tried to make the sitd > functions more like the itd functions with respect to the itd list > usage. I probably made all kinds of horrible mistakes, because I ended > up getting errors like this: > > [ 33.830348] ehci_hcd 0000:07:0c.1: request bf1f49c0 would overflow (65523+16> > 2048) Come to think of it, let's start by testing whether the problem goes away when sitd's are never deallocated. Let's just leak them. For this, all you have to do is change the line list_move(&sitd->sitd_list, &stream->free_list); near the end of sitd_complete() to list_del(&sitd->sitd_list); If you still get fatal errors after making that change, then the problem has a different cause. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html