From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Masahiro Yamada <masahiroy@kernel.org>,
Vineet Gupta <vgupta@synopsys.com>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH 5.4 28/76] ARC: build: move symlink creation to arch/arc/Makefile to avoid race
Date: Mon, 18 Jan 2021 12:34:28 +0100 [thread overview]
Message-ID: <20210118113342.329792055@linuxfoundation.org> (raw)
In-Reply-To: <20210118113340.984217512@linuxfoundation.org>
From: Masahiro Yamada <masahiroy@kernel.org>
[ Upstream commit c5e6ae563c802c4d828d42e134af64004db2e58c ]
If you run 'make uImage uImage.gz' with the parallel option, uImage.gz
will be created by two threads simultaneously.
This is because arch/arc/Makefile does not specify the dependency
between uImage and uImage.gz. Hence, GNU Make assumes they can be
built in parallel. One thread descends into arch/arc/boot/ to create
uImage, and another to create uImage.gz.
Please notice the same log is displayed twice in the following steps:
$ export CROSS_COMPILE=<your-arc-compiler-prefix>
$ make -s ARCH=arc defconfig
$ make -j$(nproc) ARCH=arc uImage uImage.gz
[ snip ]
LD vmlinux
SORTTAB vmlinux
SYSMAP System.map
OBJCOPY arch/arc/boot/vmlinux.bin
OBJCOPY arch/arc/boot/vmlinux.bin
GZIP arch/arc/boot/vmlinux.bin.gz
GZIP arch/arc/boot/vmlinux.bin.gz
UIMAGE arch/arc/boot/uImage.gz
UIMAGE arch/arc/boot/uImage.gz
Image Name: Linux-5.10.0-rc4-00003-g62f23044
Created: Sun Nov 22 02:52:26 2020
Image Type: ARC Linux Kernel Image (gzip compressed)
Data Size: 2109376 Bytes = 2059.94 KiB = 2.01 MiB
Load Address: 80000000
Entry Point: 80004000
Image arch/arc/boot/uImage is ready
Image Name: Linux-5.10.0-rc4-00003-g62f23044
Created: Sun Nov 22 02:52:26 2020
Image Type: ARC Linux Kernel Image (gzip compressed)
Data Size: 2815455 Bytes = 2749.47 KiB = 2.69 MiB
Load Address: 80000000
Entry Point: 80004000
This is a race between the two threads trying to write to the same file
arch/arc/boot/uImage.gz. This is a potential problem that can generate
a broken file.
I fixed a similar problem for ARM by commit 3939f3345050 ("ARM: 8418/1:
add boot image dependencies to not generate invalid images").
I highly recommend to avoid such build rules that cause a race condition.
Move the uImage rule to arch/arc/Makefile.
Another strangeness is that arch/arc/boot/Makefile compares the
timestamps between $(obj)/uImage and $(obj)/uImage.*:
$(obj)/uImage: $(obj)/uImage.$(suffix-y)
@ln -sf $(notdir $<) $@
@echo ' Image $@ is ready'
This does not work as expected since $(obj)/uImage is a symlink.
The symlink should be created in a phony target rule.
I used $(kecho) instead of echo to suppress the message
'Image arch/arc/boot/uImage is ready' when the -s option is given.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arc/Makefile | 13 ++++++++++++-
arch/arc/boot/Makefile | 11 +----------
2 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/arch/arc/Makefile b/arch/arc/Makefile
index c95b950389ba6..6f05e509889f6 100644
--- a/arch/arc/Makefile
+++ b/arch/arc/Makefile
@@ -90,11 +90,22 @@ libs-y += arch/arc/lib/ $(LIBGCC)
boot := arch/arc/boot
-boot_targets := uImage uImage.bin uImage.gz uImage.lzma
+boot_targets := uImage.bin uImage.gz uImage.lzma
PHONY += $(boot_targets)
$(boot_targets): vmlinux
$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
+uimage-default-y := uImage.bin
+uimage-default-$(CONFIG_KERNEL_GZIP) := uImage.gz
+uimage-default-$(CONFIG_KERNEL_LZMA) := uImage.lzma
+
+PHONY += uImage
+uImage: $(uimage-default-y)
+ @ln -sf $< $(boot)/uImage
+ @$(kecho) ' Image $(boot)/uImage is ready'
+
+CLEAN_FILES += $(boot)/uImage
+
archclean:
$(Q)$(MAKE) $(clean)=$(boot)
diff --git a/arch/arc/boot/Makefile b/arch/arc/boot/Makefile
index 538b92f4dd253..3b1f8a69a89ef 100644
--- a/arch/arc/boot/Makefile
+++ b/arch/arc/boot/Makefile
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: GPL-2.0
-targets := vmlinux.bin vmlinux.bin.gz uImage
+targets := vmlinux.bin vmlinux.bin.gz
# uImage build relies on mkimage being availble on your host for ARC target
# You will need to build u-boot for ARC, rename mkimage to arc-elf32-mkimage
@@ -13,11 +13,6 @@ LINUX_START_TEXT = $$(readelf -h vmlinux | \
UIMAGE_LOADADDR = $(CONFIG_LINUX_LINK_BASE)
UIMAGE_ENTRYADDR = $(LINUX_START_TEXT)
-suffix-y := bin
-suffix-$(CONFIG_KERNEL_GZIP) := gz
-suffix-$(CONFIG_KERNEL_LZMA) := lzma
-
-targets += uImage
targets += uImage.bin
targets += uImage.gz
targets += uImage.lzma
@@ -42,7 +37,3 @@ $(obj)/uImage.gz: $(obj)/vmlinux.bin.gz FORCE
$(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma FORCE
$(call if_changed,uimage,lzma)
-
-$(obj)/uImage: $(obj)/uImage.$(suffix-y)
- @ln -sf $(notdir $<) $@
- @echo ' Image $@ is ready'
--
2.27.0
next prev parent reply other threads:[~2021-01-18 11:52 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-18 11:34 [PATCH 5.4 00/76] 5.4.91-rc1 review Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 01/76] kbuild: enforce -Werror=return-type Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 02/76] btrfs: prevent NULL pointer dereference in extent_io_tree_panic Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 03/76] ASoC: dapm: remove widget from dirty list on free Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 04/76] x86/hyperv: check cpu mask after interrupt has been disabled Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 05/76] tracing/kprobes: Do the notrace functions check without kprobes on ftrace Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 06/76] mips: fix Section mismatch in reference Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 07/76] mips: lib: uncached: fix non-standard usage of variable sp Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 08/76] MIPS: boot: Fix unaligned access with CONFIG_MIPS_RAW_APPENDED_DTB Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 09/76] MIPS: Fix malformed NT_FILE and NT_SIGINFO in 32bit coredumps Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 10/76] MIPS: relocatable: fix possible boot hangup with KASLR enabled Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 11/76] RDMA/ocrdma: Fix use after free in ocrdma_dealloc_ucontext_pd() Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 12/76] ACPI: scan: Harden acpi_device_add() against device ID overflows Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 13/76] mm/hugetlb: fix potential missing huge page size info Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 14/76] dm raid: fix discard limits for raid1 Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 15/76] dm snapshot: flush merged data before committing metadata Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 16/76] dm integrity: fix the maximum number of arguments Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 17/76] r8152: Add Lenovo Powered USB-C Travel Hub Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 18/76] btrfs: tree-checker: check if chunk item end overflows Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 19/76] drm/i915/backlight: fix CPU mode backlight takeover on LPT Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 20/76] ext4: fix bug for rename with RENAME_WHITEOUT Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 21/76] ext4: dont leak old mountpoint samples Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 22/76] smb3: remove unused flag passed into close functions Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 23/76] cifs: fix interrupted close commands Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 24/76] dm integrity: fix flush with external metadata device Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 25/76] ARC: build: remove non-existing bootpImage from KBUILD_IMAGE Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 26/76] ARC: build: add uImage.lzma to the top-level target Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 27/76] ARC: build: add boot_targets to PHONY Greg Kroah-Hartman
2021-01-18 11:34 ` Greg Kroah-Hartman [this message]
2021-01-18 11:34 ` [PATCH 5.4 29/76] netfilter: ipset: fixes possible oops in mtype_resize Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 30/76] btrfs: fix transaction leak and crash after RO remount caused by qgroup rescan Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 31/76] regulator: bd718x7: Add enable times Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 32/76] ethernet: ucc_geth: fix definition and size of ucc_geth_tx_global_pram Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 33/76] habanalabs: register to pci shutdown callback Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 34/76] habanalabs: Fix memleak in hl_device_reset Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 35/76] hwmon: (pwm-fan) Ensure that calculation doesnt discard big period values Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 36/76] lib/raid6: Let $(UNROLL) rules work with macOS userland Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 37/76] bfq: Fix computation of shallow depth Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 38/76] arch/arc: add copy_user_page() to <asm/page.h> to fix build error on ARC Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 39/76] misdn: dsp: select CONFIG_BITREVERSE Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 40/76] net: ethernet: fs_enet: Add missing MODULE_LICENSE Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 41/76] selftests: fix the return value for UDP GRO test Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 42/76] nvme-pci: mark Samsung PM1725a as IGNORE_DEV_SUBNQN Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 43/76] nvmet-rdma: Fix list_del corruption on queue establishment failure Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 44/76] drm/amdgpu: fix a GPU hang issue when remove device Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 45/76] usb: typec: Fix copy paste error for NVIDIA alt-mode description Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 46/76] ACPI: scan: add stub acpi_create_platform_device() for !CONFIG_ACPI Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 47/76] drm/msm: Call msm_init_vram before binding the gpu Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 48/76] ARM: picoxcell: fix missing interrupt-parent properties Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 49/76] perf intel-pt: Fix CPU too large error Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 50/76] dump_common_audit_data(): fix racy accesses to ->d_name Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 51/76] ASoC: meson: axg-tdm-interface: fix loopback Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 52/76] ASoC: meson: axg-tdmin: fix axg skew offset Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 53/76] ASoC: Intel: fix error code cnl_set_dsp_D0() Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 54/76] nvme-tcp: fix possible data corruption with bio merges Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 55/76] NFS4: Fix use-after-free in trace_event_raw_event_nfs4_set_lock Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 56/76] pNFS: We want return-on-close to complete when evicting the inode Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 57/76] pNFS: Mark layout for return if return-on-close was not sent Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 58/76] pNFS: Stricter ordering of layoutget and layoutreturn Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 59/76] NFS/pNFS: Fix a leak of the layout plh_outstanding counter Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 60/76] NFS: nfs_igrab_and_active must first reference the superblock Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 61/76] ext4: fix superblock checksum failure when setting password salt Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 62/76] RDMA/restrack: Dont treat as an error allocation ID wrapping Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 63/76] RDMA/usnic: Fix memleak in find_free_vf_and_create_qp_grp Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 64/76] bnxt_en: Improve stats context resource accounting with RDMA driver loaded Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 65/76] RDMA/mlx5: Fix wrong free of blue flame register on error Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 66/76] IB/mlx5: Fix error unwinding when set_has_smi_cap fails Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 67/76] drm/i915/dsi: Use unconditional msleep for the panel_on_delay when there is no reset-deassert MIPI-sequence Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 68/76] mm, slub: consider rest of partial list if acquire_slab() fails Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 69/76] iommu/vt-d: Fix unaligned addresses for intel_flush_svm_range_dev() Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 70/76] net: sunrpc: interpret the return value of kstrtou32 correctly Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 71/76] dm: eliminate potential source of excessive kernel log noise Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 72/76] ALSA: fireface: Fix integer overflow in transmit_midi_msg() Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 73/76] ALSA: firewire-tascam: Fix integer overflow in midi_port_work() Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 74/76] netfilter: conntrack: fix reading nf_conntrack_buckets Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 75/76] netfilter: nf_nat: Fix memleak in nf_nat_init Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 76/76] netfilter: nft_compat: remove flush counter optimization Greg Kroah-Hartman
2021-01-18 14:43 ` [PATCH 5.4 00/76] 5.4.91-rc1 review Naresh Kamboju
2021-01-18 15:53 ` Guenter Roeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210118113342.329792055@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masahiroy@kernel.org \
--cc=sashal@kernel.org \
--cc=stable@vger.kernel.org \
--cc=vgupta@synopsys.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox