From patchwork Mon Jun 20 07:48:07 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Cochran X-Patchwork-Id: 101042 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 5832CB6FE3 for ; Mon, 20 Jun 2011 17:48:16 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753550Ab1FTHsK (ORCPT ); Mon, 20 Jun 2011 03:48:10 -0400 Received: from mail-fx0-f46.google.com ([209.85.161.46]:41474 "EHLO mail-fx0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753642Ab1FTHsI (ORCPT ); Mon, 20 Jun 2011 03:48:08 -0400 Received: by mail-fx0-f46.google.com with SMTP id 17so759177fxm.19 for ; Mon, 20 Jun 2011 00:48:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:from:to:cc:subject:date:message-id:x-mailer :in-reply-to:references:in-reply-to:references; bh=x9jfMC6FrXZDfYK3Z5Cv8gZH55y7+1Upve3+5hf/woU=; b=gpgKApiegSHPJBvBpmkOzbEar1cyTNh5eUkh00NuKmvvwyV6iEQOGRAlMesiq1YfKh OoBS4O/RAR10gNDplsz3gcVFKscdkO+a3ePBagqJ0RmQ7NG/OMMbvPOBEhnHySRzZz3c JR/VBdeMgiE39wLPek2eIjdRKHr5LAGBbJOHg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; b=G7b2OQXV+H4qASgHOGdF1NGwVnOW/xwrLrC8l7JkeHwrwlh+e3oOPE+d1jt45bso1b ruXNDnN8E3M55Uc4clfCQoRXgZeEvBQF1s9l5brVvamABeUyG3qdN1rwPC4M+mY1vJvD 17Zwlusg/8qt+B5NIHFJBHHU7Inbf8CUJ77pw= Received: by 10.223.73.139 with SMTP id q11mr5524774faj.56.1308556087691; Mon, 20 Jun 2011 00:48:07 -0700 (PDT) Received: from localhost.localdomain (vs162244.vserver.de [62.75.162.244]) by mx.google.com with ESMTPS id h1sm2631740fag.35.2011.06.20.00.48.04 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 20 Jun 2011 00:48:06 -0700 (PDT) From: Richard Cochran To: Cc: David Miller , Eric Dumazet , stable@kernel.org, Lennert Buytenhek Subject: [PATCH 2/2] mv643xx_eth: fix race in trasmit path. Date: Mon, 20 Jun 2011 09:48:07 +0200 Message-Id: <25a379578b71bf01f3c77ac76a193d26554f9e0c.1308555865.git.richard.cochran@omicron.at> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: References: In-Reply-To: References: Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Because the socket buffer is freed in the completion interrupt, it is not safe to access it after submitting it to the hardware. Cc: stable@kernel.org Cc: Lennert Buytenhek Signed-off-by: Richard Cochran Acked-by: Eric Dumazet --- drivers/net/mv643xx_eth.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c index a5d9b1c..1b7d2c1 100644 --- a/drivers/net/mv643xx_eth.c +++ b/drivers/net/mv643xx_eth.c @@ -859,7 +859,7 @@ no_csum: static netdev_tx_t mv643xx_eth_xmit(struct sk_buff *skb, struct net_device *dev) { struct mv643xx_eth_private *mp = netdev_priv(dev); - int queue; + int length, queue; struct tx_queue *txq; struct netdev_queue *nq; @@ -881,10 +881,12 @@ static netdev_tx_t mv643xx_eth_xmit(struct sk_buff *skb, struct net_device *dev) return NETDEV_TX_OK; } + length = skb->len; + if (!txq_submit_skb(txq, skb)) { int entries_left; - txq->tx_bytes += skb->len; + txq->tx_bytes += length; txq->tx_packets++; entries_left = txq->tx_ring_size - txq->tx_desc_count;