]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
klp-build: Validate short-circuit prerequisites
authorJosh Poimboeuf <jpoimboe@kernel.org>
Fri, 17 Apr 2026 20:33:55 +0000 (13:33 -0700)
committerJosh Poimboeuf <jpoimboe@kernel.org>
Tue, 5 May 2026 04:16:06 +0000 (21:16 -0700)
The --short-circuit option implicitly requires that certain directories
are already in klp-tmp.  Enforce that to prevent confusing errors.

Acked-by: Song Liu <song@kernel.org>
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
scripts/livepatch/klp-build

index c1475c003298a8985e2ff7c8f33db4b426c795b8..c4a7acf8edc3f80f5010522ce7be147e42f0b90d 100755 (executable)
@@ -437,6 +437,20 @@ do_init() {
        # builds in pwd.
        [[ ! "$PWD" -ef "$SCRIPT_DIR/../.." ]] && die "please run from the kernel root directory"
 
+       if (( SHORT_CIRCUIT >= 2 )); then
+               [[ -f "$ORIG_DIR/.complete" ]] || die "-S $SHORT_CIRCUIT requires completed $ORIG_DIR"
+       fi
+       if (( SHORT_CIRCUIT >= 3 )); then
+               [[ -f "$PATCHED_DIR/.complete" ]] || die "-S $SHORT_CIRCUIT requires completed $PATCHED_DIR"
+       fi
+       if (( SHORT_CIRCUIT >= 4 )); then
+               [[ -f "$ORIG_CSUM_DIR/.complete" ]] || die "-S $SHORT_CIRCUIT requires completed $ORIG_CSUM_DIR"
+               [[ -f "$PATCHED_CSUM_DIR/.complete" ]] || die "-S $SHORT_CIRCUIT requires completed $PATCHED_CSUM_DIR"
+       fi
+       if (( SHORT_CIRCUIT >= 5 )); then
+               [[ -f "$DIFF_DIR/.complete" ]] || die "-S $SHORT_CIRCUIT requires completed $DIFF_DIR"
+       fi
+
        (( SHORT_CIRCUIT <= 1 )) && rm -rf "$TMP_DIR"
        mkdir -p "$TMP_DIR"
 
@@ -593,6 +607,7 @@ copy_orig_objects() {
 
        mv -f "$TMP_DIR/build.log" "$ORIG_DIR"
        touch "$TIMESTAMP"
+       touch "$ORIG_DIR/.complete"
 }
 
 # Copy all changed objects to $PATCHED_DIR
@@ -631,6 +646,7 @@ copy_patched_objects() {
        (( found == 0 )) && die "no changes detected"
 
        mv -f "$TMP_DIR/build.log" "$PATCHED_DIR"
+       touch "$PATCHED_DIR/.complete"
 }
 
 # Copy .o files to a separate directory and run "objtool klp checksum" on each
@@ -712,6 +728,8 @@ diff_objects() {
                                die "objtool klp diff failed"
                )
        done
+
+       touch "$DIFF_DIR/.complete"
 }
 
 # For each changed object, run "objtool klp checksum" with --debug-checksum to