mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2026-01-28 03:37:17 +01:00
image: fix race between mkits.sh and mkimage in .itb squashfs generation
With further investigation it was found a race in generating .itb images that include a RootFS caused by the mkits.sh and the mkimage. Due to the fact that mkits.sh generates a .pagesync image of the passed rootfs, it can happen that, concurrently, mkimage can be called at the same time mkits.sh is creating another .pagesync for the same rootfs. This cause mkimage to use an half made rootfs.pagesync creating a corrupted image. To address this, also protect the mkimage with the same lock used for mkits.sh preventing any kind of concurrent usage/generation of the rootfs.pagesync blob Fixes:52cc9d82f1("kernel: rework Initramfs locking logic") Link: https://github.com/openwrt/openwrt/pull/20492 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> (cherry picked from commit3de1bbd5ae)
This commit is contained in:
parent
debc420622
commit
bdb89ee6df
1 changed files with 3 additions and 2 deletions
|
|
@ -391,8 +391,9 @@ define Build/fit
|
|||
$(if $(DEVICE_DTS_OVERLAY),$(foreach dtso,$(DEVICE_DTS_OVERLAY), -O $(dtso):$(KERNEL_BUILD_DIR)/image-$(dtso).dtbo)) \
|
||||
-c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config-1") \
|
||||
-A $(LINUX_KARCH) -v $(LINUX_VERSION), gen-cpio$(if $(TARGET_PER_DEVICE_ROOTFS),.$(ROOTFS_ID/$(DEVICE_NAME))))
|
||||
PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage $(if $(findstring external,$(word 3,$(1))),\
|
||||
-E -B 0x1000 $(if $(findstring static,$(word 3,$(1))),-p 0x1000)) -f $@.its $@.new
|
||||
$(call locked,PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage $(if $(findstring external,$(word 3,$(1))),\
|
||||
-E -B 0x1000 $(if $(findstring static,$(word 3,$(1))),-p 0x1000)) -f $@.its $@.new, \
|
||||
gen-cpio$(if $(TARGET_PER_DEVICE_ROOTFS),.$(ROOTFS_ID/$(DEVICE_NAME))))
|
||||
@mv $@.new $@
|
||||
endef
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue