From patchwork Mon May 23 07:07:00 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Kagstrom X-Patchwork-Id: 96832 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 7E0C4B6FBB for ; Mon, 23 May 2011 17:17:19 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752582Ab1EWHRN (ORCPT ); Mon, 23 May 2011 03:17:13 -0400 Received: from ernst.netinsight.se ([194.16.221.21]:63215 "HELO ernst.netinsight.se" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1752473Ab1EWHRN (ORCPT ); Mon, 23 May 2011 03:17:13 -0400 X-Greylist: delayed 604 seconds by postgrey-1.27 at vger.kernel.org; Mon, 23 May 2011 03:17:12 EDT Received: from marrow.netinsight.se (unverified [10.100.3.78]) by ernst.netinsight.se (EMWAC SMTPRS 0.83) with SMTP id ; Mon, 23 May 2011 09:07:16 +0200 Date: Mon, 23 May 2011 09:07:00 +0200 From: Simon Kagstrom To: netdev@vger.kernel.org, e1000-devel@lists.sourceforge.net Cc: Jeff Kirsher , Jesse Brandeburg , Bruce Allan , Carolyn Wyborny , Don Skidmore , Greg Rose , PJ Waskiewicz , Alex Duyck , John Ronciak Subject: [PATCH] e100: Correct firmware memory leak Message-ID: <20110523090700.68cdf15a@marrow.netinsight.se> X-Mailer: Claws Mail 3.7.9 (GTK+ 2.20.1; i486-pc-linux-gnu) Mime-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org kmemcheck reports unreferenced object 0xcfaf4f00 (size 32): comm "ifconfig", pid 682, jiffies 87369 backtrace: [] save_stack_trace+0x20/0x24 [] create_object+0x118/0x20c [] kmemleak_alloc+0x40/0x84 [] kmem_cache_alloc+0x114/0x1a4 [] _request_firmware+0x3c/0x540 [] request_firmware+0x14/0x18 [] e100_hw_init+0xf0/0x3d8 [] e100_up+0x38/0x16c [] e100_open+0x20/0x54 [] dev_open+0xcc/0x134 [] dev_change_flags+0xb0/0x190 [] devinet_ioctl+0x2f0/0x6fc [] inet_ioctl+0xcc/0x104 [] sock_ioctl+0x200/0x25c [] vfs_ioctl+0x34/0x78 [] do_vfs_ioctl+0x4e4/0x53c when the interface is taken up because the firmware is loaded with request_firmware, but never released in the callback where it's used, so fix that. Problem introduced in 9ac32e1bc0518b01b47dd34a733dce8634a38ed3 as far as I can tell. Signed-off-by: Simon Kagstrom --- drivers/net/e100.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/drivers/net/e100.c b/drivers/net/e100.c index b0aa9e6..f2b44ef 100644 --- a/drivers/net/e100.c +++ b/drivers/net/e100.c @@ -1320,6 +1320,8 @@ static void e100_setup_ucode(struct nic *nic, struct cb *cb, cb->u.ucode[min_size] |= cpu_to_le32((BUNDLESMALL) ? 0xFFFF : 0xFF80); cb->command = cpu_to_le16(cb_ucode | cb_el); + + release_firmware(fw); } static inline int e100_load_ucode_wait(struct nic *nic)