Thread (22 messages) 22 messages, 3 authors, 2012-08-27

Re: Regression associated with commit c8628155ece3 - "tcp: reduce out_of_order memory use"

flat view

From: Larry Finger <hidden>
Date: 2012-08-22 16:00:22
Also in: lkml

On 08/22/2012 12:15 AM, Eric Dumazet wrote:
This particular commit is the start of a patches batch that ended in the
generic TCP coalescing mechanism.

It is known to have problem on drivers doing skb_clone() in their rx
path.

Current kernels should be ok, because coalescing doesnt happen if the
destination skb is cloned (skb_cloned(to) in skb_try_coalesce())

For 3.4 kernel, I guess I need to backport this skb_cloned(to) check fo
stable 3.4 kernel

But these skb_clone() in various USB drivers should be killed for good,
they really can kill the box because of skb->truesize lies.
Applying your patch to 3.4 does not fix the problem. In addition, all of the problems I noted happen with 3.6-rc2 - current kernels are not OK.

Of the drivers I reported, only r8712u in staging/rtl8712/rtl8712_recv.c has a direct call to skb_clone(). As its symptoms are different, the cloning is likely the source of the problems there. In addition, the problem is intermittent. The driver normally allocates a new buffer and copies to it, and the clone only occurs when that skb allocation fails. I will try to fix that. My skb skills are minimal and I will have to do some studying.

Thanks,

Larry

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