From patchwork Mon Sep 29 02:49:51 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: KY Srinivasan X-Patchwork-Id: 394247 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 EF20014010C for ; Mon, 29 Sep 2014 11:50:28 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753894AbaI2BuY (ORCPT ); Sun, 28 Sep 2014 21:50:24 -0400 Received: from p3plsmtps2ded02.prod.phx3.secureserver.net ([208.109.80.59]:56686 "EHLO p3plsmtps2ded02.prod.phx3.secureserver.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752923AbaI2BuX (ORCPT ); Sun, 28 Sep 2014 21:50:23 -0400 X-Greylist: delayed 363 seconds by postgrey-1.27 at vger.kernel.org; Sun, 28 Sep 2014 21:50:23 EDT Received: from linuxonhyperv.com ([72.167.245.219]) by p3plsmtps2ded02.prod.phx3.secureserver.net with : DED : id wpkJ1o01C4kklxU01pkJ93; Sun, 28 Sep 2014 18:44:19 -0700 x-originating-ip: 72.167.245.219 Received: by linuxonhyperv.com (Postfix, from userid 507) id D99021909D6; Sun, 28 Sep 2014 19:49:53 -0700 (PDT) From: "K. Y. Srinivasan" To: davem@davemloft.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, devel@linuxdriverproject.org, olaf@aepfle.de, apw@canonical.com, jasowang@redhat.com Cc: "K. Y. Srinivasan" , Subject: [PATCH 1/1] Drivers: net-next: hyperv: Fix a bug in netvsc_start_xmit() Date: Sun, 28 Sep 2014 19:49:51 -0700 Message-Id: <1411958991-28049-1-git-send-email-kys@microsoft.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 After the packet is successfully sent, we should not touch the skb as it may have been freed. This patch is based on the work done by Long Li . Signed-off-by: K. Y. Srinivasan Tested-by: Long Li Cc: --- drivers/net/hyperv/netvsc_drv.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c index a9c5eaa..0fcb5e7 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c @@ -387,6 +387,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net) int hdr_offset; u32 net_trans_info; u32 hash; + u32 skb_length = skb->len; /* We will atmost need two pages to describe the rndis @@ -562,7 +563,7 @@ do_send: drop: if (ret == 0) { - net->stats.tx_bytes += skb->len; + net->stats.tx_bytes += skb_length; net->stats.tx_packets++; } else { kfree(packet);