lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 16 Apr 2018 23:47:47 +0900 From: Masahiro Yamada <yamada.masahiro@...ionext.com> To: Ralf Baechle <ralf@...ux-mips.org>, James Hogan <jhogan@...nel.org>, linux-mips@...ux-mips.org Cc: Paul Burton <paul.burton@...s.com>, Masahiro Yamada <yamada.masahiro@...ionext.com>, Kees Cook <keescook@...omium.org>, linux-kernel@...r.kernel.org Subject: [PATCH 7/7] MIPS: boot: rebuild ITB when contained DTB is updated Since now, the unnecessary rebuild of ITB has been fixed. Another problem to be taken care of is, missed rebuild of ITB. For example, board-boston.its.S includes boston.dtb by the /incbin/ directive. If boston.dtb is updated, vmlinux.*.dtb must be rebuilt. Currently, the dependency between ITB and contained DTB files is not described anywhere. Previously, this problem was hidden since vmlinux.*.itb was always rebuilt even if nothing is updated. By fixing the spurious rebuild, this is a real problem now. Use the same strategy for automatic generation of the header file dependency. DTC works as a backend of mkimage, and DTC supports -d option. It outputs the dependencies, including binary files pulled by the /incbin/ directive. The implementation is simpler than cmd_dtc in scripts/Makefile.lib since we do not need CPP here. Just pass -d $(depfile) to DTC, and let the resulted $(depfile) processed by fixdep. It might be unclear why "$(obj)/dts/%.dtb: ;" is needed. With this commit, *.cmd files will contain dependency on DTB files. In the next invocation of build, the *.cmd files will be included, then Make will try to find a rule to update *.dtb files. Unfortunately, it is found in scripts/Makefile.lib. The build rule of $(obj)/%.dtb is invoked by if_changed_dep, so it needs to include *.cmd files of DTB, but they are not included because we are in arch/mips/boot, but those *.cmd files reside in arch/mips/boot/dts/*/. Cancel the pattern rule in scripts/Makefile.lib to suppress unneeded rebuilding of DTB. Signed-off-by: Masahiro Yamada <yamada.masahiro@...ionext.com> --- arch/mips/boot/Makefile | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/arch/mips/boot/Makefile b/arch/mips/boot/Makefile index d102d53..f8dce5b 100644 --- a/arch/mips/boot/Makefile +++ b/arch/mips/boot/Makefile @@ -163,11 +163,18 @@ quiet_cmd_itb-image = ITB $@ $(CONFIG_SHELL) $(MKIMAGE) \ -D "-I dts -O dtb -p 500 \ --include $(objtree)/arch/mips \ - --warning no-unit_address_vs_reg" \ + --warning no-unit_address_vs_reg \ + -d $(depfile)" \ -f $(2) $@ $(obj)/vmlinux.itb: $(obj)/vmlinux.its $(obj)/vmlinux.bin FORCE - $(call if_changed,itb-image,$<) + $(call if_changed_dep,itb-image,$<) $(obj)/vmlinux.%.itb: $(obj)/vmlinux.%.its $(obj)/vmlinux.bin.% FORCE - $(call if_changed,itb-image,$<) + $(call if_changed_dep,itb-image,$<) + +# The -d option of DTC outputs dependencies of binaries included by the +# /incbin/ directive. When .*.cmd files are included, Kbuild tries to +# update *.dtb because it sees a pattern rule defined in scripts/Makefile.lib. +# The rule must be cancelled by a more specific rule. +$(obj)/dts/%.dtb: ; -- 2.7.4
Powered by blists - more mailing lists