libfdt: Copy the struct region in fdt_resize()
authorSimon Glass <sjg@chromium.org>
Sat, 20 Jul 2019 18:23:59 +0000 (12:23 -0600)
committerSimon Glass <sjg@chromium.org>
Mon, 29 Jul 2019 15:38:06 +0000 (09:38 -0600)
At present this function appears to copy only the data before the struct
region and the data in the string region. It does not seem to copy the
struct region itself.

>From the arguments of this function it seems that it should support fdt
and buf being different. This patch attempts to fix this problem.

Upstream commit: c72fa77 libfdt: Copy the struct region in fdt_resize()

Signed-off-by: Simon Glass <sjg@chromium.org>
scripts/dtc/libfdt/fdt_sw.c

index 6d33cc29d0224d9fc6307607ef7563df944da2d3..d8ef748a7212f489df98a94dac8faac399240a8b 100644 (file)
@@ -114,7 +114,7 @@ int fdt_resize(void *fdt, void *buf, int bufsize)
 
        FDT_SW_CHECK_HEADER(fdt);
 
-       headsize = fdt_off_dt_struct(fdt);
+       headsize = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt);
        tailsize = fdt_size_dt_strings(fdt);
 
        if ((headsize + tailsize) > bufsize)