From: Christoffer Dall Date: Thu, 2 Oct 2014 15:10:08 +0000 (+0200) Subject: Merge tag 'v3.10.13' into lsk/v3.10/topic/kvm X-Git-Tag: firefly_0821_release~3680^2~36^2~16^2^2~287 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=97ce45b955af0adc60195137873cf74234c956eb;p=firefly-linux-kernel-4.4.55.git Merge tag 'v3.10.13' into lsk/v3.10/topic/kvm This is the 3.10.13 stable release --- 97ce45b955af0adc60195137873cf74234c956eb diff --cc drivers/of/fdt.c index 10c08e82054b,118773751ea4..4911158cba8a --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c @@@ -335,16 -389,22 +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;