summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2026-07-16 12:03:23 -0600
committerTom Rini <[email protected]>2026-07-16 12:03:23 -0600
commit1708f49de9cb6ba9a24735faa9679f6f9146cbd4 (patch)
tree4f003a4a7800048f783608a58d47fd6d21a4e593
parent28d09d6ab68c4a3ac3b95c508a79dabbaa9d3e89 (diff)
parente1f345abf4c0df94ef6c5eca400a440c16b47d81 (diff)
Merge patch series "dm: core: misc fixes"
Peng Fan (OSS) <[email protected]> says: A few misc fixes to dm core. More information could be found in each commit. Patch list: dm: core: free old name in device_set_name to prevent leak dm: core: Correct calloc arguments dm: core: fix wrong strlen check in of_add_subnode dm: core: free fdt when fdt_create_empty_tree failure Link: https://lore.kernel.org/r/[email protected]
-rw-r--r--drivers/core/device.c2
-rw-r--r--drivers/core/of_access.c2
-rw-r--r--drivers/core/ofnode.c4
-rw-r--r--drivers/core/tag.c4
4 files changed, 8 insertions, 4 deletions
diff --git a/drivers/core/device.c b/drivers/core/device.c
index d365204ba11..6024534ff93 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -1147,6 +1147,8 @@ int device_set_name(struct udevice *dev, const char *name)
name = strdup(name);
if (!name)
return -ENOMEM;
+ if (dev_get_flags(dev) & DM_FLAG_NAME_ALLOCED)
+ free((char *)dev->name);
dev->name = name;
device_set_name_alloced(dev);
diff --git a/drivers/core/of_access.c b/drivers/core/of_access.c
index 969492aae37..f910cc9a31b 100644
--- a/drivers/core/of_access.c
+++ b/drivers/core/of_access.c
@@ -1071,7 +1071,7 @@ int of_add_subnode(struct device_node *parent, const char *name, int len,
* make sure we don't use a child called "trevor" when we are
* searching for "trev".
*/
- if (!strncmp(child->name, name, len) && strlen(name) == len) {
+ if (!strncmp(child->name, name, len) && strlen(child->name) == len) {
*childp = child;
return -EEXIST;
}
diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c
index 1388b481031..b5d13c43db1 100644
--- a/drivers/core/ofnode.c
+++ b/drivers/core/ofnode.c
@@ -130,8 +130,10 @@ int oftree_new(oftree *treep)
if (!fdt)
return log_msg_ret("fla", -ENOMEM);
ret = fdt_create_empty_tree(fdt, size);
- if (ret)
+ if (ret) {
+ free(fdt);
return log_msg_ret("fla", -EINVAL);
+ }
oftree_list[oftree_count++] = fdt;
tree.fdt = fdt;
}
diff --git a/drivers/core/tag.c b/drivers/core/tag.c
index a3c5cb7e57c..78b5ee6dc07 100644
--- a/drivers/core/tag.c
+++ b/drivers/core/tag.c
@@ -46,7 +46,7 @@ int dev_tag_set_ptr(struct udevice *dev, enum dm_tag_t tag, void *ptr)
return -EEXIST;
}
- node = calloc(sizeof(*node), 1);
+ node = calloc(1, sizeof(*node));
if (!node)
return -ENOMEM;
@@ -70,7 +70,7 @@ int dev_tag_set_val(struct udevice *dev, enum dm_tag_t tag, ulong val)
return -EEXIST;
}
- node = calloc(sizeof(*node), 1);
+ node = calloc(1, sizeof(*node));
if (!node)
return -ENOMEM;