diff options
Diffstat (limited to 'drivers/of/fdt.c')
-rw-r--r-- | drivers/of/fdt.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index 26d7060c17bf..137c31f5bb05 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c @@ -157,7 +157,7 @@ static void * unflatten_dt_node(struct boot_param_header *blob, __alignof__(struct device_node)); if (allnextpp) { char *fn; - memset(np, 0, sizeof(*np)); + of_node_init(np); np->full_name = fn = ((char *)np) + sizeof(*np); if (new_format) { /* rebuild full path for new format */ @@ -188,7 +188,6 @@ static void * unflatten_dt_node(struct boot_param_header *blob, dad->next->sibling = np; dad->next = np; } - kref_init(&np->kref); } /* process properties */ for (offset = fdt_first_property_offset(blob, *poffset); @@ -339,6 +338,8 @@ static void __unflatten_device_tree(struct boot_param_header *blob, memset((void *)mem, 0, size); + memset((void *)mem, 0, size); + ((__be32 *)mem)[size / 4] = cpu_to_be32(0xdeadbeef); pr_debug(" unflattening %p...\n", mem); |