Return-path: Received: from mail-yx0-f174.google.com ([209.85.213.174]:64464 "EHLO mail-yx0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754155Ab2HVQAS (ORCPT ); Wed, 22 Aug 2012 12:00:18 -0400 Message-ID: <5035020E.5040806@lwfinger.net> (sfid-20120822_180039_160396_CFC947FD) Date: Wed, 22 Aug 2012 11:00:14 -0500 From: Larry Finger MIME-Version: 1.0 To: Eric Dumazet CC: Neal Cardwell , "David S. Miller" , John W Linville , linux-wireless , LKML Subject: Re: Regression associated with commit c8628155ece3 - "tcp: reduce out_of_order memory use" References: <50345B12.1050600@lwfinger.net> <1345612503.5158.566.camel@edumazet-glaptop> In-Reply-To: <1345612503.5158.566.camel@edumazet-glaptop> Content-Type: text/plain; charset=UTF-8; format=flowed Sender: linux-wireless-owner@vger.kernel.org List-ID: 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