From: Leif Lindholm Date: Wed, 4 Dec 2013 12:59:21 +0000 (+0000) Subject: grub-core/lib/fdt.c: correctly update size_dt_struct in add_subnode() X-Git-Tag: grub-2.02-beta1~158 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bbeee1c4a358b00bd33268d0161fd23cae7f8274;p=thirdparty%2Fgrub.git grub-core/lib/fdt.c: correctly update size_dt_struct in add_subnode() --- diff --git a/ChangeLog b/ChangeLog index d60acab3f..840a40405 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-12-05 Leif Lindholm + + * grub-core/kern/fdt.c: Update struct size when adding node. + 2013-12-05 Vladimir Serbinenko Handle unaligned .bss on sparc64. diff --git a/grub-core/lib/fdt.c b/grub-core/lib/fdt.c index 9b77e1c67..9c886fceb 100644 --- a/grub-core/lib/fdt.c +++ b/grub-core/lib/fdt.c @@ -132,6 +132,7 @@ static int add_subnode (void *fdt, int parentoffset, const char *name) + parentoffset); grub_uint32_t *end = (void *) struct_end (fdt); unsigned int entry_size = node_entry_size (name); + unsigned int struct_size = grub_fdt_get_size_dt_struct(fdt); char *node_name; SKIP_NODE_NAME(node_name, token, end); @@ -167,6 +168,7 @@ insert: token[entry_size / sizeof(*token) - 2] = 0; /* padding bytes */ grub_strcpy((char *) (token + 1), name); token[entry_size / sizeof(*token) - 1] = grub_cpu_to_be32(FDT_END_NODE); + grub_fdt_set_size_dt_struct (fdt, struct_size + entry_size); return ((grub_addr_t) token - (grub_addr_t) fdt - grub_fdt_get_off_dt_struct(fdt)); }