From: Mark Brown Date: Thu, 24 Jul 2014 21:54:49 +0000 (+0100) Subject: Merge remote-tracking branch 'lsk/v3.10/topic/libfdt' into linux-linaro-lsk X-Git-Tag: firefly_0821_release~3680^2~36^2~42 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=bcddae4453f74e9d1dbc8db78c5c9bc552c600cb;p=firefly-linux-kernel-4.4.55.git Merge remote-tracking branch 'lsk/v3.10/topic/libfdt' into linux-linaro-lsk Conflicts: drivers/of/fdt.c --- bcddae4453f74e9d1dbc8db78c5c9bc552c600cb diff --cc drivers/of/fdt.c index a1ebaecc8122,10c08e82054b..4911158cba8a --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c @@@ -389,22 -335,16 +335,18 @@@ static void __unflatten_device_tree(str pr_debug(" size is %lx, allocating...\n", size); /* Allocate memory for the expanded device tree */ - mem = (unsigned long) - dt_alloc(size + 4, __alignof__(struct device_node)); + mem = dt_alloc(size + 4, __alignof__(struct device_node)); + memset((void *)mem, 0, size); + ((__be32 *)mem)[size / 4] = cpu_to_be32(0xdeadbeef); - pr_debug(" unflattening %lx...\n", mem); + pr_debug(" unflattening %p...\n", mem); /* Second pass, do actual unflattening */ - start = ((unsigned long)blob) + - be32_to_cpu(blob->off_dt_struct); + start = 0; unflatten_dt_node(blob, mem, &start, NULL, &allnextp, 0); - if (be32_to_cpup((__be32 *)start) != OF_DT_END) - pr_warning("Weird tag at end of tree: %08x\n", *((u32 *)start)); - if (be32_to_cpu(((__be32 *)mem)[size / 4]) != 0xdeadbeef) + if (be32_to_cpup(mem + size) != 0xdeadbeef) pr_warning("End of tree marker overwritten: %08x\n", be32_to_cpu(((__be32 *)mem)[size / 4])); *allnextp = NULL;