diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build index 086d28b52d997cd6db9cc00e16f75b3acfc4c9b7..fda9b2fa42e1d5a481d0670f9892a806dfb5e50f 100755 --- a/kpatch-build/kpatch-build +++ b/kpatch-build/kpatch-build @@ -228,6 +228,11 @@ use_klp_arch() fi } +new_use_klp_arch() +{ + "$READELF" -s --wide "$VMLINUX" | grep -w "arch_klp_init_object_loaded" +} + support_klp_replace() { if kernel_is_rhel; then @@ -1043,12 +1048,6 @@ if [[ -n "$CONFIG_LIVEPATCH" ]] && (kernel_is_rhel || kernel_version_gte 4.9.0); USE_KLP=1 - if use_klp_arch; then - USE_KLP_ARCH=1 - KPATCH_LDFLAGS="--unique=.parainstructions --unique=.altinstructions" - CDO_FLAGS="--klp-arch" - fi - if [[ "$KLP_REPLACE" -eq 1 ]] ; then support_klp_replace || die "The kernel doesn't support klp replace" else @@ -1151,6 +1150,14 @@ fi # shellcheck disable=SC2086 make "${MAKEVARS[@]}" "-j$CPUS" $TARGETS 2>&1 | logger || die +if [[ -n "$CONFIG_LIVEPATCH" ]]; then + if new_use_klp_arch; then + USE_KLP_ARCH=1 + KPATCH_LDFLAGS="--unique=.parainstructions --unique=.altinstructions" + CDO_FLAGS="--klp-arch" + fi +fi + echo "Reading special section data" find_special_section_data