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

From: Larry Finger
Date: Wed Aug 22 2012 - 12:00:14 EST


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


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/