From: Peng Fan <[email protected]>

Update dev_read_addr_*_ptr() and dev_remap_addr_*() helpers to use
dev_read_addr_size_*() and pass the DT-provided region size to
map_sysmem() / map_physmem() instead of 0.

Ensure mappings are consistent with the size defined in the device tree
and avoids implicit or unbounded mappings. When the DT does not provide
a size, the behavior remains unchanged since size is initialized to 0.

Signed-off-by: Peng Fan <[email protected]>
---
 drivers/core/read.c | 34 ++++++++++++++++++++++------------
 1 file changed, 22 insertions(+), 12 deletions(-)

diff --git a/drivers/core/read.c b/drivers/core/read.c
index c0d7a969db2..ba48862f44b 100644
--- a/drivers/core/read.c
+++ b/drivers/core/read.c
@@ -132,12 +132,14 @@ fdt_addr_t dev_read_addr_index(const struct udevice *dev, 
int index)
 
 void *dev_read_addr_index_ptr(const struct udevice *dev, int index)
 {
-       fdt_addr_t addr = dev_read_addr_index(dev, index);
+       fdt_addr_t addr;
+       fdt_size_t size = 0;
 
+       addr = dev_read_addr_size_index(dev, index, &size);
        if (addr == FDT_ADDR_T_NONE)
                return NULL;
 
-       return map_sysmem(addr, 0);
+       return map_sysmem(addr, size);
 }
 
 fdt_addr_t dev_read_addr_size_index(const struct udevice *dev, int index,
@@ -157,17 +159,19 @@ void *dev_read_addr_size_index_ptr(const struct udevice 
*dev, int index,
        if (addr == FDT_ADDR_T_NONE)
                return NULL;
 
-       return map_sysmem(addr, 0);
+       return map_sysmem(addr, *size);
 }
 
 void *dev_remap_addr_index(const struct udevice *dev, int index)
 {
-       fdt_addr_t addr = dev_read_addr_index(dev, index);
+       fdt_addr_t addr;
+       fdt_size_t size = 0;
 
+       addr = dev_read_addr_size_index(dev, index, &size);
        if (addr == FDT_ADDR_T_NONE)
                return NULL;
 
-       return map_physmem(addr, 0, MAP_NOCACHE);
+       return map_physmem(addr, size, MAP_NOCACHE);
 }
 
 fdt_addr_t dev_read_addr_name(const struct udevice *dev, const char *name)
@@ -182,12 +186,14 @@ fdt_addr_t dev_read_addr_name(const struct udevice *dev, 
const char *name)
 
 void *dev_read_addr_name_ptr(const struct udevice *dev, const char *name)
 {
-       fdt_addr_t addr = dev_read_addr_name(dev, name);
+       fdt_addr_t addr;
+       fdt_size_t size = 0;
 
+       addr = dev_read_addr_size_name(dev, name, &size);
        if (addr == FDT_ADDR_T_NONE)
                return NULL;
 
-       return map_sysmem(addr, 0);
+       return map_sysmem(addr, size);
 }
 
 fdt_addr_t dev_read_addr_size_name(const struct udevice *dev, const char *name,
@@ -209,17 +215,19 @@ void *dev_read_addr_size_name_ptr(const struct udevice 
*dev, const char *name,
        if (addr == FDT_ADDR_T_NONE)
                return NULL;
 
-       return map_sysmem(addr, 0);
+       return map_sysmem(addr, *size);
 }
 
 void *dev_remap_addr_name(const struct udevice *dev, const char *name)
 {
-       fdt_addr_t addr = dev_read_addr_name(dev, name);
+       fdt_addr_t addr;
+       fdt_size_t size = 0;
 
+       addr = dev_read_addr_size_name(dev, name, &size);
        if (addr == FDT_ADDR_T_NONE)
                return NULL;
 
-       return map_physmem(addr, 0, MAP_NOCACHE);
+       return map_physmem(addr, size, MAP_NOCACHE);
 }
 
 fdt_addr_t dev_read_addr(const struct udevice *dev)
@@ -229,12 +237,14 @@ fdt_addr_t dev_read_addr(const struct udevice *dev)
 
 void *dev_read_addr_ptr(const struct udevice *dev)
 {
-       fdt_addr_t addr = dev_read_addr(dev);
+       fdt_addr_t addr;
+       fdt_size_t size = 0;
 
+       addr = dev_read_addr_size(dev, &size);
        if (addr == FDT_ADDR_T_NONE)
                return NULL;
 
-       return map_sysmem(addr, 0);
+       return map_sysmem(addr, size);
 }
 
 void *dev_remap_addr(const struct udevice *dev)

---
base-commit: bb354d04459f5425318aeb8a70bae995ee573f1d
change-id: 20260525-core-89721311824a

Best regards,
-- 
Peng Fan <[email protected]>

Reply via email to