Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp734118pxb; Thu, 2 Sep 2021 13:55:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJynuo1luF+SAXSYnWhWsb1QeDnaxI50YnVKicdo3GAYH+kFVodbEEf0N1Na2FP5lJ5kXaGe X-Received: by 2002:a17:906:8684:: with SMTP id g4mr127921ejx.262.1630616130375; Thu, 02 Sep 2021 13:55:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1630616130; cv=none; d=google.com; s=arc-20160816; b=vBfHChhX+V/YZxzazi4VRIGrh4yU4zuGDJmofu40fmjMfACKZFm+fQJK64Uqw0MKaW rR6bh0fo0SaAlFmkddVbNVwG5cT5Copdiyn1EIHealxxZqou2/0iMCFYpeVoKMPRil7a RvW6Mh29vbC56lWtbjZzRoqn2cQnRt8HOGHL4xLMStyXqD44TJws//NqkU0mUqxdk9NT wBRH8pJ4meMhyFvSw2h+IttuGZPCPRetGY1QzpKGFKCz8NbmB6Kc264eo2s0LSDWYcCF wcU31v4E5dH8VYdg+qC2sFMA4e8LaPuagJUqOp511Rq/5eeJbbx1xevUKKCPZt0j3eV2 c4Kw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=0Dgopvrcg5T19ykXwDKb/LI0e77HV2GrCfuSRaj7WSE=; b=DGUwGvQExyAUdGowThWSDqL8A1JxeBXzKzOjpsGFP6ZVKoCCL1pTZnhlNa2qjhhJS6 2lHaxfka4nboXJufY5jyvNnhLZTklLA2Wkiu1JT4QurMB6YEfUjPDc7kJb7x0qbkDCBO VvINBBdlFIpMJ6KeW06QnA/6NQfZhnpArxSVrVVAo5b0RqECwYpsS8NjqR1JuR5E6EXF /YK2J70C0vGozdvE9wfM9PPIGECE2VUNk/dmLETYGQYaMD497oaHp9yrbg1ESO7+JyIg QGPE1NuTPKjeBltbZxqC6YFEzbrGEEAIxHohgKTPJuvHIFWvw+tTgYHCQQVxzGy3iK41 LDNQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id hc31si2488237ejc.648.2021.09.02.13.54.34; Thu, 02 Sep 2021 13:55:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245411AbhIBUjT (ORCPT + 99 others); Thu, 2 Sep 2021 16:39:19 -0400 Received: from smtp08.smtpout.orange.fr ([80.12.242.130]:37799 "EHLO smtp.smtpout.orange.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232057AbhIBUjS (ORCPT ); Thu, 2 Sep 2021 16:39:18 -0400 Received: from pop-os.home ([90.126.253.178]) by mwinf5d54 with ME id p8eC2500A3riaq2038eDGc; Thu, 02 Sep 2021 22:38:16 +0200 X-ME-Helo: pop-os.home X-ME-Auth: Y2hyaXN0b3BoZS5qYWlsbGV0QHdhbmFkb28uZnI= X-ME-Date: Thu, 02 Sep 2021 22:38:16 +0200 X-ME-IP: 90.126.253.178 From: Christophe JAILLET To: luciano.coelho@intel.com, kvalo@codeaurora.org, davem@davemloft.net, kuba@kernel.org, johannes.berg@intel.com, pierre-louis.bossart@linux.intel.com, drorx.moshe@intel.com Cc: linux-wireless@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org, Christophe JAILLET Subject: [PATCH] iwlwifi: pnvm: Fix a memory leak in 'iwl_pnvm_get_from_fs()' Date: Thu, 2 Sep 2021 22:38:11 +0200 Message-Id: <1b5d80f54c1dbf85710fd285243932943b498fe7.1630614969.git.christophe.jaillet@wanadoo.fr> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org A firmware is requested but never released in this function. This leads to a memory leak in the normal execution path. Add the missing 'release_firmware()' call. Also introduce a temp variable (new_len) in order to keep the value of 'pnvm->size' after the firmware has been released. Fixes: cdda18fbbefa ("iwlwifi: pnvm: move file loading code to a separate function") Signed-off-by: Christophe JAILLET --- drivers/net/wireless/intel/iwlwifi/fw/pnvm.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/intel/iwlwifi/fw/pnvm.c b/drivers/net/wireless/intel/iwlwifi/fw/pnvm.c index 314ed90c23dd..dde22bdc8703 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/pnvm.c +++ b/drivers/net/wireless/intel/iwlwifi/fw/pnvm.c @@ -231,6 +231,7 @@ static int iwl_pnvm_get_from_fs(struct iwl_trans *trans, u8 **data, size_t *len) { const struct firmware *pnvm; char pnvm_name[MAX_PNVM_NAME]; + size_t new_len; int ret; iwl_pnvm_get_fs_name(trans, pnvm_name, sizeof(pnvm_name)); @@ -242,11 +243,14 @@ static int iwl_pnvm_get_from_fs(struct iwl_trans *trans, u8 **data, size_t *len) return ret; } + new_len = pnvm->size; *data = kmemdup(pnvm->data, pnvm->size, GFP_KERNEL); + release_firmware(pnvm); + if (!*data) return -ENOMEM; - *len = pnvm->size; + *len = new_len; return 0; } -- 2.30.2