From patchwork Mon Feb 13 13:52:48 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Brunner X-Patchwork-Id: 140907 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 E7A241007D1 for ; Tue, 14 Feb 2012 00:53:50 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756689Ab2BMNxl (ORCPT ); Mon, 13 Feb 2012 08:53:41 -0500 Received: from mail-bk0-f46.google.com ([209.85.214.46]:59303 "EHLO mail-bk0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756567Ab2BMNxd (ORCPT ); Mon, 13 Feb 2012 08:53:33 -0500 Received: by bkcjm19 with SMTP id jm19so4551316bkc.19 for ; Mon, 13 Feb 2012 05:53:32 -0800 (PST) Received: by 10.205.127.141 with SMTP id ha13mr7377199bkc.28.1329141212253; Mon, 13 Feb 2012 05:53:32 -0800 (PST) Received: from sir.fritz.box (e181010149.adsl.alicedsl.de. [85.181.10.149]) by mx.google.com with ESMTPS id jd17sm46504032bkb.4.2012.02.13.05.53.31 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 13 Feb 2012 05:53:31 -0800 (PST) Date: Mon, 13 Feb 2012 14:52:48 +0100 From: Christian Brunner To: netdev@vger.kernel.org Subject: [PATCH] ixgbe: fix truesize calculation when merging active tail into lro skb Message-ID: <20120213135248.GA23457@sir.fritz.box> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-12-10) X-Gm-Message-State: ALoCoQn8h19QmF10FNwPeoqoRN+2Yo9AuZqMS5GUd46z3UABhK75HOOQT9nQiHyw4E+AXh7oUD7A Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org I'm seeing some page allocation failures with the ixgbe driver under heavy load. While looking after it, I came accoss the truesize handling. I suspect, that there is a small misstake in ixgbe_merge_active_tail(). (But I'm not really sure). Truesize allocation of the skb may be larger than skb->len, because ixgbe is allocating PAGE_SIZE/2 for received fragments. Hence we should use the truesize of the tail when merging. Signed-off-by: Christian Brunner Acked-by: Eric Dumazet --- drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index a42b0b2..c4d25af 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c @@ -1222,7 +1222,7 @@ static inline struct sk_buff *ixgbe_merge_active_tail(struct sk_buff *tail) head->len += tail->len; head->data_len += tail->len; - head->truesize += tail->len; + head->truesize += tail->truesize; IXGBE_CB(tail)->head = NULL;