summaryrefslogtreecommitdiff
path: root/libfdt/fdt_overlay.c
diff options
context:
space:
mode:
Diffstat (limited to 'libfdt/fdt_overlay.c')
-rw-r--r--libfdt/fdt_overlay.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/libfdt/fdt_overlay.c b/libfdt/fdt_overlay.c
index 8b715d6..531294c 100644
--- a/libfdt/fdt_overlay.c
+++ b/libfdt/fdt_overlay.c
@@ -548,11 +548,11 @@ static int overlay_add_to_local_fixups(void *fdt, const char *value, int len)
static int overlay_fixup_phandle(void *fdt, void *fdto, int symbols_off,
int property, int fixups_off, int merge)
{
- const char *value;
+ const char *value, *total_value;
const char *label;
- int len, ret = 0;
+ int len, total_len, ret = 0;
- value = fdt_getprop_by_offset(fdto, property,
+ total_value = value = fdt_getprop_by_offset(fdto, property,
&label, &len);
if (!value) {
if (len == -FDT_ERR_NOTFOUND)
@@ -561,6 +561,8 @@ static int overlay_fixup_phandle(void *fdt, void *fdto, int symbols_off,
return len;
}
+ total_len = len;
+
do {
const char *path, *name, *fixup_end;
const char *fixup_str = value;
@@ -631,7 +633,7 @@ static int overlay_fixup_phandle(void *fdt, void *fdto, int symbols_off,
* during a subsequent overlay of combined blob on a base blob.
*/
if (merge) {
- ret = overlay_add_to_local_fixups(fdt, value, len);
+ ret = overlay_add_to_local_fixups(fdt, total_value, total_len);
if (!ret)
ret = fdt_delprop(fdto, fixups_off, label);
}