| From foo@baz Mon Apr 9 17:09:24 CEST 2018 |
| From: Timmy Li <lixiaoping3@huawei.com> |
| Date: Mon, 22 May 2017 16:48:28 +0100 |
| Subject: ARM64: PCI: Fix struct acpi_pci_root_ops allocation failure path |
| |
| From: Timmy Li <lixiaoping3@huawei.com> |
| |
| |
| [ Upstream commit 717902cc93118119a6fce7765da6cf2786987418 ] |
| |
| Commit 093d24a20442 ("arm64: PCI: Manage controller-specific data on |
| per-controller basis") added code to allocate ACPI PCI root_ops |
| dynamically on a per host bridge basis but failed to update the |
| corresponding memory allocation failure path in pci_acpi_scan_root() |
| leading to a potential memory leakage. |
| |
| Fix it by adding the required kfree call. |
| |
| Fixes: 093d24a20442 ("arm64: PCI: Manage controller-specific data on per-controller basis") |
| Reviewed-by: Tomasz Nowicki <tn@semihalf.com> |
| Signed-off-by: Timmy Li <lixiaoping3@huawei.com> |
| [lorenzo.pieralisi@arm.com: refactored code, rewrote commit log] |
| Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
| CC: Will Deacon <will.deacon@arm.com> |
| CC: Bjorn Helgaas <bhelgaas@google.com> |
| Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/arm64/kernel/pci.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/arch/arm64/kernel/pci.c |
| +++ b/arch/arm64/kernel/pci.c |
| @@ -175,8 +175,10 @@ struct pci_bus *pci_acpi_scan_root(struc |
| return NULL; |
| |
| root_ops = kzalloc_node(sizeof(*root_ops), GFP_KERNEL, node); |
| - if (!root_ops) |
| + if (!root_ops) { |
| + kfree(ri); |
| return NULL; |
| + } |
| |
| ri->cfg = pci_acpi_setup_ecam_mapping(root); |
| if (!ri->cfg) { |