From patchwork Sat Oct 22 07:25:38 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 121160 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 718191007D4 for ; Sat, 22 Oct 2011 18:26:08 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752931Ab1JVHZq (ORCPT ); Sat, 22 Oct 2011 03:25:46 -0400 Received: from mail-ww0-f44.google.com ([74.125.82.44]:59336 "EHLO mail-ww0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752479Ab1JVHZp (ORCPT ); Sat, 22 Oct 2011 03:25:45 -0400 Received: by wwe6 with SMTP id 6so6695991wwe.1 for ; Sat, 22 Oct 2011 00:25:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=message-id:subject:from:to:cc:date:in-reply-to:references :content-type:x-mailer:content-transfer-encoding:mime-version; bh=G47ZiF57a9ryTO26WseS8QJdfizFSWqDA52A9vt3eLM=; b=HdJIk7OTwe5ERKjP1FqGR1uYLqqjx81/TMcBIs40kfyndxRbylqQRCCa6SCyq+kIba l3P5/9ebFy//f71QRwq8gGdEwpBBmeisaa/JoIck1zX79sPFDKXvt0rEol7r/Q2vq6Qf b1dmr2t8hGOm2/dK3cfrTHvyfcUoWQ1vQue9c= Received: by 10.227.196.79 with SMTP id ef15mr6539224wbb.112.1319268343613; Sat, 22 Oct 2011 00:25:43 -0700 (PDT) Received: from [10.170.237.2] ([87.255.129.107]) by mx.google.com with ESMTPS id o17sm24138018wbm.6.2011.10.22.00.25.40 (version=SSLv3 cipher=OTHER); Sat, 22 Oct 2011 00:25:42 -0700 (PDT) Message-ID: <1319268338.6180.20.camel@edumazet-laptop> Subject: [PATCH] tg3: fix tigon3_dma_hwbug_workaround() From: Eric Dumazet To: Ari Savolainen Cc: RongQing Li , David Miller , richardcochran@gmail.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Date: Sat, 22 Oct 2011 09:25:38 +0200 In-Reply-To: <1319265470.6180.13.camel@edumazet-laptop> References: <20111020.155659.486754557434415381.davem@davemloft.net> <1319141125.2854.14.camel@edumazet-laptop> <20111020.161147.33259825921677777.davem@davemloft.net> <1319141867.2854.19.camel@edumazet-laptop> <1319265470.6180.13.camel@edumazet-laptop> X-Mailer: Evolution 3.2.0- Mime-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Ari got kernel panics using tg3 NIC, and bisected to 2669069aacc9 "tg3: enable transmit time stamping." This is because tigon3_dma_hwbug_workaround() might alloc a new skb and free the original. We panic when skb_tx_timestamp() is called on freed skb. Reported-by: Ari Savolainen Signed-off-by: Eric Dumazet --- drivers/net/tg3.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index 4a1374d..6149dc5 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c @@ -6029,12 +6029,12 @@ static void tg3_tx_skb_unmap(struct tg3_napi *tnapi, u32 entry, int last) /* Workaround 4GB and 40-bit hardware DMA bugs. */ static int tigon3_dma_hwbug_workaround(struct tg3_napi *tnapi, - struct sk_buff *skb, + struct sk_buff **pskb, u32 *entry, u32 *budget, u32 base_flags, u32 mss, u32 vlan) { struct tg3 *tp = tnapi->tp; - struct sk_buff *new_skb; + struct sk_buff *new_skb, *skb = *pskb; dma_addr_t new_addr = 0; int ret = 0; @@ -6076,7 +6076,7 @@ static int tigon3_dma_hwbug_workaround(struct tg3_napi *tnapi, } dev_kfree_skb(skb); - + *pskb = new_skb; return ret; } @@ -6305,7 +6305,7 @@ static netdev_tx_t tg3_start_xmit(struct sk_buff *skb, struct net_device *dev) */ entry = tnapi->tx_prod; budget = tg3_tx_avail(tnapi); - if (tigon3_dma_hwbug_workaround(tnapi, skb, &entry, &budget, + if (tigon3_dma_hwbug_workaround(tnapi, &skb, &entry, &budget, base_flags, mss, vlan)) goto out_unlock; }