On Wed, Nov 13, 2013 at 6:34 PM, Rob Herring <robherring2@xxxxxxxxx> wrote: >>> + if (!initial_boot_params || >>> + (be32_to_cpu(initial_boot_params->magic) != OF_DT_HEADER)) >>> + initial_boot_params = &__dtb_start; >>> + >>> /* check device tree validity */ >>> - if (be32_to_cpu(initial_boot_params->magic) != OF_DT_HEADER) { >>> + if (!initial_boot_params || >> >> initial_boot_params cannot be NULL here, so no need to check. > > What about the case of no built-in dtb like on arm? Even then the symbol exists, as all architectures put INIT_DATA or INIT_DATA_SECTION in their vmlinux.lds.S. But the section will be empty, cfr. the case __dtb_end == __dtb_start below. >> >>> + (be32_to_cpu(initial_boot_params->magic) != OF_DT_HEADER)) { >> >> However, if __dtb_end == __dtb_start, you may be reading random >> data here from the next section. The OF_DT_HEADER check should cover >> this, but better safe than sorry? > > Then we should also check that (__dtb_end != __dtb_start). Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html