efi: Tidy up device-tree-size calculation in copy_fdt()
authorSimon Glass <sjg@chromium.org>
Mon, 18 Jun 2018 14:08:25 +0000 (08:08 -0600)
committerAlexander Graf <agraf@suse.de>
Wed, 25 Jul 2018 12:57:44 +0000 (14:57 +0200)
This is a bit confusing at present since it adds 4KB to the pointer, then
rounds it up. It looks like a bug, but is not.

Move the 4KB addition into a separate statement and expand the comment.

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
cmd/bootefi.c

index a0fd1a3158ba9a67a4372f124dcb1bbbc426fda6..d0f2c032a2b7ca87e438fad6b55702854bc04672 100644 (file)
@@ -148,8 +148,12 @@ static void *copy_fdt(void *fdt)
                        fdt_ram_start = ram_start;
        }
 
-       /* Give us at least 4kb breathing room */
-       fdt_size = ALIGN(fdt_size + 4096, EFI_PAGE_SIZE);
+       /*
+        * Give us at least 4KB of breathing room in case the device tree needs
+        * to be expanded later. Round up to the nearest EFI page boundary.
+        */
+       fdt_size += 4096;
+       fdt_size = ALIGN(fdt_size + EFI_PAGE_SIZE - 1, EFI_PAGE_SIZE);
        fdt_pages = fdt_size >> EFI_PAGE_SHIFT;
 
        /* Safe fdt location is at 128MB */