From a77dc2fb14683c9acac441aab7f553bdcf574ed4 Mon Sep 17 00:00:00 2001 From: Zhipeng Xie Date: Fri, 13 Nov 2020 04:00:24 -0500 Subject: [PATCH] optimization for out-of-tree modules Signed-off-by: Zhipeng Xie --- 0024-optimize-for-out-of-tree-module.patch | 44 ++++++++++++++++++++++ kpatch.spec | 11 +++++- 2 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 0024-optimize-for-out-of-tree-module.patch diff --git a/0024-optimize-for-out-of-tree-module.patch b/0024-optimize-for-out-of-tree-module.patch new file mode 100644 index 0000000..032ca83 --- /dev/null +++ b/0024-optimize-for-out-of-tree-module.patch @@ -0,0 +1,44 @@ +From aef88b0908ee9d36131c63493c02359a04d1304c Mon Sep 17 00:00:00 2001 +From: Zhipeng Xie +Date: Fri, 13 Nov 2020 03:05:22 -0500 +Subject: [PATCH] optimize for out of tree module + +some out-of-tree modules's Module.symvers not in SRCDIR +some out-of-tree modules's obj has relative path like /xxx/./xxx.o + +Signed-off-by: Zhipeng Xie +--- + kpatch-build/kpatch-build | 1 + + kpatch-build/kpatch-gcc | 4 +++- + 2 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build +index 523d5df..6238bc8 100755 +--- a/kpatch-build/kpatch-build ++++ b/kpatch-build/kpatch-build +@@ -1035,6 +1035,7 @@ for i in $FILES; do + BUILDDIR="/lib/modules/$ARCHVERSION/build/" + SYMVERS_FILE="$TEMPDIR/Module.symvers" + [[ -e $SRCDIR/Module.symvers ]] && cp "$SRCDIR/Module.symvers" "$SYMVERS_FILE" ++ [[ -e $USERMODBUILDDIR/Module.symvers ]] && cp "$USERMODBUILDDIR/Module.symvers" $SYMVERS_FILE + awk '{ print $1 "\t" $2 "\t" $3 "\t" $4}' "${BUILDDIR}/Module.symvers" >> "$SYMVERS_FILE" + fi + fi +diff --git a/kpatch-build/kpatch-gcc b/kpatch-build/kpatch-gcc +index 6ad6ebc..2b2490e 100755 +--- a/kpatch-build/kpatch-gcc ++++ b/kpatch-build/kpatch-gcc +@@ -25,7 +25,9 @@ if [[ "$TOOLCHAINCMD" =~ "${ARCH_COMPILE}gcc" || + + [[ "$obj" = */.tmp_*.o ]] && obj="${obj/.tmp_/}" + relobj=${obj//$KPATCH_GCC_SRCDIR\//} +- case "$relobj" in ++ tmpobj=$(readlink -f $obj) ++ relobj2=${tmpobj//$KPATCH_GCC_SRCDIR\//} ++ case "$relobj2" in + *.mod.o|\ + *built-in.o|\ + *built-in.a|\ +-- +2.18.1 + diff --git a/kpatch.spec b/kpatch.spec index f091b96..f71b83e 100644 --- a/kpatch.spec +++ b/kpatch.spec @@ -1,7 +1,7 @@ Name: kpatch Epoch: 1 Version: 0.9.1 -Release: 6 +Release: 7 Summary: A Linux dynamic kernel patching infrastructure License: GPLv2 @@ -35,6 +35,7 @@ Patch0020:0020-kpatch-build-add-compile-flag-fno-reorder-functions.patch Patch0021:0021-kpatch-build-don-t-copy-.config-for-out-of-tree-modu.patch Patch0022:0022-support-force-enable-disable-for-x86.patch Patch0023:0023-create-diff-object-fix-duplicate-symbols-for-vmlinux.patch +Patch0024:0024-optimize-for-out-of-tree-module.patch BuildRequires: gcc elfutils-libelf-devel uname-build-checks kernel-devel git Requires: bc @@ -94,7 +95,13 @@ popd %{_mandir}/man1/*.1.gz %changelog -* Thu Nov 22 2020 Zhipeng Xie -1:0.9.1-6 +* Tue Nov 17 2020 Zhipeng Xie -1:0.9.1-7 +- Type:enhancement +- ID:NA +- SUG:NA +- DESC:optimize for out of tree module + +* Thu Nov 12 2020 Zhipeng Xie -1:0.9.1-6 - Type:enhancement - ID:NA - SUG:NA