From patchwork Fri Jul 9 12:25:40 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kulikov Vasiliy X-Patchwork-Id: 58397 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 148C6B6F29 for ; Fri, 9 Jul 2010 22:26:03 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755948Ab0GIMZ7 (ORCPT ); Fri, 9 Jul 2010 08:25:59 -0400 Received: from mail-ey0-f174.google.com ([209.85.215.174]:36803 "EHLO mail-ey0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755910Ab0GIMZ5 (ORCPT ); Fri, 9 Jul 2010 08:25:57 -0400 Received: by eya25 with SMTP id 25so287678eya.19 for ; Fri, 09 Jul 2010 05:25:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:cc:subject:date :message-id:x-mailer; bh=W7mHPXZHg6016cb1nhzchCA2whVtv1loInyHg3eEb/A=; b=HWqI7oMT3a2pphdrCqvgzvw0fFUmBCxgOS2MEy85O0FZ7sqFrHqi74pelDp85cilj9 4CoCje0vww2cfbOWL/DygvGbroX6ZY3gJNR7LEr3s167p/TxrHBzvm239nYARG+GaOSE qBra7UjM8BFnxAQFvfVZNJRbkRRbL77t1V3cM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer; b=eB1VoCmFUL5xy/WS0/OdZri9oCXw/J0eFOlRAA+OTXTkqF6zvdFnLkKI3qa4N6etCo PB1XlbMEwAeWU5AlFQUvnV5d3M85dBX8M4vzuHWtPi6JFUqv/hLuf8LVQi5aPh3qZe4Q NO9MdA0SVpN/td0SSLS38W0uUwqm6AGhq0flM= Received: by 10.213.33.133 with SMTP id h5mr1282491ebd.46.1278678356225; Fri, 09 Jul 2010 05:25:56 -0700 (PDT) Received: from localhost ([213.87.80.19]) by mx.google.com with ESMTPS id v8sm7149545eeh.2.2010.07.09.05.25.48 (version=TLSv1/SSLv3 cipher=RC4-MD5); Fri, 09 Jul 2010 05:25:55 -0700 (PDT) From: Kulikov Vasiliy To: kernel-janitors@vger.kernel.org Cc: "David S. Miller" , Jiri Pirko , Stephen Hemminger , Eric Dumazet , =?UTF-8?q?Andr=C3=A9=20Goddard=20Rosa?= , netdev@vger.kernel.org Subject: [PATCH 2/2] 82596: free resources on error Date: Fri, 9 Jul 2010 16:25:40 +0400 Message-Id: <1278678340-6889-1-git-send-email-segooon@gmail.com> X-Mailer: git-send-email 1.7.0.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org IRQ 56 was not freed anywhere (neither in i596_open() on error nor in i596_close()), rx_bufs were not freed if init_i596_mem() fails, netif_stop_queue() was not called. Signed-off-by: Kulikov Vasiliy --- drivers/net/82596.c | 30 ++++++++++++++++++++++-------- 1 files changed, 22 insertions(+), 8 deletions(-) diff --git a/drivers/net/82596.c b/drivers/net/82596.c index 73073d0..89e43d7 100644 --- a/drivers/net/82596.c +++ b/drivers/net/82596.c @@ -1015,24 +1015,35 @@ static int i596_open(struct net_device *dev) } #ifdef ENABLE_MVME16x_NET if (MACH_IS_MVME16x) { - if (request_irq(0x56, i596_error, 0, "i82596_error", dev)) - return -EAGAIN; + if (request_irq(0x56, i596_error, 0, "i82596_error", dev)) { + res = -EAGAIN; + goto err_irq_dev; + } } #endif res = init_rx_bufs(dev); - if (res) { - free_irq(dev->irq, dev); - return res; - } + if (res) + goto err_irq_56; netif_start_queue(dev); - /* Initialize the 82596 memory */ if (init_i596_mem(dev)) { res = -EAGAIN; - free_irq(dev->irq, dev); + goto err_queue; } + return 0; + +err_queue: + netif_stop_queue(dev); + remove_rx_bufs(dev); +err_irq_56: +#ifdef ENABLE_MVME16x_NET + free_irq(0x56, dev); +#endif +err_irq_dev: + free_irq(dev->irq, dev); + return res; } @@ -1498,6 +1509,9 @@ static int i596_close(struct net_device *dev) } #endif +#ifdef ENABLE_MVME16x_NET + free_irq(0x56, dev); +#endif free_irq(dev->irq, dev); remove_rx_bufs(dev);