mirror of
https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-10.git
synced 2026-09-09 00:07:04 +08:00
klp-build: Fix patch cleanup on interrupt
JIRA: https://redhat.atlassian.net/browse/RHEL-152194 Upstream Status: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git commit f3048888ea62ac1c573db91e74e0dcabe058e89f Author: Josh Poimboeuf <jpoimboe@kernel.org> Date: Thu Apr 2 19:08:39 2026 -0700 klp-build: Fix patch cleanup on interrupt If a build error occurs and the user hits Ctrl-C while a large patch is being reverted during cleanup, the cleanup EXIT trap gets re-triggered and tries to re-revert the already partially-reverted patch. That causes 'patch -R' to repeatedly prompt "Unreversed patch detected! Ignore -R? [n]" for each already-reverted hunk, with no way to break out. Fix it by adding '--force' to the patch revert command in revert_patch(), which causes it to silently ignore already-reverted hunks. And ignore errors, as the cleanup is always best-effort. For similar reasons, add to APPLIED_PATCHES before (rather than after) applying the patch in apply_patch() so an interrupted apply will also get cleaned up. Fixes: d36a7343f4ba ("livepatch/klp-build: switch to GNU patch and recountdiff") Acked-by: Song Liu <song@kernel.org> Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org> Signed-off-by: Yannick Cote <ycote@redhat.com>
This commit is contained in:
@@ -376,15 +376,15 @@ apply_patch() {
|
||||
warn "${patch} applied with fuzz"
|
||||
fi
|
||||
|
||||
patch -d "$SRC" -p1 --no-backup-if-mismatch -r /dev/null "${extra_args[@]}" --silent < "$patch"
|
||||
APPLIED_PATCHES+=("$patch")
|
||||
patch -d "$SRC" -p1 --no-backup-if-mismatch -r /dev/null "${extra_args[@]}" --silent < "$patch"
|
||||
}
|
||||
|
||||
revert_patch() {
|
||||
local patch="$1"
|
||||
local tmp=()
|
||||
|
||||
patch -d "$SRC" -p1 -R --silent --no-backup-if-mismatch -r /dev/null < "$patch"
|
||||
patch -d "$SRC" -p1 -R --force --no-backup-if-mismatch -r /dev/null &> /dev/null < "$patch" || true
|
||||
|
||||
for p in "${APPLIED_PATCHES[@]}"; do
|
||||
[[ "$p" == "$patch" ]] && continue
|
||||
|
||||
Reference in New Issue
Block a user