From 7861240f482aa41bfad41fbb57ac1990cd6b6960 Mon Sep 17 00:00:00 2001 From: Josh Poimboeuf Date: Wed, 17 Aug 2022 12:17:19 -0700 Subject: [PATCH 105/108] kpatch-build: Add find_kobj() short-circuit for OOT modules When patching an OOT module, the parent object is always the OOT module. Hard-code that to prevent the need for any further special casing in find_kobj() (e.g., commit 9143e88f16a1 ("kpatch-build: fix find_parent_obj")). Signed-off-by: Josh Poimboeuf --- kpatch-build/kpatch-build | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build index 296fa48..5435a19 100755 --- a/kpatch-build/kpatch-build +++ b/kpatch-build/kpatch-build @@ -479,6 +479,12 @@ find_parent_obj() { find_kobj() { arg="$1" + + if [[ -n $OOT_MODULE ]]; then + KOBJFILE="$OOT_MODULE" + return + fi + KOBJFILE="$arg" DEEP_FIND=0 ERROR_IF_DIFF= @@ -1093,17 +1099,17 @@ for i in $FILES; do find_kobj "$i" cd "$TEMPDIR" || die if [[ -e "orig/$i" ]]; then - if [[ "$(basename "$KOBJFILE")" = vmlinux ]]; then - KOBJFILE_NAME=vmlinux - KOBJFILE_PATH="$VMLINUX" - SYMTAB="${TEMPDIR}/${KOBJFILE_NAME}.symtab" - SYMVERS_FILE="$BUILDDIR/Module.symvers" - elif [[ "$(basename "$KOBJFILE")" = "$(basename "$OOT_MODULE")" ]]; then + if [[ -n $OOT_MODULE ]]; then KOBJFILE_NAME="$(basename --suffix=.ko "$OOT_MODULE")" KOBJFILE_NAME="${KOBJFILE_NAME//-/_}" KOBJFILE_PATH="$OOT_MODULE" SYMTAB="${TEMPDIR}/module/${KOBJFILE_NAME}.symtab" SYMVERS_FILE="$TEMPDIR/Module.symvers" + elif [[ "$(basename "$KOBJFILE")" = vmlinux ]]; then + KOBJFILE_NAME=vmlinux + KOBJFILE_PATH="$VMLINUX" + SYMTAB="${TEMPDIR}/${KOBJFILE_NAME}.symtab" + SYMVERS_FILE="$BUILDDIR/Module.symvers" else KOBJFILE_NAME=$(basename "${KOBJFILE%.ko}") KOBJFILE_NAME="${KOBJFILE_NAME//-/_}" -- 2.37.3