43 lines
1.5 KiB
Diff
43 lines
1.5 KiB
Diff
|
|
From 0b23e1ad9e27fa60525b3d014da0425d2c24885f Mon Sep 17 00:00:00 2001
|
||
|
|
From: Zhang Jiao <zhangjiao2_yewu@cmss.chinamobile.com>
|
||
|
|
Date: Thu, 17 Oct 2024 13:19:51 +0800
|
||
|
|
Subject: [PATCH] platform-bus: fix refcount leak
|
||
|
|
|
||
|
|
cheery-pick from 99ec7b440a1d6a6ef07450b68687d24d13a25fb5
|
||
|
|
|
||
|
|
memory_region_find() returns an MR which it is the caller's
|
||
|
|
responsibility to unref, but platform_bus_map_mmio() was
|
||
|
|
forgetting to do so, thus leaking the MR.
|
||
|
|
|
||
|
|
Signed-off-by: Gao Shiyuan gaoshiyuan@baidu.com
|
||
|
|
Message-id: 20240829131005.9196-1-gaoshiyuan@baidu.com
|
||
|
|
Reviewed-by: Peter Maydell peter.maydell@linaro.org
|
||
|
|
[PMM: tweaked commit message]
|
||
|
|
Signed-off-by: Peter Maydell peter.maydell@linaro.org
|
||
|
|
Signed-off-by: Zhang Jiao <zhangjiao2_yewu@cmss.chinamobile.com>
|
||
|
|
---
|
||
|
|
hw/core/platform-bus.c | 5 ++++-
|
||
|
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
||
|
|
|
||
|
|
diff --git a/hw/core/platform-bus.c b/hw/core/platform-bus.c
|
||
|
|
index b8487b26b6..dc58bf505a 100644
|
||
|
|
--- a/hw/core/platform-bus.c
|
||
|
|
+++ b/hw/core/platform-bus.c
|
||
|
|
@@ -145,9 +145,12 @@ static void platform_bus_map_mmio(PlatformBusDevice *pbus, SysBusDevice *sbdev,
|
||
|
|
* the target device's memory region
|
||
|
|
*/
|
||
|
|
for (off = 0; off < pbus->mmio_size; off += alignment) {
|
||
|
|
- if (!memory_region_find(&pbus->mmio, off, size).mr) {
|
||
|
|
+ MemoryRegion *mr = memory_region_find(&pbus->mmio, off, size).mr;
|
||
|
|
+ if (!mr) {
|
||
|
|
found_region = true;
|
||
|
|
break;
|
||
|
|
+ } else {
|
||
|
|
+ memory_region_unref(mr);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
--
|
||
|
|
2.41.0.windows.1
|
||
|
|
|