From patchwork Thu Sep 20 03:19:42 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li RongQing X-Patchwork-Id: 185302 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 380CA2C007E for ; Thu, 20 Sep 2012 13:20:30 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754130Ab2ITDUG (ORCPT ); Wed, 19 Sep 2012 23:20:06 -0400 Received: from mail-pb0-f46.google.com ([209.85.160.46]:60314 "EHLO mail-pb0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754119Ab2ITDT4 (ORCPT ); Wed, 19 Sep 2012 23:19:56 -0400 Received: by pbbrr13 with SMTP id rr13so4025537pbb.19 for ; Wed, 19 Sep 2012 20:19:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:x-mailer; bh=qpgvorLc0anwCzQn7OXbZINfXHfGr8PgQZyv8GUA+fM=; b=tJrbHpFBb9Mw1cyUwUQmkPcyxDgyF8qhWXZMZJ/PLOFHWqiNZk3YDa/R9DDW/Xgw3a j3jdsg5oCaagRu9DEtwwiLDIvBHW0qK2veQtBj1ta0Q7PiRG+vxNUC9gLYHIRd5ltM8t 9tJDoSPqhKlvdunHQ5wy2goWpZJdNf1Nmx8lZTxvqlpsOpRKN9GljDWpiqq1DzoJmXf8 8QcjPNaqQ1go+N97gxKd+0PmZ23i/U4tAyH8XaD7t1MsVy2aBV/GQfePdshp2McQeM8u Mio6b4oJFiUrH355wHaT1IPEGEfpqQRptyHru9SlhlypVD8xRsK6nqrZlIoESMaShPLq h7Gg== Received: by 10.66.79.166 with SMTP id k6mr1945460pax.44.1348111195776; Wed, 19 Sep 2012 20:19:55 -0700 (PDT) Received: from localhost ([61.148.56.138]) by mx.google.com with ESMTPS id rm6sm2793823pbc.54.2012.09.19.20.19.50 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 19 Sep 2012 20:19:55 -0700 (PDT) From: roy.qing.li@gmail.com To: netdev@vger.kernel.org, edumazet@google.com Subject: [PATCH net-next] core: adjust checks for calling skb_copy_bits in skb_try_coalesce Date: Thu, 20 Sep 2012 11:19:42 +0800 Message-Id: <1348111182-6827-1-git-send-email-roy.qing.li@gmail.com> X-Mailer: git-send-email 1.7.4.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Li RongQing Ensure that frags and frags_list of dst skb are empty if need to call skb_copy_bits, or else it will break the data sequence. Cc: Eric Dumazet Signed-off-by: Li RongQing --- net/core/skbuff.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/net/core/skbuff.c b/net/core/skbuff.c index fe00d12..f0b9446 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -3455,15 +3455,15 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from, if (skb_cloned(to)) return false; - if (len <= skb_tailroom(to)) { + if (skb_has_frag_list(to) || skb_has_frag_list(from)) + return false; + + if (len <= skb_tailroom(to) && !skb_shinfo(to)->nr_frags) { BUG_ON(skb_copy_bits(from, 0, skb_put(to, len), len)); *delta_truesize = 0; return true; } - if (skb_has_frag_list(to) || skb_has_frag_list(from)) - return false; - if (skb_headlen(from) != 0) { struct page *page; unsigned int offset;