[PATCH] PCI: sky1: Fix missing cleanup of ECAM config on probe failure

Felix Gu posted 1 patch 1 week, 5 days ago
drivers/pci/controller/cadence/pci-sky1.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
[PATCH] PCI: sky1: Fix missing cleanup of ECAM config on probe failure
Posted by Felix Gu 1 week, 5 days ago
When devm_kzalloc() for reg_off fails, the code returns -ENOMEM
without freeing pcie->cfg, which was allocated earlier by
pci_ecam_create().

Add the missing pci_ecam_free() call to properly release the allocated
ECAM configuration window on this error path.

Fixes: a0d9f2c08f45 ("PCI: sky1: Add PCIe host support for CIX Sky1")
Signed-off-by: Felix Gu <ustc.gu@gmail.com>
---
 drivers/pci/controller/cadence/pci-sky1.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/controller/cadence/pci-sky1.c b/drivers/pci/controller/cadence/pci-sky1.c
index d8c216dc120d..9853a9c82c0e 100644
--- a/drivers/pci/controller/cadence/pci-sky1.c
+++ b/drivers/pci/controller/cadence/pci-sky1.c
@@ -176,8 +176,10 @@ static int sky1_pcie_probe(struct platform_device *pdev)
 	cdns_pcie->is_rc = 1;
 
 	reg_off = devm_kzalloc(dev, sizeof(*reg_off), GFP_KERNEL);
-	if (!reg_off)
+	if (!reg_off) {
+		pci_ecam_free(pcie->cfg);
 		return -ENOMEM;
+	}
 
 	reg_off->ip_reg_bank_offset = SKY1_IP_REG_BANK;
 	reg_off->ip_cfg_ctrl_reg_offset = SKY1_IP_CFG_CTRL_REG_BANK;

---
base-commit: 785f0eb2f85decbe7c1ef9ae922931f0194ffc2e
change-id: 20260323-sky1-890a90a72bc6

Best regards,
-- 
Felix Gu <ustc.gu@gmail.com>
Re: [PATCH] PCI: sky1: Fix missing cleanup of ECAM config on probe failure
Posted by Manivannan Sadhasivam 1 week, 5 days ago
On Tue, 24 Mar 2026 00:41:28 +0800, Felix Gu wrote:
> When devm_kzalloc() for reg_off fails, the code returns -ENOMEM
> without freeing pcie->cfg, which was allocated earlier by
> pci_ecam_create().
> 
> Add the missing pci_ecam_free() call to properly release the allocated
> ECAM configuration window on this error path.
> 
> [...]

Applied, thanks!

[1/1] PCI: sky1: Fix missing cleanup of ECAM config on probe failure
      commit: 72e76b63d6ff6d1f96acccbfc6c118656f63e66a

Best regards,
-- 
Manivannan Sadhasivam <mani@kernel.org>
Re: [PATCH] PCI: sky1: Fix missing cleanup of ECAM config on probe failure
Posted by Markus Elfring 1 week, 4 days ago
> > Add the missing pci_ecam_free() call to properly release the allocated
> > ECAM configuration window on this error path.
…
> Applied, thanks!
> 
> [1/1] PCI: sky1: Fix missing cleanup of ECAM config on probe failure
>       commit: 72e76b63d6ff6d1f96acccbfc6c118656f63e66a

Can the application of another goto chain become more desirable for
the implementation of the function “sky1_pcie_probe”?
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/coding-style.rst?h=v7.0-rc5#n526

Regards,
Markus
Re: [PATCH] PCI: sky1: Fix missing cleanup of ECAM config on probe failure
Posted by Hans Zhang 1 week, 5 days ago

On 3/24/26 00:41, Felix Gu wrote:
> When devm_kzalloc() for reg_off fails, the code returns -ENOMEM
> without freeing pcie->cfg, which was allocated earlier by
> pci_ecam_create().
> 
> Add the missing pci_ecam_free() call to properly release the allocated
> ECAM configuration window on this error path.
> 
> Fixes: a0d9f2c08f45 ("PCI: sky1: Add PCIe host support for CIX Sky1")
> Signed-off-by: Felix Gu <ustc.gu@gmail.com>

Reviewed-by: Hans Zhang <18255117159@163.com>

> ---
>   drivers/pci/controller/cadence/pci-sky1.c | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/pci/controller/cadence/pci-sky1.c b/drivers/pci/controller/cadence/pci-sky1.c
> index d8c216dc120d..9853a9c82c0e 100644
> --- a/drivers/pci/controller/cadence/pci-sky1.c
> +++ b/drivers/pci/controller/cadence/pci-sky1.c
> @@ -176,8 +176,10 @@ static int sky1_pcie_probe(struct platform_device *pdev)
>   	cdns_pcie->is_rc = 1;
>   
>   	reg_off = devm_kzalloc(dev, sizeof(*reg_off), GFP_KERNEL);
> -	if (!reg_off)
> +	if (!reg_off) {
> +		pci_ecam_free(pcie->cfg);
>   		return -ENOMEM;
> +	}
>   
>   	reg_off->ip_reg_bank_offset = SKY1_IP_REG_BANK;
>   	reg_off->ip_cfg_ctrl_reg_offset = SKY1_IP_CFG_CTRL_REG_BANK;
> 
> ---
> base-commit: 785f0eb2f85decbe7c1ef9ae922931f0194ffc2e
> change-id: 20260323-sky1-890a90a72bc6
> 
> Best regards,