[openwrt/openwrt] image: fix race between mkits.sh and mkimage in .itb squashfs generation

LEDE Commits lede-commits at lists.infradead.org
Thu Oct 23 09:18:14 PDT 2025


ansuel pushed a commit to openwrt/openwrt.git, branch openwrt-24.10:
https://git.openwrt.org/bdb89ee6dff4742f2d7bcf101077ee6f9f8031f7

commit bdb89ee6dff4742f2d7bcf101077ee6f9f8031f7
Author: Christian Marangi <ansuelsmth at gmail.com>
AuthorDate: Wed Oct 22 02:17:25 2025 +0200

    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: 52cc9d82f113 ("kernel: rework Initramfs locking logic")
    Link: https://github.com/openwrt/openwrt/pull/20492
    Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
    (cherry picked from commit 3de1bbd5aeb542de9a4b20eff0f6bbf1767fd6b9)
---
 include/image-commands.mk | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/include/image-commands.mk b/include/image-commands.mk
index a627ffc202..0833650ade 100644
--- a/include/image-commands.mk
+++ b/include/image-commands.mk
@@ -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
 




More information about the lede-commits mailing list