livepatch/klp-build: report patch validation fuzz

Capture the output of the patch command to detect when a patch applies
with fuzz or line offsets.

If such "fuzz" is detected during the validation phase, warn the user
and display the details.  This helps identify input patches that may
need refreshing against the target source tree.

Ensure that internal patch operations (such as those in refresh_patch or
during the final build phase) can still run quietly.

Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
Acked-by: Song Liu <song@kernel.org>
Link: https://patch.msgid.link/20260310203751.1479229-13-joe.lawrence@redhat.com
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
This commit is contained in:
Joe Lawrence
2026-03-16 12:52:53 -07:00
committed by Josh Poimboeuf
parent 1fbc9b855f
commit 51a0b7c4ed
+19 -5
View File
@@ -360,11 +360,24 @@ check_unsupported_patches() {
apply_patch() {
local patch="$1"
shift
local extra_args=("$@")
local drift_regex="with fuzz|offset [0-9]+ line"
local output
local status
[[ ! -f "$patch" ]] && die "$patch doesn't exist"
patch -d "$SRC" -p1 --dry-run --silent --no-backup-if-mismatch -r /dev/null < "$patch"
patch -d "$SRC" -p1 --silent --no-backup-if-mismatch -r /dev/null < "$patch"
status=0
output=$(patch -d "$SRC" -p1 --dry-run --no-backup-if-mismatch -r /dev/null "${extra_args[@]}" < "$patch" 2>&1) || status=$?
if [[ "$status" -ne 0 ]]; then
echo "$output" >&2
die "$patch did not apply"
elif [[ "$output" =~ $drift_regex ]]; then
echo "$output" >&2
warn "${patch} applied with fuzz"
fi
patch -d "$SRC" -p1 --no-backup-if-mismatch -r /dev/null "${extra_args[@]}" --silent < "$patch"
APPLIED_PATCHES+=("$patch")
}
@@ -383,10 +396,11 @@ revert_patch() {
}
apply_patches() {
local extra_args=("$@")
local patch
for patch in "${PATCHES[@]}"; do
apply_patch "$patch"
apply_patch "$patch" "${extra_args[@]}"
done
}
@@ -444,7 +458,7 @@ refresh_patch() {
( cd "$SRC" && echo "${input_files[@]}" | xargs cp --parents --target-directory="$tmpdir/a" )
# Copy patched source files to 'b'
apply_patch "$patch"
apply_patch "$patch" "--silent"
( cd "$SRC" && echo "${output_files[@]}" | xargs cp --parents --target-directory="$tmpdir/b" )
revert_patch "$patch"
@@ -817,7 +831,7 @@ fi
if (( SHORT_CIRCUIT <= 2 )); then
status "Fixing patch(es)"
fix_patches
apply_patches
apply_patches "--silent"
status "Building patched kernel"
build_kernel "patched"
revert_patches