PCI: xgene: double free on init error
Subsystems (2)
PATCH 1/1 PCI: xgene: double free on init error
The "port" variable was allocated with devm_kzalloc() so if we free it with kfree() it will be freed twice. Also I changed it to propogate the error from devm_ioremap_resource() instead of returning -ENOMEM.
drivers/pci/host/pci-xgene.c +2 -5
@@ -246,14 +246,11 @@ static int xgene_pcie_ecam_init(struct pci_config_window *cfg, u32 ipversion) ret =xgene_get_csr_resource (adev, &csr);if (ret) {dev_err (dev,"can't get CSR resource\n" ); -kfree (port);return ret; } port->csr_base =devm_ioremap_resource (dev, &csr); -if (IS_ERR (port->csr_base)) { -kfree (port); -return -ENOMEM ; - } +if (IS_ERR (port->csr_base)) +return PTR_ERR (port->csr_base); port->cfg_base = cfg->win; port->version = ipversion;
Quoted 6 lines · Dan Carpenter
The "port" variable was allocated with
devm_kzalloc()so if we free it withkfree()it will be freed twice. Also I changed it to propogate the error fromdevm_ioremap_resource()instead of returning-ENOMEM.Fixes c5d460396100 ("PCI: Add MCFG quirks for X-Gene host controller")Signed-off-by Dan Carpenter <[email protected]>
Waiting for Tanmay's ack, ping :)
Quoted 25 lines
drivers/pci/host/pci-xgene.c +2
-6@@ -246,14 +246,11 @@ static int xgene_pcie_ecam_init(struct pci_config_window *cfg, u32 ipversion) ret =xgene_get_csr_resource (adev, &csr);if (ret) {dev_err (dev,"can't get CSR resource\n" ); -kfree (port);return ret; } port->csr_base =devm_ioremap_resource (dev, &csr); -if (IS_ERR (port->csr_base)) { -kfree (port); -return -ENOMEM ; - } +if (IS_ERR (port->csr_base)) +return PTR_ERR (port->csr_base); port->cfg_base = cfg->win; port->version = ipversion; --To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Tanmay Inamdar
Acked-byHi,
Quoted 30 lines · Bjorn Helgaas
Quoted 6 lines · Dan Carpenter
The "port" variable was allocated with
devm_kzalloc()so if we free it withkfree()it will be freed twice. Also I changed it to propogate the error fromdevm_ioremap_resource()instead of returning-ENOMEM.Fixes c5d460396100 ("PCI: Add MCFG quirks for X-Gene host controller")Signed-off-by Dan Carpenter <[email protected]>Waiting for Tanmay's ack, ping :)
Quoted 19 lines
drivers/pci/host/pci-xgene.c +2
-5@@ -246,14 +246,11 @@ static int xgene_pcie_ecam_init(struct pci_config_window *cfg, u32 ipversion) ret =xgene_get_csr_resource (adev, &csr);if (ret) {dev_err (dev,"can't get CSR resource\n" ); -kfree (port);return ret; } port->csr_base =devm_ioremap_resource (dev, &csr); -if (IS_ERR (port->csr_base)) { -kfree (port); -return -ENOMEM ; - } +if (IS_ERR (port->csr_base)) +return PTR_ERR (port->csr_base);
Quoted 2 lines
drivers/pci/host/pci-xgene.c static int xgene_pcie_ecam_init(struct pci_config_window *cfg, u32 ipversion) · line 256
Quoted 2 lines
drivers/pci/host/pci-xgene.c +0
-0port->cfg_base = cfg->win; port->version = ipversion;
Sorry for delay. Patch looks good to me. Thanks.
Thanks,
Tanmay
Quoted 6 lines · Dan Carpenter
The "port" variable was allocated with
devm_kzalloc()so if we free it withkfree()it will be freed twice. Also I changed it to propogate the error fromdevm_ioremap_resource()instead of returning-ENOMEM.Fixes c5d460396100 ("PCI: Add MCFG quirks for X-Gene host controller")Signed-off-by Dan Carpenter <[email protected]>
Applied with Tanmay's ack to pci/host-xgene for v4.11, thanks!
Quoted 25 lines
drivers/pci/host/pci-xgene.c +2
-6@@ -246,14 +246,11 @@ static int xgene_pcie_ecam_init(struct pci_config_window *cfg, u32 ipversion) ret =xgene_get_csr_resource (adev, &csr);if (ret) {dev_err (dev,"can't get CSR resource\n" ); -kfree (port);return ret; } port->csr_base =devm_ioremap_resource (dev, &csr); -if (IS_ERR (port->csr_base)) { -kfree (port); -return -ENOMEM ; - } +if (IS_ERR (port->csr_base)) +return PTR_ERR (port->csr_base); port->cfg_base = cfg->win; port->version = ipversion; --To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html