* [PATCH 0/2] Fix double mem region release
@ 2018-01-19 18:03 Ladislav Michl
2018-01-19 18:04 ` [PATCH 1/2] devres: Fix double mem region release in devm_ioremap_resource() Ladislav Michl
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Ladislav Michl @ 2018-01-19 18:03 UTC (permalink / raw)
To: linux-pci, linux-kernel
Cc: Wolfram Sang, Bjorn Helgaas, Greg Kroah-Hartman, Thomas Gleixner
Two one-liners for the same issue, second bug occurrence is just
a copy&pasted mistake from 2011...
Ladislav Michl (2):
devres: Fix double mem region release in devm_ioremap_resource()
PCI: Fix double mem region release in devm_pci_remap_cfg_resource()
drivers/pci/pci.c | 1 -
lib/devres.c | 1 -
2 files changed, 2 deletions(-)
--
2.15.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] devres: Fix double mem region release in devm_ioremap_resource()
2018-01-19 18:03 [PATCH 0/2] Fix double mem region release Ladislav Michl
@ 2018-01-19 18:04 ` Ladislav Michl
2018-01-19 18:05 ` [PATCH 2/2] PCI: Fix double mem region release in devm_pci_remap_cfg_resource() Ladislav Michl
2018-01-19 23:36 ` [PATCH 0/2] Fix double mem region release Ladislav Michl
2 siblings, 0 replies; 4+ messages in thread
From: Ladislav Michl @ 2018-01-19 18:04 UTC (permalink / raw)
To: linux-pci, linux-kernel
Cc: Wolfram Sang, Bjorn Helgaas, Greg Kroah-Hartman, Thomas Gleixner
devm_release_mem_region() is called explicitely in case
devm_ioremap() fails, however the same release function
is later called also as devres release of
devm_request_mem_region() causing double resource free.
Fixes: 72f8c0bfa0de ("lib: devres: add convenience function to remap a resource")
Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
---
lib/devres.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/lib/devres.c b/lib/devres.c
index 5f2aedd58bc5..584356a568d0 100644
--- a/lib/devres.c
+++ b/lib/devres.c
@@ -156,7 +156,6 @@ void __iomem *devm_ioremap_resource(struct device *dev, struct resource *res)
dest_ptr = devm_ioremap(dev, res->start, size);
if (!dest_ptr) {
dev_err(dev, "ioremap failed for resource %pR\n", res);
- devm_release_mem_region(dev, res->start, size);
dest_ptr = IOMEM_ERR_PTR(-ENOMEM);
}
--
2.15.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] PCI: Fix double mem region release in devm_pci_remap_cfg_resource()
2018-01-19 18:03 [PATCH 0/2] Fix double mem region release Ladislav Michl
2018-01-19 18:04 ` [PATCH 1/2] devres: Fix double mem region release in devm_ioremap_resource() Ladislav Michl
@ 2018-01-19 18:05 ` Ladislav Michl
2018-01-19 23:36 ` [PATCH 0/2] Fix double mem region release Ladislav Michl
2 siblings, 0 replies; 4+ messages in thread
From: Ladislav Michl @ 2018-01-19 18:05 UTC (permalink / raw)
To: linux-pci, linux-kernel
Cc: Wolfram Sang, Bjorn Helgaas, Greg Kroah-Hartman, Thomas Gleixner
devm_release_mem_region() is called explicitely in case
devm_pci_remap_cfgspace() fails, however the same release
function is later called also as devres release of
devm_request_mem_region() causing double resource free.
Fixes: 490cb6ddb17d ("PCI: Implement devm_pci_remap_cfgspace()")
Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
---
drivers/pci/pci.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 764ca7b8840d..8f9d81a23ca5 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -3607,7 +3607,6 @@ void __iomem *devm_pci_remap_cfg_resource(struct device *dev,
dest_ptr = devm_pci_remap_cfgspace(dev, res->start, size);
if (!dest_ptr) {
dev_err(dev, "ioremap failed for resource %pR\n", res);
- devm_release_mem_region(dev, res->start, size);
dest_ptr = IOMEM_ERR_PTR(-ENOMEM);
}
--
2.15.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 0/2] Fix double mem region release
2018-01-19 18:03 [PATCH 0/2] Fix double mem region release Ladislav Michl
2018-01-19 18:04 ` [PATCH 1/2] devres: Fix double mem region release in devm_ioremap_resource() Ladislav Michl
2018-01-19 18:05 ` [PATCH 2/2] PCI: Fix double mem region release in devm_pci_remap_cfg_resource() Ladislav Michl
@ 2018-01-19 23:36 ` Ladislav Michl
2 siblings, 0 replies; 4+ messages in thread
From: Ladislav Michl @ 2018-01-19 23:36 UTC (permalink / raw)
To: linux-pci, linux-kernel
Cc: Bjorn Helgaas, Greg Kroah-Hartman, Thomas Gleixner
On Fri, Jan 19, 2018 at 07:03:10PM +0100, Ladislav Michl wrote:
> Two one-liners for the same issue, second bug occurrence is just
> a copy&pasted mistake from 2011...
>
> Ladislav Michl (2):
> devres: Fix double mem region release in devm_ioremap_resource()
> PCI: Fix double mem region release in devm_pci_remap_cfg_resource()
Hmm, that is really shame :-/ My test setup triggered "Trying to free
nonexistent resource" warning, but dissasembly of lib/devres.o shows
no call to devres_destroy, which seems that WARN_ON in
__devm_release_region() is optimized out. Strange. So far sorry
for the noise, I'll try figure out what broke after weekend.
> drivers/pci/pci.c | 1 -
> lib/devres.c | 1 -
> 2 files changed, 2 deletions(-)
>
> --
> 2.15.1
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2018-01-19 23:36 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-19 18:03 [PATCH 0/2] Fix double mem region release Ladislav Michl
2018-01-19 18:04 ` [PATCH 1/2] devres: Fix double mem region release in devm_ioremap_resource() Ladislav Michl
2018-01-19 18:05 ` [PATCH 2/2] PCI: Fix double mem region release in devm_pci_remap_cfg_resource() Ladislav Michl
2018-01-19 23:36 ` [PATCH 0/2] Fix double mem region release Ladislav Michl
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.