Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp3186948imw; Mon, 11 Jul 2022 03:52:07 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vaK/NCr2POGuOFk4vg71FLnvCArSKGo0+LMf7sBriI9UxiQcM4Z+aOZXC/qxghTFs6Uzwl X-Received: by 2002:a17:90a:474c:b0:1ec:f898:d85b with SMTP id y12-20020a17090a474c00b001ecf898d85bmr17613368pjg.11.1657536727431; Mon, 11 Jul 2022 03:52:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657536727; cv=none; d=google.com; s=arc-20160816; b=XGGZgNAlVPd0TVpVi+TO+Vuwtwc6jf6JFMDEVYj/dqzmlmVTuDjDsDOY6roQKEADFm FMN7rSqE6qpCw94FOMxj4YfqSTMLF7Vc4ZO0qXjuyvpal26OC7ZMgVPnp+L64zYKI+fG r8USjO+thVozTYiYyZAxAM0e4f369jHkaxuyq6BsUwRgjuZ4Rgjzsi8szCR/83+o809X eVmyy3b1MAMaoxiz/oJcGGgqjAFB74XeSzCNuSbgoUKUbJjpKZLbC4TQyw/IhNWRmmA7 Eh0titbX3zHYHU1U4hvBTyjqEPDnPmUvKYq3JgIWJ6Y56mTKjEXorB+rh7cndVMkrxwC 8TRg== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=goY8Jti9FP1tgqz8lKNSKLqAM19MoFh6/kkZZfb6liw=; b=Zqhv/XzENC4aY6xt8hQIhLfaNJTPqPGPyYsm5oU+hBYVNYF8cMqqtAFd8wFGMFjl0W zWMOqxUwkG1ibT9wCK+con8iFmMeKLzrh2j/F/yeLY2ApwVC2aY3UUWd6esCm1O0yytG 5Z6cMLImq8+gSCBhWiW3GgHc7dgSlj/iRR6xs2N+A17fKz2/Pnq4sCPtzI7kGtHphqhk /IQlPII5/nEaw6szoFbGoumwoPOcUuhIybSl+UTGBgthQAy6VBshAQGYIp32INVna3if fH9RFdZSWu33j8upN/Si5qslDW9os+dsQllYgb8FkLVRoDHWzR6POC+wv2CtPi5DbPu8 IAag== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=BISEjTt7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t14-20020a170902e84e00b0016c30af9ec7si11698553plg.599.2022.07.11.03.51.55; Mon, 11 Jul 2022 03:52:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=BISEjTt7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234058AbiGKKCo (ORCPT + 99 others); Mon, 11 Jul 2022 06:02:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60160 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234336AbiGKKCG (ORCPT ); Mon, 11 Jul 2022 06:02:06 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 042C12BDB; Mon, 11 Jul 2022 02:28:37 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 8FDEBB80E6D; Mon, 11 Jul 2022 09:28:36 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E050AC34115; Mon, 11 Jul 2022 09:28:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1657531715; bh=vWqdF/QbE599LGS+3jp14cUHjUuyTGGqsN3uKJFlhX4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BISEjTt7U6nHgeyNI7YOqNU9uatGFXTU+YMNVFgSwgQf+4mPzqZCK9KcGWqbqobGg +m+m9fbW29EOQmv7BDijLdI1Q2mer7ls/SpCHckMfz1g/wji7/MRgc5GQIfGNnBW66 dL79/4BdW4f4uQGVz+2QJKGxM8HPyw/WbmQyfeaQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jean Delvare , Yi Zhang , Terry Bowman , Terry Bowman , Wolfram Sang , Sasha Levin Subject: [PATCH 5.15 204/230] i2c: piix4: Fix a memory leak in the EFCH MMIO support Date: Mon, 11 Jul 2022 11:07:40 +0200 Message-Id: <20220711090609.891213114@linuxfoundation.org> X-Mailer: git-send-email 2.37.0 In-Reply-To: <20220711090604.055883544@linuxfoundation.org> References: <20220711090604.055883544@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jean Delvare [ Upstream commit 8ad59b397f86a4d8014966fdc0552095a0c4fb2b ] The recently added support for EFCH MMIO regions introduced a memory leak in that code path. The leak is caused by the fact that release_resource() merely removes the resource from the tree but does not free its memory. We need to call release_mem_region() instead, which does free the memory. As a nice side effect, this brings back some symmetry between the legacy and MMIO paths. Signed-off-by: Jean Delvare Reported-by: Yi Zhang Tested-by: Yi Zhang Reviewed-by: Terry Bowman Tested-by: Terry Bowman Fixes: 7c148722d074 ("i2c: piix4: Add EFCH MMIO support to region request and release") Signed-off-by: Wolfram Sang Signed-off-by: Sasha Levin --- drivers/i2c/busses/i2c-piix4.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/drivers/i2c/busses/i2c-piix4.c b/drivers/i2c/busses/i2c-piix4.c index ac8e7d60672a..39cb1b7bb865 100644 --- a/drivers/i2c/busses/i2c-piix4.c +++ b/drivers/i2c/busses/i2c-piix4.c @@ -161,7 +161,6 @@ static const char *piix4_aux_port_name_sb800 = " port 1"; struct sb800_mmio_cfg { void __iomem *addr; - struct resource *res; bool use_mmio; }; @@ -179,13 +178,11 @@ static int piix4_sb800_region_request(struct device *dev, struct sb800_mmio_cfg *mmio_cfg) { if (mmio_cfg->use_mmio) { - struct resource *res; void __iomem *addr; - res = request_mem_region_muxed(SB800_PIIX4_FCH_PM_ADDR, - SB800_PIIX4_FCH_PM_SIZE, - "sb800_piix4_smb"); - if (!res) { + if (!request_mem_region_muxed(SB800_PIIX4_FCH_PM_ADDR, + SB800_PIIX4_FCH_PM_SIZE, + "sb800_piix4_smb")) { dev_err(dev, "SMBus base address memory region 0x%x already in use.\n", SB800_PIIX4_FCH_PM_ADDR); @@ -195,12 +192,12 @@ static int piix4_sb800_region_request(struct device *dev, addr = ioremap(SB800_PIIX4_FCH_PM_ADDR, SB800_PIIX4_FCH_PM_SIZE); if (!addr) { - release_resource(res); + release_mem_region(SB800_PIIX4_FCH_PM_ADDR, + SB800_PIIX4_FCH_PM_SIZE); dev_err(dev, "SMBus base address mapping failed.\n"); return -ENOMEM; } - mmio_cfg->res = res; mmio_cfg->addr = addr; return 0; @@ -222,7 +219,8 @@ static void piix4_sb800_region_release(struct device *dev, { if (mmio_cfg->use_mmio) { iounmap(mmio_cfg->addr); - release_resource(mmio_cfg->res); + release_mem_region(SB800_PIIX4_FCH_PM_ADDR, + SB800_PIIX4_FCH_PM_SIZE); return; } -- 2.35.1