Thread (25 messages) 25 messages, 6 authors, 2013-03-22

[PATCH] USB: EHCI: fix for leaking isochronous data

From: Soeren Moch <hidden>
Date: 2013-03-21 21:52:49
Also in: linux-mm, lkml

On 21.03.2013 20:10, Arnd Bergmann wrote:
On Thursday 21 March 2013, Jason Cooper wrote:
quoted
On Thu, Mar 21, 2013 at 06:04:59PM +0100, Soeren Moch wrote:
quoted
quoted
Now I found out what is going on here:

In itd_urb_transaction() we allocate 9 iTDs for each URB with
number_of_packets == 64 in my case. The iTDs are added to
sched->td_list. For a frame-aligned scheduling we need 8 iTDs, the
9th one is released back to the front of the streams free_list in
iso_sched_free(). This iTD was cleared after allocation and has a
frame number of 0 now. So for each allocation when now_frame == 0 we
allocate from the dma_pool, not from the free_list. The attached
patch invalidates the frame number in each iTD before it is sent to
the scheduler. This fixes the problem without the need to iterate
over a iTD list.

Signed-off-by: Soeren Moch <redacted>
Wow!  Great work Soeren!  Talk about a long road to a small fix.  Thanks
for keeping after it.
+1

I hardly understand half of the description above, but that much sounds
plausible. Is this a bug fix that should get backported to stable kernels?

	Arnd
I think this patch should go to stable kernels, too. But I'm not an 
expert here...

   Soeren
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help