All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: Harunobu Kurokawa <harunobu.kurokawa.dn@renesas.com>
Cc: horms@verge.net.au, bhelgaas@google.com,
	linux-pci@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] PCI: rcar-pcie: Fix memory leak when no PCIe card is inserted
Date: Wed, 2 Aug 2017 10:03:07 +0100	[thread overview]
Message-ID: <20170802090307.GA24167@red-moon> (raw)
In-Reply-To: <20170802071320.28674-1-harunobu.kurokawa.dn@renesas.com>

On Wed, Aug 02, 2017 at 04:13:20PM +0900, Harunobu Kurokawa wrote:
> When no PCIe card is inserted, there is a memory leak as
> pci_free_resource_list is not called before returning.
> 
> Signed-off-by: Harunobu Kurokawa <harunobu.kurokawa.dn@renesas.com>
> ---
>  drivers/pci/host/pcie-rcar.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/pci/host/pcie-rcar.c b/drivers/pci/host/pcie-rcar.c
> index ac80fbb..9b06de6 100644
> --- a/drivers/pci/host/pcie-rcar.c
> +++ b/drivers/pci/host/pcie-rcar.c
> @@ -1190,14 +1190,15 @@ static int rcar_pcie_probe(struct platform_device *pdev)
>  
>  	return 0;
>  
> -err_free_bridge:
> -	pci_free_host_bridge(bridge);
> -
>  err_pm_put:
>  	pm_runtime_put(dev);
>  
>  err_pm_disable:
>  	pm_runtime_disable(dev);
> +
> +err_free_bridge:
> +	pci_free_host_bridge(bridge);
> +	pci_free_resource_list(&pcie->resources);
>  	return err;
>  }

The error code path needs fixing but not like this (with a single
patch lumping all fixes - well, actually it does not - together).

Step one, patch below. Step two free the &pci->resources list
(which IIUC was not freed even before commit 90634e854079) in
a separate patch.

Am I missing something ?

Please apply, check and repost the patch if it is ok, thanks.

-- >8 --
Subject: [PATCH] PCI: rcar: Fix error exit path

Commit 90634e854079 ("PCI: rcar: Convert PCI scan API to
pci_scan_root_bus_bridge()") converted PCI root bus scan API
to the new pci_scan_root_bus_bridge() API; in the process
some error paths were not updated correctly which may
cause memory leaks.

Fix the driver error exit path reinstating the previous
correct error exit behaviour.

Fixes: 90634e854079 ("PCI: rcar: Convert PCI scan API to pci_scan_root_bus_bridge()")
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
---
 drivers/pci/host/pcie-rcar.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/pci/host/pcie-rcar.c b/drivers/pci/host/pcie-rcar.c
index 246d485..007523e 100644
--- a/drivers/pci/host/pcie-rcar.c
+++ b/drivers/pci/host/pcie-rcar.c
@@ -471,10 +471,8 @@ static int rcar_pcie_enable(struct rcar_pcie *pcie)
 		bridge->msi = &pcie->msi.chip;
 
 	ret = pci_scan_root_bus_bridge(bridge);
-	if (ret < 0) {
-		kfree(bridge);
+	if (ret < 0)
 		return ret;
-	}
 
 	bus = bridge->bus;
 
@@ -1190,14 +1188,15 @@ static int rcar_pcie_probe(struct platform_device *pdev)
 
 	return 0;
 
-err_free_bridge:
-	pci_free_host_bridge(bridge);
-
 err_pm_put:
 	pm_runtime_put(dev);
 
 err_pm_disable:
 	pm_runtime_disable(dev);
+
+err_free_bridge:
+	pci_free_host_bridge(bridge);
+
 	return err;
 }
 
-- 
2.10.0

  reply	other threads:[~2017-08-02  9:01 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-02  7:13 [PATCH] PCI: rcar-pcie: Fix memory leak when no PCIe card is inserted Harunobu Kurokawa
2017-08-02  9:03 ` Lorenzo Pieralisi [this message]
2017-08-03  5:07   ` HARUNOBU KUROKAWA
2017-08-03  5:07     ` HARUNOBU KUROKAWA

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170802090307.GA24167@red-moon \
    --to=lorenzo.pieralisi@arm.com \
    --cc=bhelgaas@google.com \
    --cc=harunobu.kurokawa.dn@renesas.com \
    --cc=horms@verge.net.au \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.