From patchwork Thu Nov 3 10:36:43 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Akinobu Mita X-Patchwork-Id: 123431 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 9BA39B6F82 for ; Thu, 3 Nov 2011 21:36:25 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755397Ab1KCKgU (ORCPT ); Thu, 3 Nov 2011 06:36:20 -0400 Received: from mail-yw0-f46.google.com ([209.85.213.46]:50928 "EHLO mail-yw0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752670Ab1KCKgT (ORCPT ); Thu, 3 Nov 2011 06:36:19 -0400 Received: by ywf7 with SMTP id 7so1168941ywf.19 for ; Thu, 03 Nov 2011 03:36:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer; bh=kzIkv2/EHOyWufwxQx1MHa4hQUIHg56moKtvbMoZ9GY=; b=kJpDzLreS+C0fXpk0hYFTRmsqrhY2HrDKJdg+0AjWZwEIN0Qxgfd7b2NVMvMO/qBCL SE+37qZN9/0qRLCDk3U5HFYKam6XmlhXx/c3aPrHj3gPI2Vs8X111cprBtpM3DgvMGS3 Gu64ebi2ubWoaIxtFuD6fdly9WCJ24rpMbeuc= Received: by 10.236.191.71 with SMTP id f47mr12539680yhn.7.1320316578535; Thu, 03 Nov 2011 03:36:18 -0700 (PDT) Received: from localhost.localdomain (p3172-adsao03yokonib2-acca.kanagawa.ocn.ne.jp. [219.165.63.172]) by mx.google.com with ESMTPS id l8sm16001170anb.1.2011.11.03.03.36.14 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 03:36:17 -0700 (PDT) From: Akinobu Mita To: netdev@vger.kernel.org Cc: Akinobu Mita , "David S. Miller" , Matt Carlson , Michael Chan Subject: [PATCH] tg3: fix error handling in tg3_open Date: Thu, 3 Nov 2011 19:36:43 +0900 Message-Id: <1320316603-8355-1-git-send-email-akinobu.mita@gmail.com> X-Mailer: git-send-email 1.7.4.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org If one of the request_irq calls fails in tg3_open, all interrupts allocated with request_irq should be freed before returning error. But it accidentally attempts to free the same invalid IRQ repeatedly. Cc: "David S. Miller" Cc: Matt Carlson Cc: Michael Chan Cc: netdev@vger.kernel.org Signed-off-by: Akinobu Mita --- drivers/net/ethernet/broadcom/tg3.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c index 161cbbb..13c4054 100644 --- a/drivers/net/ethernet/broadcom/tg3.c +++ b/drivers/net/ethernet/broadcom/tg3.c @@ -9674,8 +9674,10 @@ static int tg3_open(struct net_device *dev) struct tg3_napi *tnapi = &tp->napi[i]; err = tg3_request_irq(tp, i); if (err) { - for (i--; i >= 0; i--) + for (i--; i >= 0; i--) { + tnapi = &tp->napi[i]; free_irq(tnapi->irq_vec, tnapi); + } break; } }