From 4424f7bf7e2f7e2d2288ad86286cf422d0fcf351 Mon Sep 17 00:00:00 2001 From: Zhipeng Xie Date: Tue, 16 Nov 2021 12:10:06 +0800 Subject: [PATCH] rebase from upstream v0.9.5 Signed-off-by: Zhipeng Xie --- 0001-kpatch-add-aarch64-support.patch | 172 ++++ 0001-support-compile-kpatch-on-aarch64.patch | 112 --- ...ct-fix-symbol-changed-sections-error.patch | 31 + ...uild-support-build-patch-for-aarch64.patch | 744 ------------------ ...ct-support-kpatch_line_macro_change_.patch | 90 +++ ...ct-support-skip-check-func-profiling.patch | 43 + ...e-THIS-modname-as-the-name-of-ddebug.patch | 32 - ...ct-new-static-var-should-be-included.patch | 14 +- ...ct-don-t-create-dynamic-reloc-for-sy.patch | 31 - ...ct-fix-correlate-static-local-variab.patch | 16 +- ...ct-create-dynamic-relocs-for-changed.patch | 71 -- ...patch => 0007-fix-rodata.str-problem.patch | 10 +- ...ch-hook-support-no-active-after-load.patch | 33 +- ...build-enhance-for-out-of-tree-module.patch | 198 +++++ ...build-enhance-for-out-of-tree-module.patch | 133 ---- ...atch => 0010-support-c-kernel-module.patch | 125 ++- ...ch => 0011-symbol-lookup-enhancement.patch | 301 +++---- ...el-symbol-table-to-help-symbol-looku.patch | 126 +++ ...el-symbol-table-to-help-symbol-looku.patch | 172 ---- ...ch-hook-support-force-enable-disable.patch | 154 ++++ ...atch-build-ignore-debuginfo-in-patch.patch | 30 +- ...ch-hook-support-force-enable-disable.patch | 78 -- ...h.patch => 0015-add-object-in-kpatch.patch | 14 +- ...diff-object-fix-.orc_unwind_ip-error.patch | 22 +- ...e-diff-object-add-jump-label-support.patch | 67 ++ ...d-compile-flag-fno-reorder-functions.patch | 14 +- ...ginal-reloc-for-symbols-from-modules.patch | 33 - ...ot-resolved-when-new-functions-expor.patch | 41 +- ...e-diff-object-add-jump-label-support.patch | 91 --- ...tatic-variables-using-KPATCH_IGNORE_.patch | 38 +- ...ct-fix-segment-fault-when-sec2-rela-.patch | 23 +- ...-t-copy-.config-for-out-of-tree-modu.patch | 28 - ...support-force-enable-disable-for-x86.patch | 58 -- ...oc-for-symbols-exported-from-modules.patch | 36 + ...ct-create-dynamic-relocs-for-changed.patch | 47 ++ ...ct-fix-duplicate-symbols-for-vmlinux.patch | 65 -- 0024-kpatch-build-support-CROSS_COMPILE.patch | 29 + 0024-optimize-for-out-of-tree-module.patch | 44 -- ...f-support-for-.cold-functions-with-n.patch | 42 - ...IQUE_ID_-to-maybe_discarded_sym-list.patch | 62 -- ...ct-error-on-detect-new-changed-ALTIN.patch | 51 -- ...mpos-for-duplicate-symbols-in-vmlinu.patch | 104 --- ...ct-Fix-out-of-range-relocation-error.patch | 36 - ...ct-Fix-out-of-range-relocation-check.patch | 32 - 0034-add-openEuler-build-support.patch | 25 - 0035-livepatch-patch-hook-add-comments.patch | 232 ------ kpatch-0.9.1.tar.gz | Bin 198691 -> 0 bytes kpatch-0.9.5.tar.gz | Bin 0 -> 259135 bytes kpatch.spec | 70 +- make_hotpatch | 5 +- 50 files changed, 1367 insertions(+), 2658 deletions(-) create mode 100644 0001-kpatch-add-aarch64-support.patch delete mode 100644 0001-support-compile-kpatch-on-aarch64.patch create mode 100644 0002-create-diff-object-fix-symbol-changed-sections-error.patch delete mode 100644 0002-kpatch-build-support-build-patch-for-aarch64.patch create mode 100644 0003-create-diff-object-support-kpatch_line_macro_change_.patch create mode 100644 0004-create-diff-object-support-skip-check-func-profiling.patch delete mode 100644 0004-livepatch-fix-use-THIS-modname-as-the-name-of-ddebug.patch rename 0003-create-diff-object-new-static-var-should-be-included.patch => 0005-create-diff-object-new-static-var-should-be-included.patch (82%) delete mode 100644 0006-create-diff-object-don-t-create-dynamic-reloc-for-sy.patch rename 0005-create-diff-object-fix-correlate-static-local-variab.patch => 0006-create-diff-object-fix-correlate-static-local-variab.patch (85%) delete mode 100644 0007-create-diff-object-create-dynamic-relocs-for-changed.patch rename 0008-fix-rodata.str-problem.patch => 0007-fix-rodata.str-problem.patch (76%) rename 0009-livepatch-patch-hook-don-t-active-patch-when-insmod.patch => 0008-livepatch-patch-hook-support-no-active-after-load.patch (54%) create mode 100644 0009-kpatch-build-enhance-for-out-of-tree-module.patch delete mode 100644 0010-kpatch-build-enhance-for-out-of-tree-module.patch rename 0011-support-c-plus-kernel-module.patch => 0010-support-c-kernel-module.patch (52%) rename 0012-symbol-lookup-enhancement.patch => 0011-symbol-lookup-enhancement.patch (59%) create mode 100644 0012-Add-running-kernel-symbol-table-to-help-symbol-looku.patch delete mode 100644 0013-Add-running-kernel-symbol-table-to-help-symbol-looku.patch create mode 100644 0013-livepatch-patch-hook-support-force-enable-disable.patch rename 0015-kpatch-build-ignore-debuginfo-in-patch.patch => 0014-kpatch-build-ignore-debuginfo-in-patch.patch (67%) delete mode 100644 0014-livepatch-patch-hook-support-force-enable-disable.patch rename 0016-add-object-in-kpatch.patch => 0015-add-object-in-kpatch.patch (70%) rename 0017-create-diff-object-fix-.orc_unwind_ip-error.patch => 0016-create-diff-object-fix-.orc_unwind_ip-error.patch (51%) create mode 100644 0017-create-diff-object-add-jump-label-support.patch rename 0020-kpatch-build-add-compile-flag-fno-reorder-functions.patch => 0018-kpatch-build-add-compile-flag-fno-reorder-functions.patch (81%) delete mode 100644 0018-use-original-reloc-for-symbols-from-modules.patch rename 0025-Fix-relocation-not-resolved-when-new-functions-expor.patch => 0019-Fix-relocation-not-resolved-when-new-functions-expor.patch (79%) delete mode 100644 0019-create-diff-object-add-jump-label-support.patch rename 0026-support-remove-static-variables-using-KPATCH_IGNORE_.patch => 0020-support-remove-static-variables-using-KPATCH_IGNORE_.patch (76%) rename 0031-create-diff-object-fix-segment-fault-when-sec2-rela-.patch => 0021-create-diff-object-fix-segment-fault-when-sec2-rela-.patch (51%) delete mode 100644 0021-kpatch-build-don-t-copy-.config-for-out-of-tree-modu.patch delete mode 100644 0022-support-force-enable-disable-for-x86.patch create mode 100644 0022-use-original-reloc-for-symbols-exported-from-modules.patch create mode 100644 0023-create-diff-object-create-dynamic-relocs-for-changed.patch delete mode 100644 0023-create-diff-object-fix-duplicate-symbols-for-vmlinux.patch create mode 100644 0024-kpatch-build-support-CROSS_COMPILE.patch delete mode 100644 0024-optimize-for-out-of-tree-module.patch delete mode 100644 0027-create-build-diff-support-for-.cold-functions-with-n.patch delete mode 100644 0028-lookup-Add-__UNIQUE_ID_-to-maybe_discarded_sym-list.patch delete mode 100644 0029-create-diff-object-error-on-detect-new-changed-ALTIN.patch delete mode 100644 0030-kpatch-update-sympos-for-duplicate-symbols-in-vmlinu.patch delete mode 100644 0032-create-diff-object-Fix-out-of-range-relocation-error.patch delete mode 100644 0033-create-diff-object-Fix-out-of-range-relocation-check.patch delete mode 100644 0034-add-openEuler-build-support.patch delete mode 100644 0035-livepatch-patch-hook-add-comments.patch delete mode 100644 kpatch-0.9.1.tar.gz create mode 100644 kpatch-0.9.5.tar.gz diff --git a/0001-kpatch-add-aarch64-support.patch b/0001-kpatch-add-aarch64-support.patch new file mode 100644 index 0000000..711a652 --- /dev/null +++ b/0001-kpatch-add-aarch64-support.patch @@ -0,0 +1,172 @@ +From 821e6cb24778bd063d1e8ad097d4bd4c81973091 Mon Sep 17 00:00:00 2001 +From: Zhipeng Xie +Date: Thu, 20 Dec 2018 04:55:38 +0000 +Subject: [PATCH 01/24] kpatch: add aarch64 support + +1.use R_AARCH64_ABS64 for aarch64 +2.add find_special_section_data_arm64 for arm64: +arm64 kernel have no paravirt_patch_site or orc_entry structure +in vmlinux, we don't need to check these two struct for arm64. + +Signed-off-by: Zhipeng Xie +--- + kpatch-build/Makefile | 4 +++ + kpatch-build/create-diff-object.c | 14 ++++++---- + kpatch-build/kpatch-build | 46 +++++++++++++++++++++++++++++++ + kpatch-build/kpatch-elf.c | 2 +- + 4 files changed, 60 insertions(+), 6 deletions(-) + +diff --git a/kpatch-build/Makefile b/kpatch-build/Makefile +index 50899b6..423c32a 100644 +--- a/kpatch-build/Makefile ++++ b/kpatch-build/Makefile +@@ -14,6 +14,10 @@ ifeq ($(ARCH),x86_64) + SOURCES += insn/insn.c insn/inat.c + INSN = insn/insn.o insn/inat.o + insn/%.o: CFLAGS := $(filter-out -Wconversion, $(CFLAGS)) ++else ifeq ($(ARCH),aarch64) ++SOURCES += insn/insn.c insn/inat.c ++INSN = insn/insn.o insn/inat.o ++insn/%.o: CFLAGS := $(filter-out -Wconversion, $(CFLAGS)) + else ifeq ($(ARCH),ppc64le) + SOURCES += gcc-plugins/ppc64le-plugin.c + PLUGIN = gcc-plugins/ppc64le-plugin.so +diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c +index 6a4848a..ca55180 100644 +--- a/kpatch-build/create-diff-object.c ++++ b/kpatch-build/create-diff-object.c +@@ -62,6 +62,8 @@ + + #ifdef __powerpc64__ + #define ABSOLUTE_RELA_TYPE R_PPC64_ADDR64 ++#elif __aarch64__ ++#define ABSOLUTE_RELA_TYPE R_AARCH64_ABS64 + #else + #define ABSOLUTE_RELA_TYPE R_X86_64_64 + #endif +@@ -1536,7 +1538,7 @@ static void kpatch_replace_sections_syms(struct kpatch_elf *kelf) + continue; + } + +-#ifdef __powerpc64__ ++#if defined(__powerpc64__) || defined(__aarch64__) + add_off = 0; + #else + if (rela->type == R_X86_64_PC32 || +@@ -2028,7 +2030,7 @@ static int printk_index_group_size(struct kpatch_elf *kelf, int offset) + return size; + } + +-#ifdef __x86_64__ ++#if defined(__x86_64__) || defined(__aarch64__) + static int parainstructions_group_size(struct kpatch_elf *kelf, int offset) + { + static int size = 0; +@@ -2177,7 +2179,7 @@ static struct special_section special_sections[] = { + .name = ".printk_index", + .group_size = printk_index_group_size, + }, +-#ifdef __x86_64__ ++#if defined(__x86_64__) || defined(__aarch64__) + { + .name = ".smp_locks", + .group_size = smp_locks_group_size, +@@ -2990,7 +2992,9 @@ static int function_ptr_rela(const struct rela *rela) + rela_toc->addend == (int)rela_toc->sym->sym.st_value && + (rela->type == R_X86_64_32S || + rela->type == R_PPC64_TOC16_HA || +- rela->type == R_PPC64_TOC16_LO_DS)); ++ rela->type == R_PPC64_TOC16_LO_DS || ++ rela->type == R_AARCH64_ADR_PREL_PG_HI21 || ++ rela->type == R_AARCH64_ADD_ABS_LO12_NC)); + } + + static bool need_dynrela(struct lookup_table *table, struct section *sec, const struct rela *rela) +@@ -3479,7 +3483,7 @@ static void kpatch_create_mcount_sections(struct kpatch_elf *kelf) + rela->type = R_X86_64_PC32; + } + +-#else /* __powerpc64__ */ ++#else /* __powerpc64__ || __aarch64__ */ + { + bool found = false; + +diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build +index eedf383..ad3a079 100755 +--- a/kpatch-build/kpatch-build ++++ b/kpatch-build/kpatch-build +@@ -375,12 +375,58 @@ find_special_section_data_ppc64le() { + return + } + ++find_special_section_data_aarch64() { ++ ++ [[ "$CONFIG_JUMP_LABEL" -eq 0 ]] && AWK_OPTIONS="$AWK_OPTIONS -vskip_j=1" ++ ++ # If $AWK_OPTIONS are blank gawk would treat "" as a blank script ++ # shellcheck disable=SC2086 ++ SPECIAL_VARS="$(readelf -wi "$VMLINUX" | ++ gawk --non-decimal-data $AWK_OPTIONS ' ++ BEGIN { a = b = e = j = 0 } ++ ++ # Set state if name matches ++ a == 0 && /DW_AT_name.* alt_instr[[:space:]]*$/ {a = 1; next} ++ b == 0 && /DW_AT_name.* bug_entry[[:space:]]*$/ {b = 1; next} ++ e == 0 && /DW_AT_name.* exception_table_entry[[:space:]]*$/ {e = 1; next} ++ j == 0 && /DW_AT_name.* jump_entry[[:space:]]*$/ {j = 1; next} ++ ++ # Reset state unless this abbrev describes the struct size ++ a == 1 && !/DW_AT_byte_size/ { a = 0; next } ++ b == 1 && !/DW_AT_byte_size/ { b = 0; next } ++ e == 1 && !/DW_AT_byte_size/ { e = 0; next } ++ j == 1 && !/DW_AT_byte_size/ { j = 0; next } ++ ++ # Now that we know the size, stop parsing for it ++ a == 1 {printf("export ALT_STRUCT_SIZE=%d\n", $4); a = 2} ++ b == 1 {printf("export BUG_STRUCT_SIZE=%d\n", $4); b = 2} ++ e == 1 {printf("export EX_STRUCT_SIZE=%d\n", $4); e = 2} ++ j == 1 {printf("export JUMP_STRUCT_SIZE=%d\n", $4); j = 2} ++ ++ # Bail out once we have everything ++ a == 2 && b == 2 && e == 2 && (j == 2 || skip_j) {exit}')" ++ ++ [[ -n "$SPECIAL_VARS" ]] && eval "$SPECIAL_VARS" ++ ++ [[ -z "$ALT_STRUCT_SIZE" ]] && die "can't find special struct alt_instr size" ++ [[ -z "$BUG_STRUCT_SIZE" ]] && die "can't find special struct bug_entry size" ++ [[ -z "$EX_STRUCT_SIZE" ]] && die "can't find special struct exception_table_entry size" ++ [[ -z "$JUMP_STRUCT_SIZE" && "$CONFIG_JUMP_LABEL" -ne 0 ]] && die "can't find special struct jump_entry size" ++ ++ return ++} ++ + find_special_section_data() { + if [[ "$ARCH" = "ppc64le" ]]; then + find_special_section_data_ppc64le + return + fi + ++ if [[ "$ARCH" = "aarch64" ]]; then ++ find_special_section_data_aarch64 ++ return ++ fi ++ + [[ "$CONFIG_PARAVIRT" -eq 0 ]] && AWK_OPTIONS="-vskip_p=1" + [[ "$CONFIG_UNWINDER_ORC" -eq 0 ]] && AWK_OPTIONS="$AWK_OPTIONS -vskip_o=1" + [[ "$CONFIG_JUMP_LABEL" -eq 0 ]] && AWK_OPTIONS="$AWK_OPTIONS -vskip_j=1" +diff --git a/kpatch-build/kpatch-elf.c b/kpatch-build/kpatch-elf.c +index 7e272e2..68d5c86 100644 +--- a/kpatch-build/kpatch-elf.c ++++ b/kpatch-build/kpatch-elf.c +@@ -325,7 +325,7 @@ static void kpatch_find_func_profiling_calls(struct kpatch_elf *kelf) + list_for_each_entry(sym, &kelf->symbols, list) { + if (sym->type != STT_FUNC || !sym->sec || !sym->sec->rela) + continue; +-#ifdef __powerpc64__ ++#if defined(__powerpc64__) || defined(__aarch64__) + list_for_each_entry(rela, &sym->sec->rela->relas, list) { + if (!strcmp(rela->sym->name, "_mcount")) { + sym->has_func_profiling = 1; +-- +2.23.0 + diff --git a/0001-support-compile-kpatch-on-aarch64.patch b/0001-support-compile-kpatch-on-aarch64.patch deleted file mode 100644 index 2df9a32..0000000 --- a/0001-support-compile-kpatch-on-aarch64.patch +++ /dev/null @@ -1,112 +0,0 @@ -From 0de9a5da0cc278973caabfb9929dc58514c73639 Mon Sep 17 00:00:00 2001 -From: Zhipeng Xie -Date: Thu, 20 Dec 2018 04:55:38 +0000 -Subject: [PATCH 01/23] support compile kpatch on aarch64 - -delete __x86_64__ to support compile kpatch on aarch64. - -Signed-off-by: Zhipeng Xie ---- - kpatch-build/Makefile | 4 ++++ - kpatch-build/create-diff-object.c | 14 +------------- - 2 files changed, 5 insertions(+), 13 deletions(-) - -diff --git a/kpatch-build/Makefile b/kpatch-build/Makefile -index 7505e07..8efae94 100644 ---- a/kpatch-build/Makefile -+++ b/kpatch-build/Makefile -@@ -14,6 +14,10 @@ ifeq ($(ARCH),x86_64) - SOURCES += insn/insn.c insn/inat.c - INSN = insn/insn.o insn/inat.o - insn/%.o: CFLAGS := $(filter-out -Wconversion, $(CFLAGS)) -+else ifeq ($(ARCH),aarch64) -+SOURCES += insn/insn.c insn/inat.c -+INSN = insn/insn.o insn/inat.o -+insn/%.o: CFLAGS := $(filter-out -Wconversion, $(CFLAGS)) - else ifeq ($(ARCH),ppc64le) - SOURCES += gcc-plugins/ppc64le-plugin.c - PLUGIN = gcc-plugins/ppc64le-plugin.so -diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index aedd07d..2707cdb 100644 ---- a/kpatch-build/create-diff-object.c -+++ b/kpatch-build/create-diff-object.c -@@ -475,7 +475,6 @@ out: - log_debug("section %s has changed\n", sec->name); - } - --#ifdef __x86_64__ - /* - * Determine if a section has changed only due to a WARN* or might_sleep - * macro call's embedding of the line number into an instruction operand. -@@ -586,7 +585,7 @@ static int kpatch_line_macro_change_only(struct section *sec) - - return 1; - } --#elif __powerpc64__ -+#if __powerpc64__ - #define PPC_INSTR_LEN 4 - #define PPC_RA_OFFSET 16 - -@@ -652,11 +651,6 @@ static int kpatch_line_macro_change_only(struct section *sec) - - return 1; - } --#else --static int kpatch_line_macro_change_only(struct section *sec) --{ -- return 0; --} - #endif - - static void kpatch_compare_sections(struct list_head *seclist) -@@ -1215,7 +1209,6 @@ static void kpatch_compare_correlated_elements(struct kpatch_elf *kelf) - kpatch_compare_symbols(&kelf->symbols); - } - --#ifdef __x86_64__ - static void rela_insn(const struct section *sec, const struct rela *rela, - struct insn *insn) - { -@@ -1239,7 +1232,6 @@ static void rela_insn(const struct section *sec, const struct rela *rela, - return; - } - } --#endif - - static bool is_callback_section(struct section *sec) { - -@@ -1785,7 +1777,6 @@ static int jump_table_group_size(struct kpatch_elf *kelf, int offset) - return size; - } - --#ifdef __x86_64__ - static int parainstructions_group_size(struct kpatch_elf *kelf, int offset) - { - static int size = 0; -@@ -1820,7 +1811,6 @@ static int smp_locks_group_size(struct kpatch_elf *kelf, int offset) - { - return 4; - } --#endif - #ifdef __powerpc64__ - static int fixup_entry_group_size(struct kpatch_elf *kelf, int offset) - { -@@ -1915,7 +1905,6 @@ static struct special_section special_sections[] = { - .name = "__jump_table", - .group_size = jump_table_group_size, - }, --#ifdef __x86_64__ - { - .name = ".smp_locks", - .group_size = smp_locks_group_size, -@@ -1928,7 +1917,6 @@ static struct special_section special_sections[] = { - .name = ".altinstructions", - .group_size = altinstructions_group_size, - }, --#endif - #ifdef __powerpc64__ - { - .name = "__ftr_fixup", --- -2.18.1 - diff --git a/0002-create-diff-object-fix-symbol-changed-sections-error.patch b/0002-create-diff-object-fix-symbol-changed-sections-error.patch new file mode 100644 index 0000000..eefb711 --- /dev/null +++ b/0002-create-diff-object-fix-symbol-changed-sections-error.patch @@ -0,0 +1,31 @@ +From 72d28d667f8f6baa88882abfc1590cce3e9e2b1f Mon Sep 17 00:00:00 2001 +From: Zhipeng Xie +Date: Sun, 14 Nov 2021 15:57:55 +0800 +Subject: [PATCH 02/24] create-diff-object: fix symbol changed sections error + on aarch64 + +$d is reserved symbols in aarch64, we met following error when +building patch on aarch64. just ignore it. +ERROR: cmdline.o: symbol changed sections: $d + +Signed-off-by: Zhipeng Xie +--- + kpatch-build/create-diff-object.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c +index ca55180..6c28280 100644 +--- a/kpatch-build/create-diff-object.c ++++ b/kpatch-build/create-diff-object.c +@@ -865,6 +865,8 @@ static void kpatch_compare_correlated_symbol(struct symbol *sym) + if ((sym2->sec->twin && sym2->sec->twin->ignore) || + kpatch_subsection_changed(sym1->sec, sym2->sec)) + sym->status = CHANGED; ++ else if (sym1->name[0] == '$') /* reserved symbols in aarch64 */ ++ log_debug("maping symbols: %s", sym1->name); /* do nothing just ignogre */ + else + DIFF_FATAL("symbol changed sections: %s", sym1->name); + } +-- +2.23.0 + diff --git a/0002-kpatch-build-support-build-patch-for-aarch64.patch b/0002-kpatch-build-support-build-patch-for-aarch64.patch deleted file mode 100644 index 9e9d0ed..0000000 --- a/0002-kpatch-build-support-build-patch-for-aarch64.patch +++ /dev/null @@ -1,744 +0,0 @@ -From d3665b019100715e41b75493d31d51d602ca056a Mon Sep 17 00:00:00 2001 -From: Zhipeng Xie -Date: Wed, 26 Feb 2020 07:09:50 -0500 -Subject: [PATCH 02/23] kpatch-build: support build patch for aarch64 - -use R_AARCH64_ABS64 for aarch64 - -exclude line only change for arm64 by compare mov instruction -except immediate part. - -add find_special_section_data_arm64 for arm64: -arm64 kernel have no paravirt_patch_site or orc_entry structure -in vmlinux, we don't need to check these two struct for arm64. - -support cross compile for aarch64 - -Signed-off-by: Zhipeng Xie ---- - kpatch-build/create-diff-object.c | 276 ++++++++++++++++++++++------ - kpatch-build/create-kpatch-module.c | 25 ++- - kpatch-build/kpatch-build | 116 +++++++++++- - kpatch-build/kpatch-gcc | 4 +- - 4 files changed, 352 insertions(+), 69 deletions(-) - -diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index 2707cdb..b161fee 100644 ---- a/kpatch-build/create-diff-object.c -+++ b/kpatch-build/create-diff-object.c -@@ -76,6 +76,32 @@ enum subsection { - - enum loglevel loglevel = NORMAL; - -+#ifndef EM_X86_64 -+#define EM_X86_64 62 -+#endif -+ -+#ifndef EM_AARCH64 -+#define EM_AARCH64 183 -+#endif -+ -+#ifndef R_AARCH64_ABS64 -+#define R_AARCH64_NONE 0 -+#define R_AARCH64_ABS64 257 -+#define R_AARCH64_CALL26 283 -+#endif -+ -+static unsigned int arch; -+static unsigned int absolute_rela_type; -+ -+static unsigned int arch_of_elf(Elf *elf) -+{ -+ GElf_Ehdr eh; -+ -+ if (!gelf_getehdr(elf, &eh)) -+ ERROR("gelf_getehdr"); -+ return eh.e_machine; -+} -+ - /******************* - * Data structures - * ****************/ -@@ -652,6 +678,67 @@ static int kpatch_line_macro_change_only(struct section *sec) - return 1; - } - #endif -+#define ARM64_INSTR_LEN 4 -+static int arm64_kpatch_line_macro_change_only(struct section *sec) -+{ -+ unsigned long start1, start2, size, offset; -+ struct rela *rela; -+ int lineonly = 0, found; -+ unsigned int mov_imm_mask = ((1<<16) - 1)<<5; -+ -+ if (sec->status != CHANGED || -+ is_rela_section(sec) || -+ !is_text_section(sec) || -+ sec->sh.sh_size != sec->twin->sh.sh_size || -+ !sec->rela || -+ sec->rela->status != SAME) -+ return 0; -+ -+ start1 = (unsigned long)sec->twin->data->d_buf; -+ start2 = (unsigned long)sec->data->d_buf; -+ size = sec->sh.sh_size; -+ for (offset = 0; offset < size; offset += ARM64_INSTR_LEN) { -+ if (!memcmp((void *)start1 + offset, (void *)start2 + offset, -+ ARM64_INSTR_LEN)) -+ continue; -+ -+ /* verify it's a mov immediate to w1 */ -+ if ((*(int *)(start1 + offset) & ~mov_imm_mask) != -+ (*(int *)(start2 + offset) & ~mov_imm_mask)) -+ return 0; -+ -+ found = 0; -+ list_for_each_entry(rela, &sec->rela->relas, list) { -+ if (rela->offset < offset + ARM64_INSTR_LEN) -+ continue; -+ if (rela->string) -+ continue; -+ if (!strncmp(rela->sym->name, "__warned.", 9)) -+ continue; -+ if (!strncmp(rela->sym->name, "warn_slowpath_", 14) || -+ (!strcmp(rela->sym->name, "__warn_printk")) || -+ (!strcmp(rela->sym->name, "__might_sleep")) || -+ (!strcmp(rela->sym->name, "___might_sleep")) || -+ (!strcmp(rela->sym->name, "__might_fault")) || -+ (!strcmp(rela->sym->name, "printk")) || -+ (!strcmp(rela->sym->name, "lockdep_rcu_suspicious"))) { -+ found = 1; -+ break; -+ } -+ return 0; -+ } -+ if (!found) -+ return 0; -+ -+ lineonly = 1; -+ } -+ -+ if (!lineonly) -+ ERROR("no instruction changes detected for changed section %s", -+ sec->name); -+ -+ return 1; -+} - - static void kpatch_compare_sections(struct list_head *seclist) - { -@@ -667,7 +754,16 @@ static void kpatch_compare_sections(struct list_head *seclist) - - /* exclude WARN-only, might_sleep changes */ - list_for_each_entry(sec, seclist, list) { -- if (kpatch_line_macro_change_only(sec)) { -+ int line_only; -+ -+ if (arch == EM_X86_64) -+ line_only = kpatch_line_macro_change_only(sec); -+ else if (arch == EM_AARCH64) -+ line_only = arm64_kpatch_line_macro_change_only(sec); -+ else -+ line_only = 0; -+ -+ if (line_only) { - log_debug("reverting macro / line number section %s status to SAME\n", - sec->name); - sec->status = SAME; -@@ -727,6 +823,8 @@ static void kpatch_compare_correlated_symbol(struct symbol *sym) - if ((sym2->sec->twin && sym2->sec->twin->ignore) || - kpatch_subsection_changed(sym1->sec, sym2->sec)) - sym->status = CHANGED; -+ else if (sym1->name[0] == '$') /* reserved symbols in aarch64 */ -+ log_debug("maping symbols: %s", sym1->name); /* do nothing just ignogre */ - else - DIFF_FATAL("symbol changed sections: %s", sym1->name); - } -@@ -1302,22 +1400,22 @@ static void kpatch_replace_sections_syms(struct kpatch_elf *kelf) - continue; - } - --#ifdef __powerpc64__ - add_off = 0; --#else -- if (rela->type == R_X86_64_PC32 || -- rela->type == R_X86_64_PLT32) { -- struct insn insn; -- rela_insn(sec, rela, &insn); -- add_off = (unsigned int)((long)insn.next_byte - -- (long)sec->base->data->d_buf - -- rela->offset); -- } else if (rela->type == R_X86_64_64 || -- rela->type == R_X86_64_32S) -- add_off = 0; -- else -- continue; --#endif -+ if (arch == EM_X86_64) { -+ if (rela->type == R_X86_64_PC32 || -+ rela->type == R_X86_64_PLT32) { -+ struct insn insn; -+ -+ rela_insn(sec, rela, &insn); -+ add_off = (unsigned int)((long)insn.next_byte - -+ (long)sec->base->data->d_buf - -+ rela->offset); -+ } else if (rela->type == R_X86_64_64 || -+ rela->type == R_X86_64_32S) -+ add_off = 0; -+ else -+ continue; -+ } - - /* - * Attempt to replace references to unbundled sections -@@ -2415,7 +2513,7 @@ static void kpatch_create_kpatch_arch_section(struct kpatch_elf *kelf, char *obj - /* entries[index].sec */ - ALLOC_LINK(rela, &karch_sec->rela->relas); - rela->sym = sec->secsym; -- rela->type = ABSOLUTE_RELA_TYPE; -+ rela->type = absolute_rela_type; - rela->addend = 0; - rela->offset = (unsigned int)(index * sizeof(struct kpatch_arch) + \ - offsetof(struct kpatch_arch, sec)); -@@ -2423,7 +2521,7 @@ static void kpatch_create_kpatch_arch_section(struct kpatch_elf *kelf, char *obj - /* entries[index].objname */ - ALLOC_LINK(rela, &karch_sec->rela->relas); - rela->sym = strsym; -- rela->type = ABSOLUTE_RELA_TYPE; -+ rela->type = absolute_rela_type; - rela->addend = offset_of_string(&kelf->strings, objname); - rela->offset = (unsigned int)(index * sizeof(struct kpatch_arch) + \ - offsetof(struct kpatch_arch, objname)); -@@ -2622,7 +2720,7 @@ static void kpatch_create_patches_sections(struct kpatch_elf *kelf, - */ - ALLOC_LINK(rela, &relasec->relas); - rela->sym = sym; -- rela->type = ABSOLUTE_RELA_TYPE; -+ rela->type = absolute_rela_type; - rela->addend = 0; - rela->offset = (unsigned int)(index * sizeof(*funcs)); - -@@ -2632,7 +2730,7 @@ static void kpatch_create_patches_sections(struct kpatch_elf *kelf, - */ - ALLOC_LINK(rela, &relasec->relas); - rela->sym = strsym; -- rela->type = ABSOLUTE_RELA_TYPE; -+ rela->type = absolute_rela_type; - rela->addend = offset_of_string(&kelf->strings, sym->name); - rela->offset = (unsigned int)(index * sizeof(*funcs) + - offsetof(struct kpatch_patch_func, name)); -@@ -2643,7 +2741,7 @@ static void kpatch_create_patches_sections(struct kpatch_elf *kelf, - */ - ALLOC_LINK(rela, &relasec->relas); - rela->sym = strsym; -- rela->type = ABSOLUTE_RELA_TYPE; -+ rela->type = absolute_rela_type; - rela->addend = objname_offset; - rela->offset = (unsigned int)(index * sizeof(*funcs) + - offsetof(struct kpatch_patch_func,objname)); -@@ -2701,7 +2799,10 @@ static int function_ptr_rela(const struct rela *rela) - rela_toc->addend == (int)rela_toc->sym->sym.st_value && - (rela->type == R_X86_64_32S || - rela->type == R_PPC64_TOC16_HA || -- rela->type == R_PPC64_TOC16_LO_DS)); -+ rela->type == R_PPC64_TOC16_LO_DS || -+ rela->type == R_AARCH64_ADR_PREL_PG_HI21 || -+ rela->type == R_AARCH64_ADD_ABS_LO12_NC)); -+ - } - - static int may_need_dynrela(const struct rela *rela) -@@ -2955,7 +3056,7 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, - /* add rela to fill in ksyms[index].name field */ - ALLOC_LINK(rela2, &ksym_sec->rela->relas); - rela2->sym = strsym; -- rela2->type = ABSOLUTE_RELA_TYPE; -+ rela2->type = absolute_rela_type; - rela2->addend = offset_of_string(&kelf->strings, rela->sym->name); - rela2->offset = (unsigned int)(index * sizeof(*ksyms) + \ - offsetof(struct kpatch_symbol, name)); -@@ -2963,7 +3064,7 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, - /* add rela to fill in ksyms[index].objname field */ - ALLOC_LINK(rela2, &ksym_sec->rela->relas); - rela2->sym = strsym; -- rela2->type = ABSOLUTE_RELA_TYPE; -+ rela2->type = absolute_rela_type; - rela2->addend = offset_of_string(&kelf->strings, sym_objname); - rela2->offset = (unsigned int)(index * sizeof(*ksyms) + \ - offsetof(struct kpatch_symbol, objname)); -@@ -2984,7 +3085,7 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, - ERROR("can't create dynrela for section %s (symbol %s): no bundled or section symbol", - sec->name, rela->sym->name); - -- rela2->type = ABSOLUTE_RELA_TYPE; -+ rela2->type = absolute_rela_type; - rela2->addend = rela->offset; - rela2->offset = (unsigned int)(index * sizeof(*krelas) + \ - offsetof(struct kpatch_relocation, dest)); -@@ -2992,7 +3093,7 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, - /* add rela to fill in krelas[index].objname field */ - ALLOC_LINK(rela2, &krela_sec->rela->relas); - rela2->sym = strsym; -- rela2->type = ABSOLUTE_RELA_TYPE; -+ rela2->type = absolute_rela_type; - rela2->addend = offset_of_string(&kelf->strings, objname); - rela2->offset = (unsigned int)(index * sizeof(*krelas) + \ - offsetof(struct kpatch_relocation, objname)); -@@ -3000,7 +3101,7 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, - /* add rela to fill in krelas[index].ksym field */ - ALLOC_LINK(rela2, &krela_sec->rela->relas); - rela2->sym = ksym_sec_sym; -- rela2->type = ABSOLUTE_RELA_TYPE; -+ rela2->type = absolute_rela_type; - rela2->addend = (unsigned int)(index * sizeof(*ksyms)); - rela2->offset = (unsigned int)(index * sizeof(*krelas) + \ - offsetof(struct kpatch_relocation, ksym)); -@@ -3063,7 +3164,7 @@ static void kpatch_create_callbacks_objname_rela(struct kpatch_elf *kelf, char * - if (!strcmp(callbackp->name, sec->name)) { - ALLOC_LINK(rela, &sec->relas); - rela->sym = strsym; -- rela->type = ABSOLUTE_RELA_TYPE; -+ rela->type = absolute_rela_type; - rela->addend = objname_offset; - rela->offset = callbackp->offset; - break; -@@ -3116,40 +3215,79 @@ static void kpatch_create_mcount_sections(struct kpatch_elf *kelf) - /* add rela in .rela__mcount_loc to fill in function pointer */ - ALLOC_LINK(rela, &relasec->relas); - rela->sym = sym; -- rela->type = R_X86_64_64; -- rela->addend = 0; -- rela->offset = (unsigned int)(index * sizeof(void*)); -+ if (arch == EM_X86_64) { -+ rela->type = R_X86_64_64; -+ rela->addend = 0; -+ rela->offset = (unsigned int)(index * sizeof(void *)); - -- /* -- * Modify the first instruction of the function to "callq -- * __fentry__" so that ftrace will be happy. -- */ -- newdata = malloc(sym->sec->data->d_size); -- if (!newdata) -- ERROR("malloc"); -+ /* -+ * Modify the first instruction of the function to "callq -+ * __fentry__" so that ftrace will be happy. -+ */ -+ newdata = malloc(sym->sec->data->d_size); -+ if (!newdata) -+ ERROR("malloc"); - -- memcpy(newdata, sym->sec->data->d_buf, sym->sec->data->d_size); -- sym->sec->data->d_buf = newdata; -- insn = newdata; -+ memcpy(newdata, sym->sec->data->d_buf, sym->sec->data->d_size); -+ sym->sec->data->d_buf = newdata; -+ insn = newdata; - -- rela = list_first_entry(&sym->sec->rela->relas, struct rela, -+ rela = list_first_entry(&sym->sec->rela->relas, struct rela, - list); - -- /* -- * R_X86_64_NONE is only generated by older versions of kernel/gcc -- * which use the mcount script. -- */ -- if (rela->type == R_X86_64_NONE) { -- if (insn[0] != 0xf) -+ /* -+ * R_X86_64_NONE is only generated by older versions of kernel/gcc -+ * which use the mcount script. -+ */ -+ if (rela->type == R_X86_64_NONE) { -+ if (insn[0] != 0xf) -+ ERROR("%s: unexpected instruction at the start of the function", -+ sym->name); -+ insn[0] = 0xe8; -+ insn[1] = 0; -+ insn[2] = 0; -+ insn[3] = 0; -+ insn[4] = 0; -+ -+ rela->type = R_X86_64_PC32; -+ } -+ } else if (arch == EM_AARCH64) { -+ unsigned int *insnp; -+ -+ rela->type = R_AARCH64_ABS64; -+ /* bl <__fentry__> is the second insn */ -+ rela->addend = 4; -+ rela->offset = (unsigned int)(index * sizeof(void *)); -+ -+ newdata = malloc(sym->sec->data->d_size); -+ if (!newdata) -+ ERROR("malloc"); -+ -+ memcpy(newdata, sym->sec->data->d_buf, sym->sec->data->d_size); -+ sym->sec->data->d_buf = newdata; -+ insnp = newdata; -+ -+ /* -+ * mov x9, x30 -+ * nop //function in .text., so it be replaced with nop by -+ * recordmcount -+ * -+ * mov x30, x9 -+ */ -+ if (insnp[0] != 0xaa1e03e9 || insnp[1] != 0xd503201f -+ || insnp[2] != 0xaa0903fe) - ERROR("%s: unexpected instruction at the start of the function", -- sym->name); -- insn[0] = 0xe8; -- insn[1] = 0; -- insn[2] = 0; -- insn[3] = 0; -- insn[4] = 0; -- -- rela->type = R_X86_64_PC32; -+ sym->name); -+ -+ /* change the nop to bl __fentry__ */ -+ insnp[1] = 0x94000000; -+ rela = list_first_entry(&sym->sec->rela->relas, struct rela, -+ list); -+ rela->type = R_AARCH64_CALL26; -+ rela->offset = 4; -+ -+ } else { -+ ERROR("unsupport arch %d\n", arch); - } - - index++; -@@ -3349,6 +3489,8 @@ int main(int argc, char *argv[]) - char *hint = NULL, *orig_obj, *patched_obj, *parent_name; - char *parent_symtab, *mod_symvers, *patch_name, *output_obj; - struct sym_compare_type *base_locals, *sym_comp; -+ char *no_profiling_calls = NULL; -+ char *gcc_add_option = NULL, *mlongcall = NULL; - - arguments.debug = 0; - argp_parse (&argp, argc, argv, 0, NULL, &arguments); -@@ -3369,6 +3511,13 @@ int main(int argc, char *argv[]) - - kelf_base = kpatch_elf_open(orig_obj); - kelf_patched = kpatch_elf_open(patched_obj); -+ arch = arch_of_elf(kelf_base->elf); -+ if (arch == EM_X86_64) -+ absolute_rela_type = R_X86_64_64; -+ else if (arch == EM_AARCH64) -+ absolute_rela_type = R_AARCH64_ABS64; -+ else -+ ERROR("only arch x86_64 and arm64 be supported\n"); - - kpatch_compare_elf_headers(kelf_base->elf, kelf_patched->elf); - kpatch_check_program_headers(kelf_base->elf); -@@ -3407,7 +3556,12 @@ int main(int argc, char *argv[]) - */ - kpatch_mark_ignored_sections(kelf_patched); - kpatch_compare_correlated_elements(kelf_patched); -- kpatch_check_func_profiling_calls(kelf_patched); -+ no_profiling_calls = getenv("NO_PROFILING_CALLS"); -+ if (!no_profiling_calls) -+ kpatch_check_func_profiling_calls(kelf_patched); -+ else -+ log_debug("NO_PROFILING_CALLS set\n"); -+ - kpatch_elf_teardown(kelf_base); - kpatch_elf_free(kelf_base); - -@@ -3467,7 +3621,13 @@ int main(int argc, char *argv[]) - kpatch_create_callbacks_objname_rela(kelf_out, parent_name); - kpatch_build_strings_section_data(kelf_out); - -- kpatch_create_mcount_sections(kelf_out); -+ gcc_add_option = getenv("GCC_ADD_OPTION"); -+ if (gcc_add_option) -+ mlongcall = strstr(gcc_add_option, "-mlong-calls"); -+ if (arch == EM_AARCH64 && mlongcall) -+ printf("-mlong-calls found, no need to create mcount section\n"); -+ else -+ kpatch_create_mcount_sections(kelf_out); - - /* - * At this point, the set of output sections and symbols is -diff --git a/kpatch-build/create-kpatch-module.c b/kpatch-build/create-kpatch-module.c -index 3d197a7..e8a235d 100644 ---- a/kpatch-build/create-kpatch-module.c -+++ b/kpatch-build/create-kpatch-module.c -@@ -31,6 +31,18 @@ - char *childobj; - enum loglevel loglevel = NORMAL; - -+static unsigned int arch; -+static unsigned int absolute_rela_type; -+ -+static unsigned int arch_of_elf(Elf *elf) -+{ -+ GElf_Ehdr eh; -+ -+ if (!gelf_getehdr(elf, &eh)) -+ ERROR("gelf_getehdr"); -+ return eh.e_machine; -+} -+ - /* - * Create .kpatch.dynrelas from .kpatch.relocations and .kpatch.symbols sections - * -@@ -102,14 +114,14 @@ static void create_dynamic_rela_sections(struct kpatch_elf *kelf, struct section - /* dest */ - ALLOC_LINK(rela, &dynsec->rela->relas); - rela->sym = sym; -- rela->type = R_X86_64_64; -+ rela->type = absolute_rela_type; - rela->addend = dest_offset; - rela->offset = (unsigned int)(index * sizeof(*dynrelas)); - - /* name */ - ALLOC_LINK(rela, &dynsec->rela->relas); - rela->sym = strsec->secsym; -- rela->type = R_X86_64_64; -+ rela->type = absolute_rela_type; - rela->addend = name_offset; - rela->offset = (unsigned int)(index * sizeof(*dynrelas) + \ - offsetof(struct kpatch_patch_dynrela, name)); -@@ -117,7 +129,7 @@ static void create_dynamic_rela_sections(struct kpatch_elf *kelf, struct section - /* objname */ - ALLOC_LINK(rela, &dynsec->rela->relas); - rela->sym = strsec->secsym; -- rela->type = R_X86_64_64; -+ rela->type = absolute_rela_type; - rela->addend = objname_offset; - rela->offset = (unsigned int)(index * sizeof(*dynrelas) + \ - offsetof(struct kpatch_patch_dynrela, objname)); -@@ -200,6 +212,13 @@ int main(int argc, char *argv[]) - childobj = basename(arguments.args[0]); - - kelf = kpatch_elf_open(arguments.args[0]); -+ arch = arch_of_elf(kelf->elf); -+ if (arch == EM_X86_64) -+ absolute_rela_type = R_X86_64_64; -+ else if (arch == EM_AARCH64) -+ absolute_rela_type = R_AARCH64_ABS64; -+ else -+ ERROR("only arch x86_64 and arm64 be supported\n"); - - /* - * Sanity checks: -diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build -index ae0733c..17a5e11 100755 ---- a/kpatch-build/kpatch-build -+++ b/kpatch-build/kpatch-build -@@ -299,12 +299,72 @@ find_special_section_data_ppc64le() { - return - } - -+find_special_section_data_arm64() { -+ -+ [[ "$CONFIG_JUMP_LABEL" -eq 0 ]] && AWK_OPTIONS="$AWK_OPTIONS -vskip_j=1" -+ -+ # If $AWK_OPTIONS are blank gawk would treat "" as a blank script -+ # shellcheck disable=SC2086 -+ SPECIAL_VARS="$(readelf -wi "$VMLINUX" | -+ gawk --non-decimal-data $AWK_OPTIONS ' -+ BEGIN { a = b = e = j = c = f = s = i = r = t = h = 0 } -+ -+ # Set state if name matches -+ a == 0 && /DW_AT_name.* alt_instr[[:space:]]*$/ {a = 1; next} -+ b == 0 && /DW_AT_name.* bug_entry[[:space:]]*$/ {b = 1; next} -+ e == 0 && /DW_AT_name.* exception_table_entry[[:space:]]*$/ {e = 1; next} -+ j == 0 && /DW_AT_name.* jump_entry[[:space:]]*$/ {j = 1; next} -+ c == 0 && /DW_AT_name.* klp_func[[:space:]]*$/ {c = 1; next} -+ t == 0 && /DW_AT_name.* klp_object[[:space:]]*$/ {t = 1; next} -+ -+ # Reset state unless this abbrev describes the struct size -+ a == 1 && !/DW_AT_byte_size/ { a = 0; next } -+ b == 1 && !/DW_AT_byte_size/ { b = 0; next } -+ e == 1 && !/DW_AT_byte_size/ { e = 0; next } -+ j == 1 && !/DW_AT_byte_size/ { j = 0; next } -+ c == 1 && /DW_TAG_structure_type/ { c = 3; next } -+ t == 1 && /DW_TAG_structure_type/ { t = 3; next } -+ c == 1 && /DW_AT_name.* force[[:space:]]*$/ {f = 2; next} -+ c == 1 && /DW_AT_name.* old_sympos[[:space:]]*$/ {s = 2; next} -+ i == 1 && /DW_AT_name.* immediate[[:space:]]*$/ {i = 2; next} -+ t == 1 && /DW_AT_name.* relocs[[:space:]]*$/ {r = 2; next} -+ t == 1 && /DW_AT_name.* hooks_load[[:space:]]*$/ {h = 2; next} -+ -+ # Now that we know the size, stop parsing for it -+ a == 1 {printf("export ALT_STRUCT_SIZE=%d\n", $4); a = 2} -+ b == 1 {printf("export BUG_STRUCT_SIZE=%d\n", $4); b = 2} -+ e == 1 {printf("export EX_STRUCT_SIZE=%d\n", $4); e = 2} -+ j == 1 {printf("export JUMP_STRUCT_SIZE=%d\n", $4); j = 2} -+ f == 2 {printf("export KLP_SUPPORT_FORCE=y\n"); f = 3} -+ s == 2 {printf("export KLP_SUPPORT_OLD_SYMPOS=y\n"); s = 3} -+ i == 2 {printf("export KLP_SUPPORT_IMMEDIATE=y\n"); i = 3} -+ r == 2 {printf("export KLP_SUPPORT_RELOCS=y\n"); r = 3} -+ h == 2 {printf("export KLP_SUPPORT_LOADHOOKS=y\n"); h = 3} -+ -+ # Bail out once we have everything -+ a == 2 && b == 2 && e == 2 && (j == 2 || skip_j) && c == 3 && t == 3 {exit}')" -+ -+ [[ -n "$SPECIAL_VARS" ]] && eval "$SPECIAL_VARS" -+ -+ [[ -z "$ALT_STRUCT_SIZE" ]] && die "can't find special struct alt_instr size" -+ [[ -z "$BUG_STRUCT_SIZE" ]] && die "can't find special struct bug_entry size" -+ [[ -z "$EX_STRUCT_SIZE" ]] && die "can't find special struct exception_table_entry size" -+ [[ -z "$JUMP_STRUCT_SIZE" && "$CONFIG_JUMP_LABEL" -ne 0 ]] && die "can't find special struct jump_entry size" -+ -+ return -+} -+ - find_special_section_data() { - if [[ "$ARCH" = "ppc64le" ]]; then - find_special_section_data_ppc64le - return - fi - -+ if [[ "$ARCH" = "arm64" ]]; then -+ find_special_section_data_arm64 -+ return -+ fi -+ - [[ "$CONFIG_PARAVIRT" -eq 0 ]] && AWK_OPTIONS="-vskip_p=1" - [[ "$CONFIG_UNWINDER_ORC" -eq 0 ]] && AWK_OPTIONS="$AWK_OPTIONS -vskip_o=1" - [[ "$CONFIG_JUMP_LABEL" -eq 0 ]] && AWK_OPTIONS="$AWK_OPTIONS -vskip_j=1" -@@ -428,6 +488,29 @@ find_kobj() { - done - } - -+arch_export() { -+ E_MACHINE=$(od -An -j18 -N2 -d $VMLINUX) -+ if [[ $E_MACHINE -eq 62 ]]; then -+ export ARCH=x86_64 -+ export ARCH_COMPILE= -+ export ENDIAN=little -+ export GCC_ADD_OPTION= -+ elif [[ $E_MACHINE -eq 183 ]]; then -+ export ARCH=arm64 -+ if [ $(arch) != "aarch64" ]; then -+ export ARCH_COMPILE=aarch64-linux-gnu- -+ fi -+ export ENDIAN=little -+ if grep "\-mlong-calls" /lib/modules/$ARCHVERSION/build//Makefile > /dev/null; then -+ export GCC_ADD_OPTION="-fno-section-anchors -mlong-calls" -+ else -+ export GCC_ADD_OPTION="-fno-section-anchors" -+ fi -+ else -+ die "only support arm64 or x86_64 architecture" -+ fi -+} -+ - # Only allow alphanumerics and '_' and '-' in the module name. Everything else - # is replaced with '-'. Also truncate to 48 chars so the full name fits in the - # kernel's 56-byte module name array. -@@ -786,13 +869,13 @@ apply_patches - remove_patches - - cp -LR "$DATADIR/patch" "$TEMPDIR" || die -- -+arch_export - if [[ "$ARCH" = "ppc64le" ]]; then - ARCH_KCFLAGS="-mcmodel=large -fplugin=$PLUGINDIR/ppc64le-plugin.so" - fi - - export KCFLAGS="-I$DATADIR/patch -ffunction-sections -fdata-sections \ -- $ARCH_KCFLAGS $DEBUG_KCFLAGS" -+ $ARCH_KCFLAGS $DEBUG_KCFLAGS ${GCC_ADD_OPTION}" - - echo "Reading special section data" - find_special_section_data -@@ -806,7 +889,7 @@ echo "Building original source" - unset KPATCH_GCC_TEMPDIR - # $TARGETS used as list, no quotes. - # shellcheck disable=SC2086 --CROSS_COMPILE="$TOOLSDIR/kpatch-gcc " make "-j$CPUS" $TARGETS 2>&1 | logger || die -+CROSS_COMPILE="$TOOLSDIR/kpatch-gcc $ARCH_COMPILE" make "-j$CPUS" $TARGETS 2>&1 | logger || die - - echo "Building patched source" - apply_patches -@@ -817,7 +900,7 @@ KPATCH_GCC_SRCDIR="$SRCDIR" - export KPATCH_GCC_SRCDIR - # $TARGETS used as list, no quotes. - # shellcheck disable=SC2086 --CROSS_COMPILE="$TOOLSDIR/kpatch-gcc " \ -+CROSS_COMPILE="$TOOLSDIR/kpatch-gcc $ARCH_COMPILE" \ - KBUILD_MODPOST_WARN=1 \ - make "-j$CPUS" $TARGETS 2>&1 | logger || die - -@@ -950,6 +1033,26 @@ if "$KPATCH_MODULE"; then - export KCPPFLAGS="-D__KPATCH_MODULE__" - fi - -+if [[ -n "$KLP_SUPPORT_FORCE" ]];then -+ export KCPPFLAGS="-D__KLP_SUPPORT_FORCE__ $KCPPFLAGS" -+fi -+ -+if [[ -n "$KLP_SUPPORT_OLD_SYMPOS" ]];then -+ export KCPPFLAGS="-DHAVE_SYMPOS $KCPPFLAGS" -+fi -+ -+if [[ -n "$KLP_SUPPORT_IMMEDIATE" ]];then -+ export KCPPFLAGS="-DHAVE_IMMEDIATE $KCPPFLAGS" -+fi -+ -+if [[ -n "$KLP_SUPPORT_RELOCS" ]];then -+ export KCPPFLAGS="-DHAVE_ELF_RELOCS $KCPPFLAGS" -+fi -+ -+if [[ -n "$KLP_SUPPORT_LOADHOOKS" ]];then -+ export KCPPFLAGS="-DHAVE_LOADHOOKS $KCPPFLAGS" -+fi -+ - echo "Building patch module: $MODNAME.ko" - - if [[ -z "$USERSRCDIR" ]] && [[ "$DISTRO" = ubuntu ]]; then -@@ -962,12 +1065,12 @@ fi - cd "$TEMPDIR/output" || die - # $KPATCH_LDFLAGS and result of find used as list, no quotes. - # shellcheck disable=SC2086,SC2046 --ld -r $KPATCH_LDFLAGS -o ../patch/tmp_output.o $(find . -name "*.o") 2>&1 | logger || die -+${ARCH_COMPILE}ld -r $KPATCH_LDFLAGS -o ../patch/tmp_output.o $(find . -name "*.o") 2>&1 | logger || die - - if "$KPATCH_MODULE"; then - # Add .kpatch.checksum for kpatch script - md5sum ../patch/tmp_output.o | awk '{printf "%s\0", $1}' > checksum.tmp || die -- objcopy --add-section .kpatch.checksum=checksum.tmp --set-section-flags .kpatch.checksum=alloc,load,contents,readonly ../patch/tmp_output.o || die -+ ${ARCH_COMPILE}objcopy --add-section .kpatch.checksum=checksum.tmp --set-section-flags .kpatch.checksum=alloc,load,contents,readonly ../patch/tmp_output.o || die - rm -f checksum.tmp - "$TOOLSDIR"/create-kpatch-module "$TEMPDIR"/patch/tmp_output.o "$TEMPDIR"/patch/output.o 2>&1 | logger 1 - check_pipe_status create-kpatch-module -@@ -984,6 +1087,7 @@ fi - KPATCH_BUILD="$KPATCH_BUILD" KPATCH_NAME="$MODNAME" \ - KBUILD_EXTRA_SYMBOLS="$KBUILD_EXTRA_SYMBOLS" \ - KPATCH_LDFLAGS="$KPATCH_LDFLAGS" \ -+CROSS_COMPILE="$ARCH_COMPILE" \ - make 2>&1 | logger || die - - if ! "$KPATCH_MODULE"; then -diff --git a/kpatch-build/kpatch-gcc b/kpatch-build/kpatch-gcc -index 9663290..35d7c1c 100755 ---- a/kpatch-build/kpatch-gcc -+++ b/kpatch-build/kpatch-gcc -@@ -13,7 +13,7 @@ fi - - declare -a args=("$@") - --if [[ "$TOOLCHAINCMD" =~ "gcc" ]] ; then -+if [[ "$TOOLCHAINCMD" =~ "${ARCH_COMPILE}gcc" ]] ; then - while [ "$#" -gt 0 ]; do - if [ "$1" = "-o" ]; then - obj="$2" -@@ -60,7 +60,7 @@ if [[ "$TOOLCHAINCMD" =~ "gcc" ]] ; then - fi - shift - done --elif [[ "$TOOLCHAINCMD" = "ld" ]] ; then -+elif [[ "$TOOLCHAINCMD" = "${ARCH_COMPILE}ld" ]] ; then - while [ "$#" -gt 0 ]; do - if [ "$1" = "-o" ]; then - obj="$2" --- -2.18.1 - diff --git a/0003-create-diff-object-support-kpatch_line_macro_change_.patch b/0003-create-diff-object-support-kpatch_line_macro_change_.patch new file mode 100644 index 0000000..bc0d92f --- /dev/null +++ b/0003-create-diff-object-support-kpatch_line_macro_change_.patch @@ -0,0 +1,90 @@ +From b71b6e5f46fdc3f1b709b58777cb0da7ec9fc008 Mon Sep 17 00:00:00 2001 +From: Zhipeng Xie +Date: Sun, 14 Nov 2021 17:26:59 +0800 +Subject: [PATCH 03/24] create-diff-object:support + kpatch_line_macro_change_only on aarch64 + +implement kpatch_line_macro_change_only on aarch64 + +Signed-off-by: Zhipeng Xie +--- + kpatch-build/create-diff-object.c | 63 +++++++++++++++++++++++++++++++ + 1 file changed, 63 insertions(+) + +diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c +index 6c28280..c20f75e 100644 +--- a/kpatch-build/create-diff-object.c ++++ b/kpatch-build/create-diff-object.c +@@ -757,6 +757,69 @@ static bool kpatch_line_macro_change_only(struct section *sec) + + return true; + } ++#elif __aarch64__ ++#define ARM64_INSTR_LEN 4 ++ ++static bool kpatch_line_macro_change_only(struct section *sec) ++{ ++ unsigned long start1, start2, size, offset; ++ struct rela *rela; ++ int lineonly = 0, found; ++ unsigned int mov_imm_mask = ((1<<16) - 1)<<5; ++ ++ if (sec->status != CHANGED || ++ is_rela_section(sec) || ++ !is_text_section(sec) || ++ sec->sh.sh_size != sec->twin->sh.sh_size || ++ !sec->rela || ++ sec->rela->status != SAME) ++ return 0; ++ ++ start1 = (unsigned long)sec->twin->data->d_buf; ++ start2 = (unsigned long)sec->data->d_buf; ++ size = sec->sh.sh_size; ++ for (offset = 0; offset < size; offset += ARM64_INSTR_LEN) { ++ if (!memcmp((void *)start1 + offset, (void *)start2 + offset, ++ ARM64_INSTR_LEN)) ++ continue; ++ ++ /* verify it's a mov immediate to w1 */ ++ if ((*(int *)(start1 + offset) & ~mov_imm_mask) != ++ (*(int *)(start2 + offset) & ~mov_imm_mask)) ++ return 0; ++ ++ found = 0; ++ list_for_each_entry(rela, &sec->rela->relas, list) { ++ if (rela->offset < offset + ARM64_INSTR_LEN) ++ continue; ++ if (rela->string) ++ continue; ++ if (!strncmp(rela->sym->name, "__warned.", 9)) ++ continue; ++ if (!strncmp(rela->sym->name, "warn_slowpath_", 14) || ++ (!strcmp(rela->sym->name, "__warn_printk")) || ++ (!strcmp(rela->sym->name, "__might_sleep")) || ++ (!strcmp(rela->sym->name, "___might_sleep")) || ++ (!strcmp(rela->sym->name, "__might_fault")) || ++ (!strcmp(rela->sym->name, "printk")) || ++ (!strcmp(rela->sym->name, "lockdep_rcu_suspicious"))) { ++ found = 1; ++ break; ++ } ++ return 0; ++ } ++ if (!found) ++ return 0; ++ ++ lineonly = 1; ++ } ++ ++ if (!lineonly) ++ ERROR("no instruction changes detected for changed section %s", ++ sec->name); ++ ++ return 1; ++} + #else + static bool kpatch_line_macro_change_only(struct section *sec) + { +-- +2.23.0 + diff --git a/0004-create-diff-object-support-skip-check-func-profiling.patch b/0004-create-diff-object-support-skip-check-func-profiling.patch new file mode 100644 index 0000000..3b6a25c --- /dev/null +++ b/0004-create-diff-object-support-skip-check-func-profiling.patch @@ -0,0 +1,43 @@ +From f82f5ff61b8087e203a994da3911a1c5f3dee978 Mon Sep 17 00:00:00 2001 +From: Zhipeng Xie +Date: Sun, 14 Nov 2021 19:53:22 +0800 +Subject: [PATCH 04/24] create-diff-object:support skip check func profiling + calls + +when kernel support livepatch without ftrace, we can skip check +func profiling calls. + +Signed-off-by: Zhipeng Xie +--- + kpatch-build/create-diff-object.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c +index c20f75e..7247345 100644 +--- a/kpatch-build/create-diff-object.c ++++ b/kpatch-build/create-diff-object.c +@@ -3773,6 +3773,7 @@ int main(int argc, char *argv[]) + struct section *sec, *symtab; + char *orig_obj, *patched_obj, *parent_name; + char *parent_symtab, *mod_symvers, *patch_name, *output_obj; ++ char *no_profiling_calls = NULL; + + memset(&arguments, 0, sizeof(arguments)); + argp_parse (&argp, argc, argv, 0, NULL, &arguments); +@@ -3824,7 +3825,12 @@ int main(int argc, char *argv[]) + kpatch_compare_correlated_elements(kelf_patched); + kpatch_mark_ignored_functions_same(kelf_patched); + kpatch_mark_ignored_sections_same(kelf_patched); +- kpatch_check_func_profiling_calls(kelf_patched); ++ no_profiling_calls = getenv("NO_PROFILING_CALLS"); ++ if (!no_profiling_calls) ++ kpatch_check_func_profiling_calls(kelf_patched); ++ else ++ log_debug("NO_PROFILING_CALLS set\n"); ++ + kpatch_elf_teardown(kelf_orig); + kpatch_elf_free(kelf_orig); + +-- +2.23.0 + diff --git a/0004-livepatch-fix-use-THIS-modname-as-the-name-of-ddebug.patch b/0004-livepatch-fix-use-THIS-modname-as-the-name-of-ddebug.patch deleted file mode 100644 index 4990de1..0000000 --- a/0004-livepatch-fix-use-THIS-modname-as-the-name-of-ddebug.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 67c3fb57cf0b991c4f70aec78bdf25a47fb590b4 Mon Sep 17 00:00:00 2001 -From: Zhipeng Xie -Date: Fri, 2 Nov 2018 17:24:42 +0000 -Subject: [PATCH 04/23] livepatch, fix: use THIS modname as the name of - ddebug_table - -We just want a unique name for every module, so put a _ddebug in -this file as the first of _ddebug array. Then remove path will work -correctly, use the mod->name. - -Suggested-by: Li Bin -Signed-off-by: Zhou Chengming -Signed-off-by: Zhipeng Xie ---- - kmod/patch/livepatch-patch-hook.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/kmod/patch/livepatch-patch-hook.c b/kmod/patch/livepatch-patch-hook.c -index e12fd50..6ae40de 100644 ---- a/kmod/patch/livepatch-patch-hook.c -+++ b/kmod/patch/livepatch-patch-hook.c -@@ -473,6 +473,7 @@ out: - - static void __exit patch_exit(void) - { -+ pr_debug("make THIS modname first\n"); - #ifndef HAVE_SIMPLE_ENABLE - WARN_ON(klp_unregister_patch(lpatch)); - #endif --- -2.18.1 - diff --git a/0003-create-diff-object-new-static-var-should-be-included.patch b/0005-create-diff-object-new-static-var-should-be-included.patch similarity index 82% rename from 0003-create-diff-object-new-static-var-should-be-included.patch rename to 0005-create-diff-object-new-static-var-should-be-included.patch index b3a8e5f..610bfe1 100644 --- a/0003-create-diff-object-new-static-var-should-be-included.patch +++ b/0005-create-diff-object-new-static-var-should-be-included.patch @@ -1,7 +1,7 @@ -From 232f97ae9acb73ad7bb0b974f6a94ae4c4ca03d9 Mon Sep 17 00:00:00 2001 +From fb93c5a8dfbc035ade8fc40b75b85018afaeed2e Mon Sep 17 00:00:00 2001 From: Zhipeng Xie Date: Tue, 25 Feb 2020 22:44:50 -0500 -Subject: [PATCH 03/23] create-diff-object: new static var should be included +Subject: [PATCH 05/24] create-diff-object: new static var should be included Before this patch, only global variables(no referenced) will be included by kpatch-build. But some macros put some static varibles @@ -18,10 +18,10 @@ Signed-off-by: Zhipeng Xie 1 file changed, 16 insertions(+) diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index b161fee..b94060e 100644 +index 7247345..1be4fac 100644 --- a/kpatch-build/create-diff-object.c +++ b/kpatch-build/create-diff-object.c -@@ -1704,6 +1704,21 @@ static void kpatch_include_force_elements(struct kpatch_elf *kelf) +@@ -1909,6 +1909,21 @@ static void kpatch_include_force_elements(struct kpatch_elf *kelf) sym->include = 0; } @@ -43,14 +43,14 @@ index b161fee..b94060e 100644 static int kpatch_include_new_globals(struct kpatch_elf *kelf) { struct symbol *sym; -@@ -3573,6 +3588,7 @@ int main(int argc, char *argv[]) +@@ -3839,6 +3854,7 @@ int main(int argc, char *argv[]) callbacks_exist = kpatch_include_callback_elements(kelf_patched); kpatch_include_force_elements(kelf_patched); new_globals_exist = kpatch_include_new_globals(kelf_patched); + kpatch_include_new_static_var(kelf_patched); kpatch_include_debug_sections(kelf_patched); - kpatch_process_special_sections(kelf_patched); + kpatch_process_special_sections(kelf_patched, lookup); -- -2.18.1 +2.23.0 diff --git a/0006-create-diff-object-don-t-create-dynamic-reloc-for-sy.patch b/0006-create-diff-object-don-t-create-dynamic-reloc-for-sy.patch deleted file mode 100644 index 828da77..0000000 --- a/0006-create-diff-object-don-t-create-dynamic-reloc-for-sy.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 30446d9a1a65c8369a54844d471c2aeb4c9139dd Mon Sep 17 00:00:00 2001 -From: Zhipeng Xie -Date: Fri, 2 Nov 2018 17:24:58 +0000 -Subject: [PATCH 06/23] create-diff-object: don't create dynamic reloc for - symbol exported by patch itself - -when a patch export a new function, ___kcrctab+xxx has a reloc, -use origin reloc to get right symbol version. - -Signed-off-by: Zhipeng Xie ---- - kpatch-build/create-diff-object.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index 3681adb..ba2976b 100644 ---- a/kpatch-build/create-diff-object.c -+++ b/kpatch-build/create-diff-object.c -@@ -3056,6 +3056,9 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, - if (!strcmp(sym_objname, "vmlinux")) - continue; - -+ if (!strcmp(sym_objname, objname)) -+ continue; -+ - external = 1; - } - } --- -2.18.1 - diff --git a/0005-create-diff-object-fix-correlate-static-local-variab.patch b/0006-create-diff-object-fix-correlate-static-local-variab.patch similarity index 85% rename from 0005-create-diff-object-fix-correlate-static-local-variab.patch rename to 0006-create-diff-object-fix-correlate-static-local-variab.patch index aceb5be..7ced282 100644 --- a/0005-create-diff-object-fix-correlate-static-local-variab.patch +++ b/0006-create-diff-object-fix-correlate-static-local-variab.patch @@ -1,7 +1,7 @@ -From 24c01beb0ac8cee521ba654ece6c22f6ce9bdafe Mon Sep 17 00:00:00 2001 +From 80b74891e1d609d7881f9c9d29fe4828c49e2d83 Mon Sep 17 00:00:00 2001 From: Zhipeng Xie Date: Fri, 2 Nov 2018 17:24:51 +0000 -Subject: [PATCH 05/23] create-diff-object: fix correlate static local +Subject: [PATCH 06/24] create-diff-object: fix correlate static local variables for __param section kpatch-build correlate fail when no sections reference @@ -31,20 +31,20 @@ Signed-off-by: Zhipeng Xie 1 file changed, 4 insertions(+) diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index b94060e..3681adb 100644 +index 1be4fac..7efe7b4 100644 --- a/kpatch-build/create-diff-object.c +++ b/kpatch-build/create-diff-object.c -@@ -1108,6 +1108,10 @@ static int kpatch_is_normal_static_local(struct symbol *sym) +@@ -1277,6 +1277,10 @@ static bool kpatch_is_normal_static_local(struct symbol *sym) if (is_special_static(sym)) - return 0; + return false; + if (!strncmp(sym->name, "__param_", strlen("__param_")) && + !strncmp(sym->sec->name, "__param", strlen("__param"))) -+ return 0; ++ return false; + - return 1; + return true; } -- -2.18.1 +2.23.0 diff --git a/0007-create-diff-object-create-dynamic-relocs-for-changed.patch b/0007-create-diff-object-create-dynamic-relocs-for-changed.patch deleted file mode 100644 index a24b567..0000000 --- a/0007-create-diff-object-create-dynamic-relocs-for-changed.patch +++ /dev/null @@ -1,71 +0,0 @@ -From 66d1b112903b4942cc1033a1be93ae79c1ecf8ef Mon Sep 17 00:00:00 2001 -From: Zhipeng Xie -Date: Fri, 2 Nov 2018 17:25:38 +0000 -Subject: [PATCH 07/23] create-diff-object: create dynamic relocs for changed - functions in this object - -Currently, we only create dynamic relocs for changed functions of -other objects, but not this object. It will cause a problem like: - -original: funcA and funcB (funcA calls funcB) -patch-1: funcA-1 and funcB-1 (funcA-1 calls funcB-1) -patch-2: funcB-2 (funcA-1 should call funcB-2) - -But as we don't create dynamic relocs for funcA-1, it will call -funcB-1 directly (not by jumping from funcB). So the new funcB-2 -will not get called. This patch will create dynamic relocs for -all the changed functions, including changed ones in this object. - -Reported-by: Xie Zhipeng -Tested-by: Zhou Chengming -Signed-off-by: Zhou Chengming -Signed-off-by: Li Bin -Signed-off-by: Zhipeng Xie ---- - kpatch-build/create-diff-object.c | 23 +++++++++++++++++++---- - 1 file changed, 19 insertions(+), 4 deletions(-) - -diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index ba2976b..8ce3b59 100644 ---- a/kpatch-build/create-diff-object.c -+++ b/kpatch-build/create-diff-object.c -@@ -2900,6 +2900,14 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, - */ - if (may_need_dynrela(rela)) - toc_rela(rela)->need_dynrela = 1; -+ if (rela->sym->sec) { -+ if (rela->sym->type == STT_FUNC && -+ rela->sym->status == CHANGED && -+ rela->sym->sec != sec->base && -+ sec->base->sym && -+ sec->base->sym->type == STT_FUNC) -+ toc_rela(rela)->need_dynrela = 1; -+ } - } - } - -@@ -2982,10 +2990,17 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, - /* An unchanged local symbol */ - ret = lookup_local_symbol(table, - rela->sym->name, &result); -- if (ret) -- ERROR("lookup_local_symbol %s needed for %s", -- rela->sym->name, sec->base->name); -- -+ if (ret) { -+ /* -+ * maybe it is a global symbol converted in -+ * kpatch_create_patches_sections -+ */ -+ ret = lookup_global_symbol(table, -+ rela->sym->name, &result); -+ if (ret) -+ ERROR("lookup_local_symbol %s needed for %s", -+ rela->sym->name, sec->base->name); -+ } - } - else if (vmlinux) { - /* --- -2.18.1 - diff --git a/0008-fix-rodata.str-problem.patch b/0007-fix-rodata.str-problem.patch similarity index 76% rename from 0008-fix-rodata.str-problem.patch rename to 0007-fix-rodata.str-problem.patch index 803c739..9e8cb41 100644 --- a/0008-fix-rodata.str-problem.patch +++ b/0007-fix-rodata.str-problem.patch @@ -1,7 +1,7 @@ -From 9f30a27617915ee8c59aa43d9165d938129796b3 Mon Sep 17 00:00:00 2001 +From 42cfc6a9add67e23433bf431da74d6babe38be61 Mon Sep 17 00:00:00 2001 From: Zhiyu Hu Date: Fri, 28 Dec 2018 07:06:38 +0000 -Subject: [PATCH 08/23] fix rodata.str problem +Subject: [PATCH 07/24] fix rodata.str problem fix some rodata.str problem @@ -11,10 +11,10 @@ Signed-off-by: Zhiyu Hu 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index 8ce3b59..f37d404 100644 +index 7efe7b4..18aff6d 100644 --- a/kpatch-build/create-diff-object.c +++ b/kpatch-build/create-diff-object.c -@@ -1634,7 +1634,7 @@ static void kpatch_include_standard_elements(struct kpatch_elf *kelf) +@@ -1838,7 +1838,7 @@ static void kpatch_include_standard_elements(struct kpatch_elf *kelf) !strcmp(sec->name, ".toc") || !strcmp(sec->name, ".rodata") || (!strncmp(sec->name, ".rodata.", 8) && @@ -24,5 +24,5 @@ index 8ce3b59..f37d404 100644 } } -- -2.18.1 +2.23.0 diff --git a/0009-livepatch-patch-hook-don-t-active-patch-when-insmod.patch b/0008-livepatch-patch-hook-support-no-active-after-load.patch similarity index 54% rename from 0009-livepatch-patch-hook-don-t-active-patch-when-insmod.patch rename to 0008-livepatch-patch-hook-support-no-active-after-load.patch index 226e691..811d543 100644 --- a/0009-livepatch-patch-hook-don-t-active-patch-when-insmod.patch +++ b/0008-livepatch-patch-hook-support-no-active-after-load.patch @@ -1,22 +1,22 @@ -From 1bc8c76085839576576fc780336fbd9d7ebd29ef Mon Sep 17 00:00:00 2001 +From 3d3cb8c0b294a60faaeb68e0d7361babdc1b8902 Mon Sep 17 00:00:00 2001 From: Zhipeng Xie Date: Tue, 25 Feb 2020 23:40:37 -0500 -Subject: [PATCH 09/23] livepatch-patch-hook: don't active patch when insmod +Subject: [PATCH 08/24] livepatch-patch-hook: support no active after load -Don't active patch after loading the patch when +suppport Don't active patch after loading the patch when DISABLE_AFTER_LOAD is set. Signed-off-by: Zhipeng Xie --- kmod/patch/livepatch-patch-hook.c | 2 ++ - kpatch-build/kpatch-build | 4 ++++ - 2 files changed, 6 insertions(+) + kpatch-build/kpatch-build | 5 +++++ + 2 files changed, 7 insertions(+) diff --git a/kmod/patch/livepatch-patch-hook.c b/kmod/patch/livepatch-patch-hook.c -index 6ae40de..fb23a94 100644 +index 3d13ab9..b578ef3 100644 --- a/kmod/patch/livepatch-patch-hook.c +++ b/kmod/patch/livepatch-patch-hook.c -@@ -455,6 +455,7 @@ static int __init patch_init(void) +@@ -576,6 +576,7 @@ static int __init patch_init(void) } #endif @@ -24,7 +24,7 @@ index 6ae40de..fb23a94 100644 ret = klp_enable_patch(lpatch); if (ret) { #ifndef HAVE_SIMPLE_ENABLE -@@ -463,6 +464,7 @@ static int __init patch_init(void) +@@ -584,6 +585,7 @@ static int __init patch_init(void) patch_free_livepatch(lpatch); return ret; } @@ -33,20 +33,21 @@ index 6ae40de..fb23a94 100644 return 0; out: diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build -index 17a5e11..894f0ab 100755 +index ad3a079..c85e05a 100755 --- a/kpatch-build/kpatch-build +++ b/kpatch-build/kpatch-build -@@ -1053,6 +1053,10 @@ if [[ -n "$KLP_SUPPORT_LOADHOOKS" ]];then - export KCPPFLAGS="-DHAVE_LOADHOOKS $KCPPFLAGS" +@@ -1176,6 +1176,11 @@ export KCFLAGS="-I$DATADIR/patch $ARCH_KCFLAGS" + if [[ "$USE_KLP" -eq 0 ]]; then + export KCPPFLAGS="-D__KPATCH_MODULE__" fi - ++ +if [[ -n "$DISABLE_AFTER_LOAD" ]];then -+ export KCPPFLAGS="-DDISABLE_AFTER_LOAD $KCPPFLAGS" ++ export KCPPFLAGS="-DDISABLE_AFTER_LOAD $KCPPFLAGS" +fi + - echo "Building patch module: $MODNAME.ko" + save_env - if [[ -z "$USERSRCDIR" ]] && [[ "$DISTRO" = ubuntu ]]; then + echo "Building patch module: $MODNAME.ko" -- -2.18.1 +2.23.0 diff --git a/0009-kpatch-build-enhance-for-out-of-tree-module.patch b/0009-kpatch-build-enhance-for-out-of-tree-module.patch new file mode 100644 index 0000000..7b672d5 --- /dev/null +++ b/0009-kpatch-build-enhance-for-out-of-tree-module.patch @@ -0,0 +1,198 @@ +From 12530d7f476e8629fc7e50443f34164a43ef18b6 Mon Sep 17 00:00:00 2001 +From: Zhipeng Xie +Date: Wed, 26 Feb 2020 06:44:06 -0500 +Subject: [PATCH 09/24] kpatch-build: enhance for out of tree module + +support set USERMODBUILDDIR to build patch for out +of tree module. + +Signed-off-by: Zhipeng Xie +--- + kpatch-build/kpatch-build | 62 +++++++++++++++++++++++++++++++-------- + kpatch-build/kpatch-cc | 4 ++- + 2 files changed, 53 insertions(+), 13 deletions(-) + +diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build +index c85e05a..3aca1f3 100755 +--- a/kpatch-build/kpatch-build ++++ b/kpatch-build/kpatch-build +@@ -492,7 +492,11 @@ filter_parent_obj() + local dir="${1}" + local file="${2}" + +- grep -v "\.mod\.cmd$" | grep -Fv "${dir}/.${file}.cmd" ++ grep -v "\.mod\.cmd$" | grep -Fv "${dir}/.${file}.cmd" | while read input; do ++ if [ "$(readlink -f $input)" != "$(readlink -f ${dir}/.${file}.cmd)" ];then ++ echo $input; ++ fi ++ done + } + + find_parent_obj() { +@@ -514,6 +518,11 @@ find_parent_obj() { + num="$(find . -name ".*.cmd" -print0 | xargs -0 grep -lw "$grepname" | filter_parent_obj "${pdir}" "${file}" | wc -l)" + [[ "$num" -eq 1 ]] && last_deep_find="$(dirname "$parent")" + fi ++ if [[ "$num" -eq 0 ]]; then ++ parent="$(find $USERMODBUILDDIR -name ".*.cmd" -print0 | xargs -0 grep -l "$grepname" | grep -Fv "$pdir/.${file}.cmd" | head -n1)" ++ num="$(find $USERMODBUILDDIR -name ".*.cmd" -print0 | xargs -0 grep -l "$grepname" | grep -Fvc "$pdir/.${file}.cmd")" ++ [[ "$num" -eq 1 ]] && last_deep_find="$(dirname "$parent")" ++ fi + else + parent="$(grep -lw "$grepname" "$dir"/.*.cmd | filter_parent_obj "${dir}" "${file}" | head -n1)" + num="$(grep -lw "$grepname" "$dir"/.*.cmd | filter_parent_obj "${dir}" "${file}" | wc -l)" +@@ -703,6 +712,10 @@ if [[ -n "$SRCRPM" ]]; then + ARCHVERSION="${ARCHVERSION#alt-}" + fi + ++if [[ -n "$USERMODBUILDDIR" ]]; then ++ OOT_MODULE="yes" ++fi ++ + if [[ -n "$OOT_MODULE" ]] && [[ -z "$USERSRCDIR" ]]; then + warn "--oot-module requires --sourcedir" + exit 1 +@@ -720,7 +733,7 @@ if [[ -n "$USERSRCDIR" ]]; then + fi + SRCDIR="$USERSRCDIR" + +- if [[ -z "$OOT_MODULE" ]]; then ++ if [[ -z "$OOT_MODULE" || "$OOT_MODULE" == "yes" ]]; then + [[ -z "$VMLINUX" ]] && VMLINUX="$SRCDIR"/vmlinux + [[ ! -e "$VMLINUX" ]] && die "can't find vmlinux" + +@@ -742,7 +755,7 @@ if [[ "$ARCHVERSION" =~ - ]]; then + fi + [[ "$ARCHVERSION" =~ .el7a. ]] && ALT="-alt" + +-[[ -z "$TARGETS" ]] && TARGETS="vmlinux modules" ++[[ -z "$OOT_MODULE" ]] && [[ -z "$TARGETS" ]] && TARGETS="vmlinux modules" + + # Don't check external file. + # shellcheck disable=SC1090 +@@ -870,7 +883,9 @@ fi + [[ -z "$CONFIGFILE" ]] && CONFIGFILE="$SRCDIR"/.config + [[ ! -e "$CONFIGFILE" ]] && die "can't find config file" + if [[ ! "$CONFIGFILE" -ef "$SRCDIR"/.config ]] ; then +- cp -f "$CONFIGFILE" "$SRCDIR/.config" || die ++ if [[ -z "$OOT_MODULE" ]] ; then ++ cp -f "$CONFIGFILE" "$SRCDIR/.config" || die ++ fi + fi + + # kernel option checking +@@ -947,7 +962,7 @@ if [[ "$CONFIG_CC_IS_CLANG" -eq 1 ]]; then + fi + + if [[ "$SKIPCOMPILERCHECK" -eq 0 ]]; then +- if [[ -n "$OOT_MODULE" ]]; then ++ if [[ -n "$OOT_MODULE" ]] && [[ "$OOT_MODULE" != "yes" ]]; then + target="$OOT_MODULE" + else + target="$VMLINUX" +@@ -1005,10 +1020,16 @@ fi + + # $TARGETS used as list, no quotes. + # shellcheck disable=SC2086 +-make "${MAKEVARS[@]}" "-j$CPUS" $TARGETS 2>&1 | logger || die ++if [[ -z "$USERMODBUILDDIR" ]]; then ++ make "${MAKEVARS[@]}" "-j$CPUS" $TARGETS 2>&1 | logger || die ++else ++ make "${MAKEVARS[@]}" -C "$USERMODBUILDDIR" M="$USERMODBUILDDIR" $USERMODFLAGS "-j$CPUS" $TARGETS 2>&1 | logger || die ++fi + + # Save original module symvers +-cp -f "$SRCDIR/Module.symvers" "$TEMPDIR/Module.symvers" || die ++if [[ "$OOT_MODULE" != "yes" ]]; then ++ cp -f "$SRCDIR/Module.symvers" "$TEMPDIR/Module.symvers" || die ++fi + + echo "Building patched source" + apply_patches +@@ -1018,7 +1039,12 @@ export KPATCH_GCC_SRCDIR="$SRCDIR" + save_env + # $TARGETS used as list, no quotes. + # shellcheck disable=SC2086 +-KBUILD_MODPOST_WARN=1 make "${MAKEVARS[@]}" "-j$CPUS" $TARGETS 2>&1 | logger || die ++ ++if [[ -z "$USERMODBUILDDIR" ]]; then ++ KBUILD_MODPOST_WARN=1 make "${MAKEVARS[@]}" "-j$CPUS" $TARGETS 2>&1 | logger || die ++else ++ KBUILD_MODPOST_WARN=1 make "${MAKEVARS[@]}" -C "$USERMODBUILDDIR" M="$USERMODBUILDDIR" $USERMODFLAGS "-j$CPUS" $TARGETS 2>&1 | logger || die ++fi + + # source.c:(.section+0xFF): undefined reference to `symbol' + grep "undefined reference" "$LOGFILE" | sed -r "s/^.*\`(.*)'$/\\1/" \ +@@ -1033,7 +1059,7 @@ fi + + [[ -n "$OOT_MODULE" ]] || grep -q vmlinux "$SRCDIR/Module.symvers" || die "truncated $SRCDIR/Module.symvers file" + +-if [[ "$CONFIG_MODVERSIONS" -eq 1 ]]; then ++if [[ "$CONFIG_MODVERSIONS" -eq 1 ]] && [[ "$OOT_MODULE" != "yes" ]]; then + while read -ra sym_line; do + if [[ ${#sym_line[@]} -lt 4 ]]; then + die "Malformed ${TEMPDIR}/Module.symvers file" +@@ -1061,7 +1087,11 @@ fi + for i in $(cat "$TEMPDIR/changed_objs") + do + mkdir -p "$TEMPDIR/patched/$(dirname "$i")" || die +- cp -f "$SRCDIR/$i" "$TEMPDIR/patched/$i" || die ++ if [ -z "$USERMODBUILDDIR" ];then ++ cp -f "$SRCDIR/$i" "$TEMPDIR/patched/$i" || die ++ else ++ cp -f "$i" "$TEMPDIR/patched/$i" || die ++ fi + done + + echo "Extracting new and modified ELF sections" +@@ -1095,7 +1125,7 @@ CHANGED=0 + ERROR=0 + + # Prepare OOT module symvers file +-if [[ -n "$OOT_MODULE" ]]; then ++if [[ -n "$OOT_MODULE" ]] && [[ "$OOT_MODULE" != "yes" ]]; then + BUILDDIR="/lib/modules/$ARCHVERSION/build/" + cp -f "$SRCDIR/Module.symvers" "$TEMPDIR/Module.symvers" || die + awk '{ print $1 "\t" $2 "\t" $3 "\t" $4}' "${BUILDDIR}/Module.symvers" >> "$TEMPDIR/Module.symvers" +@@ -1131,6 +1161,14 @@ for i in $FILES; do + KOBJFILE_PATH="${TEMPDIR}/module/$KOBJFILE" + SYMTAB="${KOBJFILE_PATH}.symtab" + SYMVERS_FILE="$SRCDIR/Module.symvers" ++ ++ if [ "$OOT_MODULE" == "yes" ];then ++ 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 + + readelf -s --wide "$KOBJFILE_PATH" > "$SYMTAB" +@@ -1283,7 +1321,7 @@ fi + # column containing lines unique to first file. + UNDEFINED=$(comm -23 <(sort -u "${TEMPDIR}"/undefined_references) \ + <(sort -u "${TEMPDIR}"/new_symbols) | tr '\n' ' ') +-[[ -n "$UNDEFINED" ]] && die "Undefined symbols: $UNDEFINED" ++[[ -z "$USERMODBUILDDIR" ]] && [[ -n "$UNDEFINED" ]] && die "Undefined symbols: $UNDEFINED" + + cp -f "$TEMPDIR/patch/$MODNAME.ko" "$BASE" || die + +diff --git a/kpatch-build/kpatch-cc b/kpatch-build/kpatch-cc +index 476436f..7ee1655 100755 +--- a/kpatch-build/kpatch-cc ++++ b/kpatch-build/kpatch-cc +@@ -24,7 +24,9 @@ if [[ "$TOOLCHAINCMD" =~ ^(.*-)?gcc$ || "$TOOLCHAINCMD" =~ ^(.*-)?clang$ ]] ; th + + [[ "$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.23.0 + diff --git a/0010-kpatch-build-enhance-for-out-of-tree-module.patch b/0010-kpatch-build-enhance-for-out-of-tree-module.patch deleted file mode 100644 index 3c52d52..0000000 --- a/0010-kpatch-build-enhance-for-out-of-tree-module.patch +++ /dev/null @@ -1,133 +0,0 @@ -From a1303033db88fa0036387f3a86f71d162bd5c037 Mon Sep 17 00:00:00 2001 -From: Zhipeng Xie -Date: Wed, 26 Feb 2020 06:44:06 -0500 -Subject: [PATCH 10/23] kpatch-build: enhance for out of tree module - -support set USERMODBUILDDIR to build patch for out -of tree module. - -Signed-off-by: Zhipeng Xie ---- - kpatch-build/kpatch-build | 50 ++++++++++++++++++++++++++++++++------- - 1 file changed, 42 insertions(+), 8 deletions(-) - -diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build -index 894f0ab..4e38412 100755 ---- a/kpatch-build/kpatch-build -+++ b/kpatch-build/kpatch-build -@@ -419,7 +419,11 @@ filter_parent_obj() - local dir="${1}" - local file="${2}" - -- grep -v "\.mod\.cmd$" | grep -Fv "${dir}/.${file}.cmd" -+ grep -v "\.mod\.cmd$" | grep -Fv "${dir}/.${file}.cmd" | while read input; do -+ if [ "$(readlink -f $input)" != "$(readlink -f ${dir}/.${file}.cmd)" ];then -+ echo $input; -+ fi -+ done - } - - find_parent_obj() { -@@ -441,6 +445,11 @@ find_parent_obj() { - num="$(find . -name ".*.cmd" -print0 | xargs -0 grep -lw "$grepname" | filter_parent_obj "${pdir}" "${file}" | wc -l)" - [[ "$num" -eq 1 ]] && last_deep_find="$(dirname "$parent")" - fi -+ if [[ "$num" -eq 0 ]]; then -+ parent="$(find $USERMODBUILDDIR -name ".*.cmd" -print0 | xargs -0 grep -l "$grepname" | grep -Fv "$pdir/.${file}.cmd" | head -n1)" -+ num="$(find $USERMODBUILDDIR -name ".*.cmd" -print0 | xargs -0 grep -l "$grepname" | grep -Fvc "$pdir/.${file}.cmd")" -+ [[ "$num" -eq 1 ]] && last_deep_find="$(dirname "$parent")" -+ fi - else - parent="$(grep -lw "$grepname" "$dir"/.*.cmd | filter_parent_obj "${dir}" "${file}" | head -n1)" - num="$(grep -lw "$grepname" "$dir"/.*.cmd | filter_parent_obj "${dir}" "${file}" | wc -l)" -@@ -646,6 +655,10 @@ if [[ -n "$SRCRPM" ]]; then - ARCHVERSION="${ARCHVERSION#alt-}" - fi - -+if [[ -n "$USERMODBUILDDIR" ]]; then -+ OOT_MODULE="yes" -+fi -+ - if [[ -n "$OOT_MODULE" ]] && [[ -z "$USERSRCDIR" ]]; then - warn "--oot-module requires --sourcedir" - exit 1 -@@ -663,7 +676,7 @@ if [[ -n "$USERSRCDIR" ]]; then - fi - SRCDIR="$USERSRCDIR" - -- if [[ -z "$OOT_MODULE" ]]; then -+ if [[ -z "$OOT_MODULE" || "$OOT_MODULE" == "yes" ]]; then - [[ -z "$VMLINUX" ]] && VMLINUX="$SRCDIR"/vmlinux - [[ ! -e "$VMLINUX" ]] && die "can't find vmlinux" - -@@ -685,7 +698,7 @@ if [[ "$ARCHVERSION" =~ - ]]; then - fi - [[ "$ARCHVERSION" =~ .el7a. ]] && ALT="-alt" - --[[ -z "$TARGETS" ]] && TARGETS="vmlinux modules" -+[[ -z "$OOT_MODULE" ]] && [[ -z "$TARGETS" ]] && TARGETS="vmlinux modules" - - # Don't check external file. - # shellcheck disable=SC1090 -@@ -889,7 +902,11 @@ echo "Building original source" - unset KPATCH_GCC_TEMPDIR - # $TARGETS used as list, no quotes. - # shellcheck disable=SC2086 --CROSS_COMPILE="$TOOLSDIR/kpatch-gcc $ARCH_COMPILE" make "-j$CPUS" $TARGETS 2>&1 | logger || die -+if [[ -z "$USERMODBUILDDIR" ]]; then -+ CROSS_COMPILE="$TOOLSDIR/kpatch-gcc $ARCH_COMPILE" make "-j$CPUS" $TARGETS 2>&1 | logger || die -+else -+ CROSS_COMPILE="$TOOLSDIR/kpatch-gcc $ARCH_COMPILE" make -C "$USERMODBUILDDIR" M="$USERMODBUILDDIR" "-j$CPUS" $USERMODFLAGS $TARGETS 2>&1 | logger || die -+fi - - echo "Building patched source" - apply_patches -@@ -900,9 +917,15 @@ KPATCH_GCC_SRCDIR="$SRCDIR" - export KPATCH_GCC_SRCDIR - # $TARGETS used as list, no quotes. - # shellcheck disable=SC2086 --CROSS_COMPILE="$TOOLSDIR/kpatch-gcc $ARCH_COMPILE" \ -- KBUILD_MODPOST_WARN=1 \ -- make "-j$CPUS" $TARGETS 2>&1 | logger || die -+if [[ -z "$USERMODBUILDDIR" ]]; then -+ CROSS_COMPILE="$TOOLSDIR/kpatch-gcc $ARCH_COMPILE" \ -+ KBUILD_MODPOST_WARN=1 \ -+ make "-j$CPUS" $TARGETS 2>&1 | logger || die -+else -+ CROSS_COMPILE="$TOOLSDIR/kpatch-gcc $ARCH_COMPILE" \ -+ KBUILD_MODPOST_WARN=1 \ -+ make -C "$USERMODBUILDDIR" M="$USERMODBUILDDIR" "-j$CPUS" $USERMODFLAGS $TARGETS 2>&1 | logger || die -+fi - - # source.c:(.section+0xFF): undefined reference to `symbol' - grep "undefined reference" "$LOGFILE" | sed -r "s/^.*\`(.*)'$/\\1/" \ -@@ -922,7 +945,11 @@ fi - for i in $(cat "$TEMPDIR/changed_objs") - do - mkdir -p "$TEMPDIR/patched/$(dirname "$i")" || die -- cp -f "$SRCDIR/$i" "$TEMPDIR/patched/$i" || die -+ if [ -z "$USERMODBUILDDIR" ];then -+ cp -f "$SRCDIR/$i" "$TEMPDIR/patched/$i" || die -+ else -+ cp -f "$i" "$TEMPDIR/patched/$i" || die -+ fi - done - - echo "Extracting new and modified ELF sections" -@@ -987,6 +1014,13 @@ for i in $FILES; do - KOBJFILE_PATH="${TEMPDIR}/module/$KOBJFILE" - SYMTAB="${KOBJFILE_PATH}.symtab" - SYMVERS_FILE="$SRCDIR/Module.symvers" -+ -+ if [ "$OOT_MODULE" == "yes" ];then -+ BUILDDIR="/lib/modules/$ARCHVERSION/build/" -+ SYMVERS_FILE="$TEMPDIR/Module.symvers" -+ [[ -e $SRCDIR/Module.symvers ]] && cp "$SRCDIR/Module.symvers" "$SYMVERS_FILE" -+ awk '{ print $1 "\t" $2 "\t" $3 "\t" $4}' "${BUILDDIR}/Module.symvers" >> "$SYMVERS_FILE" -+ fi - fi - - readelf -s --wide "$KOBJFILE_PATH" > "$SYMTAB" --- -2.18.1 - diff --git a/0011-support-c-plus-kernel-module.patch b/0010-support-c-kernel-module.patch similarity index 52% rename from 0011-support-c-plus-kernel-module.patch rename to 0010-support-c-kernel-module.patch index 5bb0b7e..87f173c 100644 --- a/0011-support-c-plus-kernel-module.patch +++ b/0010-support-c-kernel-module.patch @@ -1,7 +1,7 @@ -From d170861502e78c396f0283f66f444a496efd11de Mon Sep 17 00:00:00 2001 +From 86bae0f77f1e11f6b64eb950c739f7c6b444eb43 Mon Sep 17 00:00:00 2001 From: Zhipeng Xie Date: Wed, 26 Feb 2020 07:36:59 -0500 -Subject: [PATCH 11/23] support c plus kernel module +Subject: [PATCH 10/24] support c++ kernel module support GNU_UNIQUE type symbols. support .group section corelation. @@ -9,18 +9,17 @@ ignore compile warning for third party modules. Signed-off-by: Zhipeng Xie --- - kpatch-build/create-diff-object.c | 60 +++++++++++++++++++++---------- - kpatch-build/kpatch-build | 2 +- - kpatch-build/kpatch-elf.c | 8 ++++- - kpatch-build/kpatch-gcc | 3 +- - kpatch-build/lookup.c | 5 ++- - 5 files changed, 55 insertions(+), 23 deletions(-) + kpatch-build/create-diff-object.c | 48 ++++++++++++++++++++----------- + kpatch-build/kpatch-cc | 4 ++- + kpatch-build/kpatch-elf.c | 8 +++++- + kpatch-build/lookup.c | 5 +++- + 4 files changed, 45 insertions(+), 20 deletions(-) diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index f37d404..d139f45 100644 +index 18aff6d..5903803 100644 --- a/kpatch-build/create-diff-object.c +++ b/kpatch-build/create-diff-object.c -@@ -460,7 +460,7 @@ static void kpatch_compare_correlated_nonrela_section(struct section *sec) +@@ -539,7 +539,7 @@ static void kpatch_compare_correlated_nonrela_section(struct section *sec) { struct section *sec1 = sec, *sec2 = sec->twin; @@ -29,7 +28,7 @@ index f37d404..d139f45 100644 memcmp(sec1->data->d_buf, sec2->data->d_buf, sec1->data->d_size)) sec->status = CHANGED; else -@@ -476,7 +476,7 @@ static void kpatch_compare_correlated_section(struct section *sec) +@@ -555,7 +555,7 @@ static void kpatch_compare_correlated_section(struct section *sec) sec1->sh.sh_flags != sec2->sh.sh_flags || sec1->sh.sh_entsize != sec2->sh.sh_entsize || (sec1->sh.sh_addralign != sec2->sh.sh_addralign && @@ -38,12 +37,12 @@ index f37d404..d139f45 100644 DIFF_FATAL("%s section header details differ from %s", sec1->name, sec2->name); /* Short circuit for mcount sections, we rebuild regardless */ -@@ -913,6 +913,34 @@ static void kpatch_correlate_section(struct section *sec1, struct section *sec2) - kpatch_correlate_symbol(sec1->sym, sec2->sym); +@@ -1024,6 +1024,34 @@ static void kpatch_correlate_section(struct section *sec_orig, + kpatch_correlate_symbol(sec_orig->sym, sec_patched->sym); } -+static int kpatch_correlate_group_section(struct list_head *seclist1, -+ struct list_head *seclist2, struct section *sec1, struct section *sec2) ++static int kpatch_correlate_group_section(struct list_head *seclist_orig, ++ struct list_head *seclist_patched, struct section *sec1, struct section *sec2) +{ + unsigned int *data1, *end1, *data2; + struct section *isec1, *isec2; @@ -56,10 +55,10 @@ index f37d404..d139f45 100644 + data1++; + data2++; + while (data1 < end1) { -+ isec1 = find_section_by_index(seclist1, *data1); ++ isec1 = find_section_by_index(seclist_orig, *data1); + if (!isec1) + ERROR("group section not found"); -+ isec2 = find_section_by_index(seclist2, *data2); ++ isec2 = find_section_by_index(seclist_patched, *data2); + if (!isec2) + ERROR("group section not found"); + if (strcmp(isec1->name, isec2->name)) @@ -70,36 +69,22 @@ index f37d404..d139f45 100644 + return 0; +} + - static void kpatch_correlate_sections(struct list_head *seclist1, struct list_head *seclist2) + static void kpatch_correlate_sections(struct list_head *seclist_orig, + struct list_head *seclist_patched) { - struct section *sec1, *sec2; -@@ -931,14 +959,19 @@ static void kpatch_correlate_sections(struct list_head *seclist1, struct list_he - continue; - - /* -- * Group sections must match exactly to be correlated. -- * Changed group sections are currently not supported. -+ * Group section的格式为: -+ * flag -+ * section index -+ * section index -+ * ... -+ * -+ * 当C++代码发生修改时,section index可能会发生变化 -+ * 这时候我们就比对一下section index所对应的section的 -+ * name,如果相同,我们就认为这两个group是SAME +@@ -1047,10 +1075,7 @@ static void kpatch_correlate_sections(struct list_head *seclist_orig, + * Changed group sections are currently not supported. */ -+ - if (sec1->sh.sh_type == SHT_GROUP) { -- if (sec1->data->d_size != sec2->data->d_size) + if (sec_orig->sh.sh_type == SHT_GROUP) { +- if (sec_orig->data->d_size != sec_patched->data->d_size) - continue; -- if (memcmp(sec1->data->d_buf, sec2->data->d_buf, -- sec1->data->d_size)) -+ if (kpatch_correlate_group_section(seclist1, seclist2, sec1, sec2)) +- if (memcmp(sec_orig->data->d_buf, sec_patched->data->d_buf, +- sec_orig->data->d_size)) ++ if (kpatch_correlate_group_section(seclist_orig, seclist_patched, sec_orig, sec_patched)) continue; } -@@ -1521,17 +1554,6 @@ static void kpatch_verify_patchability(struct kpatch_elf *kelf) +@@ -1725,17 +1750,6 @@ static void kpatch_verify_patchability(struct kpatch_elf *kelf) errs++; } @@ -117,24 +102,26 @@ index f37d404..d139f45 100644 /* * ensure we aren't including .data.* or .bss.* * (.data.unlikely and .data.once is ok b/c it only has __warned vars) -diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build -index 4e38412..4896136 100755 ---- a/kpatch-build/kpatch-build -+++ b/kpatch-build/kpatch-build -@@ -1157,7 +1157,7 @@ fi - # column containing lines unique to first file. - UNDEFINED=$(comm -23 <(sort -u "${TEMPDIR}"/undefined_references) \ - <(sort -u "${TEMPDIR}"/new_symbols) | tr '\n' ' ') --[[ -n "$UNDEFINED" ]] && die "Undefined symbols: $UNDEFINED" -+[[ -z "$USERMODBUILDDIR" ]] && [[ -n "$UNDEFINED" ]] && die "Undefined symbols: $UNDEFINED" +diff --git a/kpatch-build/kpatch-cc b/kpatch-build/kpatch-cc +index 7ee1655..80d310c 100755 +--- a/kpatch-build/kpatch-cc ++++ b/kpatch-build/kpatch-cc +@@ -13,7 +13,9 @@ fi - cp -f "$TEMPDIR/patch/$MODNAME.ko" "$BASE" || die + declare -a args=("$@") +-if [[ "$TOOLCHAINCMD" =~ ^(.*-)?gcc$ || "$TOOLCHAINCMD" =~ ^(.*-)?clang$ ]] ; then ++if [[ "$TOOLCHAINCMD" =~ ^(.*-)?gcc$ || ++ "$TOOLCHAINCMD" =~ ^(.*-)?g\+\+$ || ++ "$TOOLCHAINCMD" =~ ^(.*-)?clang$ ]] ; then + while [ "$#" -gt 0 ]; do + if [ "$1" = "-o" ]; then + obj="$2" diff --git a/kpatch-build/kpatch-elf.c b/kpatch-build/kpatch-elf.c -index c6af59e..f76a9eb 100644 +index 68d5c86..2df9105 100644 --- a/kpatch-build/kpatch-elf.c +++ b/kpatch-build/kpatch-elf.c -@@ -710,8 +710,14 @@ void kpatch_reindex_elements(struct kpatch_elf *kelf) +@@ -712,8 +712,14 @@ void kpatch_reindex_elements(struct kpatch_elf *kelf) unsigned int index; index = 1; /* elf write function handles NULL section 0 */ @@ -150,25 +137,11 @@ index c6af59e..f76a9eb 100644 index = 0; list_for_each_entry(sym, &kelf->symbols, list) { -diff --git a/kpatch-build/kpatch-gcc b/kpatch-build/kpatch-gcc -index 35d7c1c..6ad6ebc 100755 ---- a/kpatch-build/kpatch-gcc -+++ b/kpatch-build/kpatch-gcc -@@ -13,7 +13,8 @@ fi - - declare -a args=("$@") - --if [[ "$TOOLCHAINCMD" =~ "${ARCH_COMPILE}gcc" ]] ; then -+if [[ "$TOOLCHAINCMD" =~ "${ARCH_COMPILE}gcc" || -+ "$TOOLCHAINCMD" =~ "${ARCH_COMPILE}g++" ]] ; then - while [ "$#" -gt 0 ]; do - if [ "$1" = "-o" ]; then - obj="$2" diff --git a/kpatch-build/lookup.c b/kpatch-build/lookup.c -index 8387e8b..4e2fcb9 100644 +index 0323c61..e81e934 100644 --- a/kpatch-build/lookup.c +++ b/kpatch-build/lookup.c -@@ -255,6 +255,8 @@ static void symtab_read(struct lookup_table *table, char *path) +@@ -304,6 +304,8 @@ static void symtab_read(struct lookup_table *table, char *path) table->obj_syms[i].bind = STB_GLOBAL; } else if (!strcmp(bind, "WEAK")) { table->obj_syms[i].bind = STB_WEAK; @@ -177,16 +150,16 @@ index 8387e8b..4e2fcb9 100644 } else { ERROR("unknown symbol bind %s", bind); } -@@ -431,7 +433,8 @@ int lookup_global_symbol(struct lookup_table *table, char *name, +@@ -528,7 +530,8 @@ static bool lookup_global_symbol(struct lookup_table *table, char *name, memset(result, 0, sizeof(*result)); for_each_obj_symbol(i, sym, table) { - if ((sym->bind == STB_GLOBAL || sym->bind == STB_WEAK) && -+ if ((sym->bind == STB_GLOBAL || sym->bind == STB_WEAK -+ || sym->bind == STB_GNU_UNIQUE) && +++ if ((sym->bind == STB_GLOBAL || sym->bind == STB_WEAK +++ || sym->bind == STB_GNU_UNIQUE) && !strcmp(sym->name, name)) { - result->value = sym->value; - result->size = sym->size; + + if (result->objname) -- -2.18.1 +2.23.0 diff --git a/0012-symbol-lookup-enhancement.patch b/0011-symbol-lookup-enhancement.patch similarity index 59% rename from 0012-symbol-lookup-enhancement.patch rename to 0011-symbol-lookup-enhancement.patch index 1239e30..8c740da 100644 --- a/0012-symbol-lookup-enhancement.patch +++ b/0011-symbol-lookup-enhancement.patch @@ -1,7 +1,7 @@ -From 8dbdf64abc81a8c6f9ec71a4187eb7db9b81d090 Mon Sep 17 00:00:00 2001 +From 34a0c47eb0f786222b3f2e1fe544f71687920943 Mon Sep 17 00:00:00 2001 From: Zhipeng Xie Date: Wed, 26 Feb 2020 22:03:55 -0500 -Subject: [PATCH 12/23] symbol lookup enhancement +Subject: [PATCH 11/24] symbol lookup enhancement For symbols which have same name in one module or have length longger than KSYM_NAME_LEN(128 bytes). we add @@ -13,13 +13,13 @@ style. Signed-off-by: Zhipeng Xie --- kmod/patch/kpatch-patch.h | 4 + - kpatch-build/create-diff-object.c | 53 +++++++++++- - kpatch-build/create-klp-module.c | 25 +++++- + kpatch-build/create-diff-object.c | 40 +++++++- + kpatch-build/create-klp-module.c | 25 ++++- kpatch-build/kpatch-build | 12 +++ kpatch-build/kpatch-intermediate.h | 2 + - kpatch-build/lookup.c | 129 ++++++++++++++++++++++++++++- - kpatch-build/lookup.h | 13 +++ - 7 files changed, 230 insertions(+), 8 deletions(-) + kpatch-build/lookup.c | 159 ++++++++++++++++++++++++++++- + kpatch-build/lookup.h | 15 +++ + 7 files changed, 247 insertions(+), 10 deletions(-) diff --git a/kmod/patch/kpatch-patch.h b/kmod/patch/kpatch-patch.h index da4f6a0..9df7818 100644 @@ -44,111 +44,98 @@ index da4f6a0..9df7818 100644 struct kpatch_pre_patch_callback { diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index d139f45..73c557b 100644 +index 5903803..ea1e01b 100644 --- a/kpatch-build/create-diff-object.c +++ b/kpatch-build/create-diff-object.c -@@ -2753,6 +2753,29 @@ static void kpatch_create_patches_sections(struct kpatch_elf *kelf, - funcs[index].old_size = result.size; - funcs[index].new_size = sym->sym.st_size; - funcs[index].sympos = result.pos; -+ if (lookup_is_duplicate_symbol(table, sym->name, objname, result.pos)) { -+ struct lookup_refsym refsym; -+ long offset; -+ -+ if (lookup_ref_symbol_offset(table, sym->name, &refsym, -+ objname, &offset)) -+ ERROR("unresolvable ambiguity on symbol %s\n", sym->name); -+ -+ funcs[index].ref_offset = offset; -+ -+ /* -+ * Add a relocation that will populate -+ * the funcs[index].ref_name field. -+ */ -+ ALLOC_LINK(rela, &relasec->relas); -+ rela->sym = strsym; -+ rela->type = absolute_rela_type; -+ rela->addend = offset_of_string(&kelf->strings, refsym.name); -+ rela->offset = (unsigned int)(index * sizeof(*funcs) + -+ offsetof(struct kpatch_patch_func, ref_name)); -+ +@@ -3032,6 +3032,14 @@ static void kpatch_create_patches_sections(struct kpatch_elf *kelf, + funcs[index].old_size = symbol.size; + funcs[index].new_size = sym->sym.st_size; + funcs[index].sympos = symbol.sympos; ++ if (lookup_is_duplicate_symbol(table, sym->name, objname, symbol.sympos)) { ++ if (!strcmp(objname, "vmlinux")) { ++ symbol.sympos = get_vmlinux_duplicate_symbol_pos(table, sym->name, symbol.addr); ++ log_debug("update %s sympos from %ld to %ld\n", ++ sym->name, funcs[index].sympos, symbol.sympos); ++ funcs[index].sympos = symbol.sympos; + } -+ ++ } - /* - * Add a relocation that will populate -@@ -2772,7 +2795,8 @@ static void kpatch_create_patches_sections(struct kpatch_elf *kelf, - ALLOC_LINK(rela, &relasec->relas); - rela->sym = strsym; - rela->type = absolute_rela_type; -- rela->addend = offset_of_string(&kelf->strings, sym->name); -+ rela->addend = offset_of_string(&kelf->strings, + /* + * Add a relocation that will populate the +@@ -3050,7 +3058,8 @@ static void kpatch_create_patches_sections(struct kpatch_elf *kelf, + ALLOC_LINK(rela, &relasec->relas); + rela->sym = strsym; + rela->type = ABSOLUTE_RELA_TYPE; +- rela->addend = offset_of_string(&kelf->strings, sym->name); ++ rela->addend = offset_of_string(&kelf->strings, + strndup(sym->name, KSYM_NAME_LEN-1)); - rela->offset = (unsigned int)(index * sizeof(*funcs) + - offsetof(struct kpatch_patch_func, name)); + rela->offset = (unsigned int)(index * sizeof(*funcs) + + offsetof(struct kpatch_patch_func, name)); -@@ -2891,6 +2915,7 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, - struct lookup_result result; - char *sym_objname; - int ret, vmlinux, external; +@@ -3274,6 +3283,7 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, + bool special; + bool vmlinux = !strcmp(objname, "vmlinux"); + struct special_section *s; + long ref_offset; - vmlinux = !strcmp(objname, "vmlinux"); - -@@ -3102,12 +3127,32 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, - log_debug("lookup for %s @ 0x%016lx len %lu\n", - rela->sym->name, result.value, result.size); + /* count rela entries that need to be dynamic */ + nr = 0; +@@ -3370,12 +3380,34 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, + rela->sym->name, symbol.objname, + symbol.sympos); + ref_offset = 0; /* Fill in ksyms[index] */ if (vmlinux) - ksyms[index].src = result.value; + ksyms[index].src = symbol.addr; - else + else { /* for modules, src is discovered at runtime */ ksyms[index].src = 0; -+ if (lookup_is_duplicate_symbol(table, rela->sym->name, objname, -+ result.pos)) { -+ struct lookup_refsym refsym; -+ -+ if (lookup_ref_symbol_offset(table, rela->sym->name, -+ &refsym, objname, &ref_offset)) -+ ERROR("unresolvable ambiguity on symbol %s\n", -+ rela->sym->name); -+ -+ /* add rela to fill in ref_name field */ -+ ALLOC_LINK(rela2, &krela_sec->rela->relas); -+ rela2->sym = strsym; -+ rela2->type = absolute_rela_type; -+ rela2->addend = offset_of_string(&kelf->strings, -+ refsym.name); -+ rela2->offset = (unsigned int)(index * sizeof(*krelas) + -+ offsetof(struct kpatch_relocation, ref_name)); -+ } + } - ksyms[index].pos = result.pos; ++ ++ if (lookup_is_duplicate_symbol(table, rela->sym->name, objname, ++ symbol.sympos)) { ++ struct lookup_refsym refsym; ++ ++ if (lookup_ref_symbol_offset(table, rela->sym, ++ &refsym, objname, &ref_offset)) ++ ERROR("unresolvable ambiguity on symbol %s\n", ++ rela->sym->name); ++ ++ /* add rela to fill in ref_name field */ ++ ALLOC_LINK(rela2, &krela_sec->rela->relas); ++ rela2->sym = strsym; ++ rela2->type = ABSOLUTE_RELA_TYPE; ++ rela2->addend = offset_of_string(&kelf->strings, ++ refsym.name); ++ rela2->offset = (unsigned int)(index * sizeof(*krelas) + ++ offsetof(struct kpatch_relocation, ref_name)); ++ } ++ + ksyms[index].sympos = symbol.sympos; ksyms[index].type = rela->sym->type; ksyms[index].bind = rela->sym->bind; -@@ -3116,7 +3161,8 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, +@@ -3384,7 +3416,8 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, ALLOC_LINK(rela2, &ksym_sec->rela->relas); rela2->sym = strsym; - rela2->type = absolute_rela_type; + rela2->type = ABSOLUTE_RELA_TYPE; - rela2->addend = offset_of_string(&kelf->strings, rela->sym->name); + rela2->addend = offset_of_string(&kelf->strings, + strndup(rela->sym->name, KSYM_NAME_LEN-1)); rela2->offset = (unsigned int)(index * sizeof(*ksyms) + \ offsetof(struct kpatch_symbol, name)); -@@ -3135,6 +3181,7 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, +@@ -3403,6 +3436,7 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, krelas[index].addend = rela->addend; krelas[index].type = rela->type; - krelas[index].external = external; + krelas[index].external = !vmlinux && symbol.exported; + krelas[index].ref_offset = ref_offset; /* add rela to fill in krelas[index].dest field */ ALLOC_LINK(rela2, &krela_sec->rela->relas); diff --git a/kpatch-build/create-klp-module.c b/kpatch-build/create-klp-module.c -index a97b146..5b89b73 100644 +index d1b03fe..547e587 100644 --- a/kpatch-build/create-klp-module.c +++ b/kpatch-build/create-klp-module.c @@ -38,7 +38,9 @@ enum loglevel loglevel = NORMAL; @@ -166,11 +153,11 @@ index a97b146..5b89b73 100644 objname = strings + rela->addend; -- snprintf(pos, 32, "%lu", ksym->pos); +- snprintf(pos, 32, "%lu", ksym->sympos); /* .klp.sym.objname.name,pos */ - snprintf(buf, 256, KLP_SYM_PREFIX "%s.%s,%s", objname, name, pos); + if (!ref_name) { -+ snprintf(pos, 32, "%lu", ksym->pos); ++ snprintf(pos, 32, "%lu", ksym->sympos); + snprintf(buf, 256, KLP_SYM_PREFIX "%s.%s,%s", objname, name, pos); + } else { + snprintf(pos, 32, "%ld", ref_offset); @@ -213,10 +200,10 @@ index a97b146..5b89b73 100644 ERROR("error finding or adding ksym to symtab"); diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build -index 4896136..8bef7fb 100755 +index 3aca1f3..722d362 100755 --- a/kpatch-build/kpatch-build +++ b/kpatch-build/kpatch-build -@@ -1015,6 +1015,18 @@ for i in $FILES; do +@@ -1162,6 +1162,18 @@ for i in $FILES; do SYMTAB="${KOBJFILE_PATH}.symtab" SYMVERS_FILE="$SRCDIR/Module.symvers" @@ -224,9 +211,9 @@ index 4896136..8bef7fb 100755 + remove_patches + cd "$SRCDIR" || die + if [ -z "$USERMODBUILDDIR" ];then -+ CROSS_COMPILE="$ARCH_COMPILE" make "-j$CPUS" ${KOBJFILE} 2>&1 | logger || die ++ make "-j$CPUS" $TARGETS 2>&1 | logger || die + else -+ CROSS_COMPILE="$ARCH_COMPILE" make -C "$USERMODBUILDDIR" M="$USERMODBUILDDIR" "-j$CPUS" $USERMODFLAGS $TARGETS 2>&1 | logger || die ++ make -C "$USERMODBUILDDIR" M="$USERMODBUILDDIR" $USERMODFLAGS "-j$CPUS" $TARGETS 2>&1 | logger || die + fi + cp ${KOBJFILE} ${KOBJFILE_PATH} + apply_patches @@ -236,7 +223,7 @@ index 4896136..8bef7fb 100755 BUILDDIR="/lib/modules/$ARCHVERSION/build/" SYMVERS_FILE="$TEMPDIR/Module.symvers" diff --git a/kpatch-build/kpatch-intermediate.h b/kpatch-build/kpatch-intermediate.h -index 7230cd4..5322e7a 100644 +index 2036cb3..2589959 100644 --- a/kpatch-build/kpatch-intermediate.h +++ b/kpatch-build/kpatch-intermediate.h @@ -39,6 +39,8 @@ struct kpatch_relocation { @@ -249,10 +236,10 @@ index 7230cd4..5322e7a 100644 struct kpatch_arch { diff --git a/kpatch-build/lookup.c b/kpatch-build/lookup.c -index 4e2fcb9..1dd183f 100644 +index e81e934..238541c 100644 --- a/kpatch-build/lookup.c +++ b/kpatch-build/lookup.c -@@ -44,6 +44,7 @@ struct object_symbol { +@@ -45,6 +45,7 @@ struct object_symbol { unsigned long size; char *name; int type, bind; @@ -260,18 +247,18 @@ index 4e2fcb9..1dd183f 100644 }; struct export_symbol { -@@ -248,6 +249,7 @@ static void symtab_read(struct lookup_table *table, char *path) +@@ -297,6 +298,7 @@ static void symtab_read(struct lookup_table *table, char *path) - table->obj_syms[i].value = value; + table->obj_syms[i].addr = addr; table->obj_syms[i].size = strtoul(size, NULL, 0); + table->obj_syms[i].sec_index = atoi(ndx); if (!strcmp(bind, "LOCAL")) { table->obj_syms[i].bind = STB_LOCAL; -@@ -398,6 +400,17 @@ int lookup_local_symbol(struct lookup_table *table, char *name, - for_each_obj_symbol(i, sym, table) { - if (sym->bind == STB_LOCAL && !strcmp(sym->name, name)) - pos++; +@@ -457,6 +459,17 @@ static bool lookup_local_symbol(struct lookup_table *table, + if (sym->bind == STB_LOCAL && !strcmp(sym->name, + lookup_sym->name)) + sympos++; + else { + /* + * symbol name longer than KSYM_NAME_LEN will be truncated @@ -279,22 +266,23 @@ index 4e2fcb9..1dd183f 100644 + * name. we need to add pos for symbols which have same + * KSYM_NAME_LEN-1 long prefix. + */ -+ if (strlen(name) >= KSYM_NAME_LEN-1 && -+ !strncmp(sym->name, name, KSYM_NAME_LEN-1)) -+ pos++; ++ if (strlen(lookup_sym->name) >= KSYM_NAME_LEN-1 && ++ !strncmp(sym->name, lookup_sym->name, KSYM_NAME_LEN-1)) ++ sympos++; + } - if (table->local_syms == sym) { + if (lookup_sym->lookup_table_file_sym == sym) { in_file = 1; -@@ -429,16 +442,27 @@ int lookup_global_symbol(struct lookup_table *table, char *name, - struct lookup_result *result) +@@ -527,11 +540,22 @@ static bool lookup_global_symbol(struct lookup_table *table, char *name, { struct object_symbol *sym; -+ unsigned long pos = 0; int i; ++ unsigned long sympos = 0; memset(result, 0, sizeof(*result)); for_each_obj_symbol(i, sym, table) { +-+ if ((sym->bind == STB_GLOBAL || sym->bind == STB_WEAK +-+ || sym->bind == STB_GNU_UNIQUE) && + /* + * symbol name longer than KSYM_NAME_LEN will be truncated + * by kernel, so we can not find it using its original @@ -303,22 +291,27 @@ index 4e2fcb9..1dd183f 100644 + */ + if (strlen(name) >= KSYM_NAME_LEN-1 && + !strncmp(sym->name, name, KSYM_NAME_LEN-1)) -+ pos++; ++ sympos++; + - if ((sym->bind == STB_GLOBAL || sym->bind == STB_WEAK - || sym->bind == STB_GNU_UNIQUE) && ++ if ((sym->bind == STB_GLOBAL || sym->bind == STB_WEAK ++ || sym->bind == STB_GNU_UNIQUE) && !strcmp(sym->name, name)) { - result->value = sym->value; - result->size = sym->size; -- result->pos = 0; /* always 0 for global symbols */ -+ result->pos = pos; - return 0; - } - } -@@ -485,6 +509,109 @@ char *lookup_exported_symbol_objname(struct lookup_table *table, char *name) - return NULL; - } + if (result->objname) +@@ -540,7 +564,7 @@ static bool lookup_global_symbol(struct lookup_table *table, char *name, + result->objname = table->objname; + result->addr = sym->addr; + result->size = sym->size; +- result->sympos = 0; /* always 0 for global symbols */ ++ result->sympos = sympos; + result->global = true; + result->exported = is_exported(table, name); + } +@@ -560,3 +584,132 @@ bool lookup_symbol(struct lookup_table *table, struct symbol *sym, + + return lookup_exported_symbol(table, sym->name, result); + } ++ +int lookup_is_duplicate_symbol(struct lookup_table *table, char *name, + char *objname, unsigned long pos) +{ @@ -349,20 +342,21 @@ index 4e2fcb9..1dd183f 100644 + return 0; +} + -+struct object_symbol *lookup_find_symbol_by_name(struct lookup_table *table, char *name) ++struct object_symbol *lookup_find_symbol(struct lookup_table *table, ++ struct symbol *lookup_sym) +{ + struct object_symbol *sym; + unsigned long pos = 0; + int i, match = 0, in_file = 0; + -+ if (!table->local_syms) ++ if (!lookup_sym->lookup_table_file_sym) + return NULL; + + for_each_obj_symbol(i, sym, table) { -+ if (sym->bind == STB_LOCAL && !strcmp(sym->name, name)) ++ if (sym->bind == STB_LOCAL && !strcmp(sym->name, lookup_sym->name)) + pos++; + -+ if (table->local_syms == sym) { ++ if (lookup_sym->lookup_table_file_sym == sym) { + in_file = 1; + continue; + } @@ -373,7 +367,7 @@ index 4e2fcb9..1dd183f 100644 + if (sym->type == STT_FILE) + break; + -+ if (sym->bind == STB_LOCAL && !strcmp(sym->name, name)) { ++ if (sym->bind == STB_LOCAL && !strcmp(sym->name, lookup_sym->name)) { + match = 1; + break; + } @@ -382,7 +376,7 @@ index 4e2fcb9..1dd183f 100644 + if (!match) { + for_each_obj_symbol(i, sym, table) { + if ((sym->bind == STB_GLOBAL || sym->bind == STB_WEAK) && -+ !strcmp(sym->name, name)) { ++ !strcmp(sym->name, lookup_sym->name)) { + return sym; + } + } @@ -392,29 +386,30 @@ index 4e2fcb9..1dd183f 100644 + return sym; +} + -+int lookup_ref_symbol_offset(struct lookup_table *table, char *name, ++int lookup_ref_symbol_offset(struct lookup_table *table, ++ struct symbol *lookup_sym, + struct lookup_refsym *refsym, + char *objname, long *offset) +{ + struct object_symbol *orig_sym, *sym; + int i; + -+ orig_sym = lookup_find_symbol_by_name(table, name); ++ orig_sym = lookup_find_symbol(table, lookup_sym); + if (!orig_sym) + ERROR("lookup_ref_symbol_offset"); + memset(refsym, 0, sizeof(*refsym)); + + /*find a unique symbol in the same section first*/ + for_each_obj_symbol(i, sym, table) { -+ if (!strcmp(sym->name, name) || sym->type == STT_FILE || ++ if (!strcmp(sym->name, lookup_sym->name) || sym->type == STT_FILE || + sym->sec_index != orig_sym->sec_index || + strchr(sym->name, '.')) + continue; + + if (!lookup_is_duplicate_symbol(table, sym->name, objname, 1)) { + refsym->name = sym->name; -+ refsym->value = sym->value; -+ *offset = (long)orig_sym->value - (long)sym->value; ++ refsym->addr = sym->addr; ++ *offset = (long)orig_sym->addr- (long)sym->addr; + return 0; + } + } @@ -422,46 +417,66 @@ index 4e2fcb9..1dd183f 100644 + return 1; +} + - #if 0 /* for local testing */ - static void find_this(struct lookup_table *table, char *sym, char *hint) - { ++/* ++ * In case sometimes the sympos of duplicate symbols are different in vmlinux and ++ * /proc/kallsyms, and causes lookup_local_symbol to save wrong sympos in result, ++ * this function returns correct sympos of the symbol, by comparing ++ * address value with the symbol in vmlinux symbol table. ++ */ ++unsigned long get_vmlinux_duplicate_symbol_pos(struct lookup_table *table, ++ char *name, unsigned long addr) ++{ ++ struct object_symbol *sym; ++ unsigned long pos = 1; ++ int i; ++ ++ for_each_obj_symbol(i, sym, table) { ++ if (strcmp(sym->name, name)) ++ continue; ++ ++ if (sym->addr < addr) ++ pos++; ++ } ++ ++ return pos; ++} diff --git a/kpatch-build/lookup.h b/kpatch-build/lookup.h -index 420d0f0..6f640fd 100644 +index e1277f1..21aceb4 100644 --- a/kpatch-build/lookup.h +++ b/kpatch-build/lookup.h -@@ -1,6 +1,9 @@ - #ifndef _LOOKUP_H_ - #define _LOOKUP_H_ +@@ -4,6 +4,8 @@ + #include + #include "kpatch-elf.h" -+#include "kpatch-elf.h" +#define KSYM_NAME_LEN 128 + struct lookup_table; struct lookup_result { -@@ -14,6 +17,11 @@ struct sym_compare_type { - int type; +@@ -14,10 +16,23 @@ struct lookup_result { + bool global, exported; }; +struct lookup_refsym { + char *name; -+ unsigned long value; ++ unsigned long addr; +}; + - struct lookup_table *lookup_open(char *symtab_path, char *symvers_path, - char *hint, struct sym_compare_type *locals); + struct lookup_table *lookup_open(char *symtab_path, char *objname, + char *symvers_path, struct kpatch_elf *kelf); void lookup_close(struct lookup_table *table); -@@ -23,5 +31,10 @@ int lookup_global_symbol(struct lookup_table *table, char *name, - struct lookup_result *result); - int lookup_is_exported_symbol(struct lookup_table *table, char *name); - char *lookup_exported_symbol_objname(struct lookup_table *table, char *name); + bool lookup_symbol(struct lookup_table *table, struct symbol *sym, + struct lookup_result *result); +int lookup_is_duplicate_symbol(struct lookup_table *table, char *name, + char *objname, unsigned long pos); -+int lookup_ref_symbol_offset(struct lookup_table *table, char *name, ++int lookup_ref_symbol_offset(struct lookup_table *table, ++ struct symbol *lookup_sym, + struct lookup_refsym *refsym, char *objname, + long *offset); ++unsigned long get_vmlinux_duplicate_symbol_pos(struct lookup_table *table, char *name, ++ unsigned long addr); #endif /* _LOOKUP_H_ */ -- -2.18.1 +2.23.0 diff --git a/0012-Add-running-kernel-symbol-table-to-help-symbol-looku.patch b/0012-Add-running-kernel-symbol-table-to-help-symbol-looku.patch new file mode 100644 index 0000000..b1d280c --- /dev/null +++ b/0012-Add-running-kernel-symbol-table-to-help-symbol-looku.patch @@ -0,0 +1,126 @@ +From 344dfff72d5a2d574d8d7804277bf587af45743d Mon Sep 17 00:00:00 2001 +From: Zhipeng Xie +Date: Wed, 26 Feb 2020 20:28:13 -0500 +Subject: [PATCH 12/24] Add running kernel symbol table to help symbol lookup + +For some duplicate symbols whose section have no other +symbols, we need running kernel symbol table to help +symbol lookup. + +Signed-off-by: Zhipeng Xie +--- + kpatch-build/lookup.c | 73 +++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 73 insertions(+) + +diff --git a/kpatch-build/lookup.c b/kpatch-build/lookup.c +index 238541c..2cdff67 100644 +--- a/kpatch-build/lookup.c ++++ b/kpatch-build/lookup.c +@@ -46,6 +46,7 @@ struct object_symbol { + char *name; + int type, bind; + int sec_index; ++ unsigned long kaddr; + }; + + struct export_symbol { +@@ -409,10 +410,62 @@ static void symvers_read(struct lookup_table *table, char *path) + fclose(file); + } + ++static void ksymtab_read(struct lookup_table *table, char *path) ++{ ++ FILE *file; ++ struct object_symbol *sym, *sym1, *sym2; ++ unsigned long value; ++ int i, j, idx; ++ char line[256], name[256], type[256], mod[256]; ++ ++ idx = 0; ++ file = fopen(path, "r"); ++ if (file == NULL) ++ ERROR("fopen"); ++ ++ while (fgets(line, 256, file)) { ++ if (sscanf(line, "%lx %s %s [%s]\n", ++ &value, type, name, mod) != 4) ++ continue; ++ ++ if (name[0] == '$') ++ continue; ++ ++ i = idx; ++ for_each_obj_symbol_continue(i, sym, table) { ++ if (!strncmp(sym->name, name, KSYM_NAME_LEN-1)) { ++ sym->kaddr = value; ++ idx = i + 1; ++ break; ++ } ++ } ++ } ++ ++ for_each_obj_symbol(i, sym1, table) { ++ if (sym1->kaddr == 0) ++ continue; ++ for_each_obj_symbol(j, sym2, table) { ++ if (sym2->kaddr == 0) ++ continue; ++ if (sym1 == sym2) ++ continue; ++ if (sym1->sec_index != sym2->sec_index) ++ continue; ++ if ((long)sym1->addr - (long)sym2->addr == ++ (long)sym1->kaddr - (long)sym2->kaddr) ++ continue; ++ ++ ERROR("base mismatch(symbol offset)"); ++ } ++ } ++ fclose(file); ++} ++ + struct lookup_table *lookup_open(char *symtab_path, char *objname, + char *symvers_path, struct kpatch_elf *kelf) + { + struct lookup_table *table; ++ char *kallsyms; + + table = malloc(sizeof(*table)); + if (!table) +@@ -422,6 +475,9 @@ struct lookup_table *lookup_open(char *symtab_path, char *objname, + table->objname = objname; + symtab_read(table, symtab_path); + symvers_read(table, symvers_path); ++ kallsyms = getenv("KALLSYMS"); ++ if (kallsyms) ++ ksymtab_read(table, kallsyms); + + find_local_syms_multiple(table, kelf); + +@@ -687,6 +743,23 @@ int lookup_ref_symbol_offset(struct lookup_table *table, + } + } + ++ if (orig_sym->kaddr == 0) ++ return 1; ++ ++ /*find a unique symbol has kaddr*/ ++ for_each_obj_symbol(i, sym, table) { ++ if (!strcmp(sym->name, lookup_sym->name) || sym->type == STT_FILE || ++ sym->kaddr == 0 || strchr(sym->name, '.')) ++ continue; ++ ++ if (!lookup_is_duplicate_symbol(table, sym->name, objname, 1)) { ++ refsym->name = sym->name; ++ refsym->addr = 0; ++ *offset = (long)orig_sym->kaddr - (long)sym->kaddr; ++ return 0; ++ } ++ } ++ + return 1; + } + +-- +2.23.0 + diff --git a/0013-Add-running-kernel-symbol-table-to-help-symbol-looku.patch b/0013-Add-running-kernel-symbol-table-to-help-symbol-looku.patch deleted file mode 100644 index 199b224..0000000 --- a/0013-Add-running-kernel-symbol-table-to-help-symbol-looku.patch +++ /dev/null @@ -1,172 +0,0 @@ -From 5e6c1b2c91af547ad53faafeec20cddaedf7aaa4 Mon Sep 17 00:00:00 2001 -From: Zhipeng Xie -Date: Wed, 26 Feb 2020 20:28:13 -0500 -Subject: [PATCH 13/23] Add running kernel symbol table to help symbol lookup - -For some duplicate symbols whose section have no other -symbols, we need running kernel symbol table to help -symbol lookup. - -Signed-off-by: Zhipeng Xie ---- - kpatch-build/create-diff-object.c | 7 ++- - kpatch-build/lookup.c | 74 ++++++++++++++++++++++++++++++- - kpatch-build/lookup.h | 3 +- - 3 files changed, 81 insertions(+), 3 deletions(-) - -diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index 73c557b..c5320d4 100644 ---- a/kpatch-build/create-diff-object.c -+++ b/kpatch-build/create-diff-object.c -@@ -3597,6 +3597,7 @@ int main(int argc, char *argv[]) - struct sym_compare_type *base_locals, *sym_comp; - char *no_profiling_calls = NULL; - char *gcc_add_option = NULL, *mlongcall = NULL; -+ char *kallsyms; - - arguments.debug = 0; - argp_parse (&argp, argc, argv, 0, NULL, &arguments); -@@ -3710,8 +3711,12 @@ int main(int argc, char *argv[]) - */ - kpatch_elf_teardown(kelf_patched); - -+ kallsyms = getenv("KALLSYMS"); -+ if (kallsyms) -+ log_debug("kallsyms file:%s\n", kallsyms); -+ - /* create symbol lookup table */ -- lookup = lookup_open(parent_symtab, mod_symvers, hint, base_locals); -+ lookup = lookup_open(parent_symtab, mod_symvers, hint, base_locals, kallsyms); - for (sym_comp = base_locals; sym_comp && sym_comp->name; sym_comp++) { - free(sym_comp->name); - } -diff --git a/kpatch-build/lookup.c b/kpatch-build/lookup.c -index 1dd183f..03a5b32 100644 ---- a/kpatch-build/lookup.c -+++ b/kpatch-build/lookup.c -@@ -45,6 +45,7 @@ struct object_symbol { - char *name; - int type, bind; - int sec_index; -+ unsigned long kaddr; - }; - - struct export_symbol { -@@ -284,6 +285,57 @@ static void symtab_read(struct lookup_table *table, char *path) - fclose(file); - } - -+static void ksymtab_read(struct lookup_table *table, char *path) -+{ -+ FILE *file; -+ struct object_symbol *sym, *sym1, *sym2; -+ unsigned long value; -+ int i, j, idx; -+ char line[256], name[256], type[256], mod[256]; -+ -+ idx = 0; -+ file = fopen(path, "r"); -+ if (file == NULL) -+ ERROR("fopen"); -+ -+ while (fgets(line, 256, file)) { -+ if (sscanf(line, "%lx %s %s [%s]\n", -+ &value, type, name, mod) != 4) -+ continue; -+ -+ if (name[0] == '$') -+ continue; -+ -+ i = idx; -+ for_each_obj_symbol_continue(i, sym, table) { -+ if (!strncmp(sym->name, name, KSYM_NAME_LEN-1)) { -+ sym->kaddr = value; -+ idx = i + 1; -+ break; -+ } -+ } -+ } -+ -+ for_each_obj_symbol(i, sym1, table) { -+ if (sym1->kaddr == 0) -+ continue; -+ for_each_obj_symbol(j, sym2, table) { -+ if (sym2->kaddr == 0) -+ continue; -+ if (sym1 == sym2) -+ continue; -+ if (sym1->sec_index != sym2->sec_index) -+ continue; -+ if ((long)sym1->value - (long)sym2->value == -+ (long)sym1->kaddr - (long)sym2->kaddr) -+ continue; -+ -+ ERROR("base mismatch(symbol offset)"); -+ } -+ } -+ fclose(file); -+} -+ - /* - * Symvers file format is the following for kernels v5.3 and newer: - * -@@ -352,7 +404,8 @@ static void symvers_read(struct lookup_table *table, char *path) - } - - struct lookup_table *lookup_open(char *symtab_path, char *symvers_path, -- char *hint, struct sym_compare_type *locals) -+ char *hint, struct sym_compare_type *locals, -+ char *kallsyms) - { - struct lookup_table *table; - -@@ -363,6 +416,8 @@ struct lookup_table *lookup_open(char *symtab_path, char *symvers_path, - - symtab_read(table, symtab_path); - symvers_read(table, symvers_path); -+ if (kallsyms) -+ ksymtab_read(table, kallsyms); - find_local_syms(table, hint, locals); - - return table; -@@ -609,6 +664,23 @@ int lookup_ref_symbol_offset(struct lookup_table *table, char *name, - } - } - -+ if (orig_sym->kaddr == 0) -+ return 1; -+ -+ /*find a unique symbol has kaddr*/ -+ for_each_obj_symbol(i, sym, table) { -+ if (!strcmp(sym->name, name) || sym->type == STT_FILE || -+ sym->kaddr == 0 || strchr(sym->name, '.')) -+ continue; -+ -+ if (!lookup_is_duplicate_symbol(table, sym->name, objname, 1)) { -+ refsym->name = sym->name; -+ refsym->value = 0; -+ *offset = (long)orig_sym->kaddr - (long)sym->kaddr; -+ return 0; -+ } -+ } -+ - return 1; - } - -diff --git a/kpatch-build/lookup.h b/kpatch-build/lookup.h -index 6f640fd..daeea73 100644 ---- a/kpatch-build/lookup.h -+++ b/kpatch-build/lookup.h -@@ -23,7 +23,8 @@ struct lookup_refsym { - }; - - struct lookup_table *lookup_open(char *symtab_path, char *symvers_path, -- char *hint, struct sym_compare_type *locals); -+ char *hint, struct sym_compare_type *locals, -+ char *kallsyms); - void lookup_close(struct lookup_table *table); - int lookup_local_symbol(struct lookup_table *table, char *name, - struct lookup_result *result); --- -2.18.1 - diff --git a/0013-livepatch-patch-hook-support-force-enable-disable.patch b/0013-livepatch-patch-hook-support-force-enable-disable.patch new file mode 100644 index 0000000..1da4701 --- /dev/null +++ b/0013-livepatch-patch-hook-support-force-enable-disable.patch @@ -0,0 +1,154 @@ +From 88d2a5c88fcab0016db9347fbab41a22b9fb9a52 Mon Sep 17 00:00:00 2001 +From: Zhipeng Xie +Date: Wed, 26 Feb 2020 20:43:34 -0500 +Subject: [PATCH 13/24] livepatch-patch-hook: support force enable/disable + +we use force to indicate function which bypass stack check + +Signed-off-by: Zhipeng Xie +--- + kmod/patch/kpatch-patch.h | 1 + + kmod/patch/livepatch-patch-hook.c | 17 +++++++++++++++++ + kpatch-build/kpatch-build | 24 ++++++++++++++++++++---- + 3 files changed, 38 insertions(+), 4 deletions(-) + +diff --git a/kmod/patch/kpatch-patch.h b/kmod/patch/kpatch-patch.h +index 9df7818..6e39364 100644 +--- a/kmod/patch/kpatch-patch.h ++++ b/kmod/patch/kpatch-patch.h +@@ -64,4 +64,5 @@ struct kpatch_post_unpatch_callback { + char *objname; + }; + ++extern unsigned long __kpatch_force_funcs[], __kpatch_force_funcs_end[]; + #endif /* _KPATCH_PATCH_H_ */ +diff --git a/kmod/patch/livepatch-patch-hook.c b/kmod/patch/livepatch-patch-hook.c +index b578ef3..71439d9 100644 +--- a/kmod/patch/livepatch-patch-hook.c ++++ b/kmod/patch/livepatch-patch-hook.c +@@ -432,6 +432,16 @@ extern struct kpatch_patch_func __kpatch_funcs[], __kpatch_funcs_end[]; + extern struct kpatch_patch_dynrela __kpatch_dynrelas[], __kpatch_dynrelas_end[]; + #endif + ++static int patch_is_func_forced(unsigned long addr) ++{ ++ unsigned long *a; ++ ++ for (a = __kpatch_force_funcs; a < __kpatch_force_funcs_end; a++) ++ if (*a == addr) ++ return 1; ++ return 0; ++} ++ + static int __init patch_init(void) + { + struct kpatch_patch_func *kfunc; +@@ -520,6 +530,13 @@ static int __init patch_init(void) + lfunc = &lfuncs[j]; + lfunc->old_name = func->kfunc->name; + lfunc->new_func = (void *)func->kfunc->new_addr; ++#if defined(__KLP_SUPPORT_FORCE__) ++#ifdef __ALL_FORCE__ ++ lfunc->force = 1; ++#else ++ lfunc->force = patch_is_func_forced(func->kfunc->new_addr); ++#endif ++#endif + #ifdef HAVE_SYMPOS + lfunc->old_sympos = func->kfunc->sympos; + #else +diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build +index 722d362..9a98bfc 100755 +--- a/kpatch-build/kpatch-build ++++ b/kpatch-build/kpatch-build +@@ -383,28 +383,32 @@ find_special_section_data_aarch64() { + # shellcheck disable=SC2086 + SPECIAL_VARS="$(readelf -wi "$VMLINUX" | + gawk --non-decimal-data $AWK_OPTIONS ' +- BEGIN { a = b = e = j = 0 } ++ BEGIN { a = b = e = j = c = f = 0 } + + # Set state if name matches + a == 0 && /DW_AT_name.* alt_instr[[:space:]]*$/ {a = 1; next} + b == 0 && /DW_AT_name.* bug_entry[[:space:]]*$/ {b = 1; next} + e == 0 && /DW_AT_name.* exception_table_entry[[:space:]]*$/ {e = 1; next} + j == 0 && /DW_AT_name.* jump_entry[[:space:]]*$/ {j = 1; next} ++ c == 0 && /DW_AT_name.* klp_func[[:space:]]*$/ {c = 1; next} + + # Reset state unless this abbrev describes the struct size + a == 1 && !/DW_AT_byte_size/ { a = 0; next } + b == 1 && !/DW_AT_byte_size/ { b = 0; next } + e == 1 && !/DW_AT_byte_size/ { e = 0; next } + j == 1 && !/DW_AT_byte_size/ { j = 0; next } ++ c == 1 && /DW_TAG_structure_type/ { c = 3; next } ++ c == 1 && /DW_AT_name.* force[[:space:]]*$/ {f = 2; next} + + # Now that we know the size, stop parsing for it + a == 1 {printf("export ALT_STRUCT_SIZE=%d\n", $4); a = 2} + b == 1 {printf("export BUG_STRUCT_SIZE=%d\n", $4); b = 2} + e == 1 {printf("export EX_STRUCT_SIZE=%d\n", $4); e = 2} + j == 1 {printf("export JUMP_STRUCT_SIZE=%d\n", $4); j = 2} ++ f == 2 {printf("export KLP_SUPPORT_FORCE=y\n"); f = 3} + + # Bail out once we have everything +- a == 2 && b == 2 && e == 2 && (j == 2 || skip_j) {exit}')" ++ a == 2 && b == 2 && e == 2 && (j == 2 || skip_j) && c == 3 {exit}')" + + [[ -n "$SPECIAL_VARS" ]] && eval "$SPECIAL_VARS" + +@@ -437,7 +441,7 @@ find_special_section_data() { + # shellcheck disable=SC2086 + SPECIAL_VARS="$(readelf -wi "$VMLINUX" | + gawk --non-decimal-data $AWK_OPTIONS ' +- BEGIN { a = b = p = e = o = j = s = i = 0 } ++ BEGIN { a = b = p = e = o = j = s = i = c = f = 0 } + + # Set state if name matches + a == 0 && /DW_AT_name.* alt_instr[[:space:]]*$/ {a = 1; next} +@@ -448,6 +452,7 @@ find_special_section_data() { + j == 0 && /DW_AT_name.* jump_entry[[:space:]]*$/ {j = 1; next} + s == 0 && /DW_AT_name.* static_call_site[[:space:]]*$/ {s = 1; next} + i == 0 && /DW_AT_name.* pi_entry[[:space:]]*$/ {i = 1; next} ++ c == 0 && /DW_AT_name.* klp_func[[:space:]]*$/ {c = 1; next} + + # Reset state unless this abbrev describes the struct size + a == 1 && !/DW_AT_byte_size/ { a = 0; next } +@@ -458,6 +463,8 @@ find_special_section_data() { + j == 1 && !/DW_AT_byte_size/ { j = 0; next } + s == 1 && !/DW_AT_byte_size/ { s = 0; next } + i == 1 && !/DW_AT_byte_size/ { i = 0; next } ++ c == 1 && /DW_TAG_structure_type/ { c = 3; next } ++ c == 1 && /DW_AT_name.* force[[:space:]]*$/ {f = 2; next} + + # Now that we know the size, stop parsing for it + a == 1 {printf("export ALT_STRUCT_SIZE=%d\n", $4); a = 2} +@@ -468,9 +475,10 @@ find_special_section_data() { + j == 1 {printf("export JUMP_STRUCT_SIZE=%d\n", $4); j = 2} + s == 1 {printf("export STATIC_CALL_STRUCT_SIZE=%d\n", $4); s = 2} + i == 1 {printf("export PRINTK_INDEX_STRUCT_SIZE=%d\n", $4); i = 2} ++ f == 2 {printf("export KLP_SUPPORT_FORCE=y\n"); f = 3} + + # Bail out once we have everything +- a == 2 && b == 2 && (p == 2 || skip_p) && e == 2 && (o == 2 || skip_o) && (j == 2 || skip_j) && (s == 2 || skip_s) && (i == 2 || skip_i) {exit}')" ++ a == 2 && b == 2 && (p == 2 || skip_p) && e == 2 && (o == 2 || skip_o) && (j == 2 || skip_j) && (s == 2 || skip_s) && (i == 2 || skip_i) && c == 3 {exit}')" + + [[ -n "$SPECIAL_VARS" ]] && eval "$SPECIAL_VARS" + +@@ -1231,6 +1239,14 @@ if [[ -n "$DISABLE_AFTER_LOAD" ]];then + export KCPPFLAGS="-DDISABLE_AFTER_LOAD $KCPPFLAGS" + fi + ++if [[ -n "$NO_STACK_CHECK" ]];then ++ export KCPPFLAGS="-D__ALL_FORCE__ $KCPPFLAGS" ++fi ++ ++if [[ -n "$KLP_SUPPORT_FORCE" ]];then ++ export KCPPFLAGS="-D__KLP_SUPPORT_FORCE__ $KCPPFLAGS" ++fi ++ + save_env + + echo "Building patch module: $MODNAME.ko" +-- +2.23.0 + diff --git a/0015-kpatch-build-ignore-debuginfo-in-patch.patch b/0014-kpatch-build-ignore-debuginfo-in-patch.patch similarity index 67% rename from 0015-kpatch-build-ignore-debuginfo-in-patch.patch rename to 0014-kpatch-build-ignore-debuginfo-in-patch.patch index 94f31ca..423827f 100644 --- a/0015-kpatch-build-ignore-debuginfo-in-patch.patch +++ b/0014-kpatch-build-ignore-debuginfo-in-patch.patch @@ -1,7 +1,7 @@ -From 48fef6d7eceb336816e45690d43093f8be919315 Mon Sep 17 00:00:00 2001 +From d28c18b094c18118427eadb4c63ab73cf64af4e6 Mon Sep 17 00:00:00 2001 From: Zhipeng Xie Date: Wed, 26 Feb 2020 21:01:02 -0500 -Subject: [PATCH 15/23] kpatch-build: ignore debuginfo in patch +Subject: [PATCH 14/24] kpatch-build: ignore debuginfo in patch Just ignore all .debug_* sections @@ -12,10 +12,10 @@ Signed-off-by: Zhipeng Xie 2 files changed, 19 insertions(+) diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index c5320d4..bc3685b 100644 +index ea1e01b..8c5af6b 100644 --- a/kpatch-build/create-diff-object.c +++ b/kpatch-build/create-diff-object.c -@@ -2414,6 +2414,23 @@ static void kpatch_include_debug_sections(struct kpatch_elf *kelf) +@@ -2714,6 +2714,23 @@ static void kpatch_include_debug_sections(struct kpatch_elf *kelf) } } @@ -39,26 +39,26 @@ index c5320d4..bc3685b 100644 static void kpatch_mark_ignored_sections(struct kpatch_elf *kelf) { struct section *sec, *strsec, *ignoresec; -@@ -3682,6 +3699,7 @@ int main(int argc, char *argv[]) +@@ -3908,6 +3925,7 @@ int main(int argc, char *argv[]) new_globals_exist = kpatch_include_new_globals(kelf_patched); kpatch_include_new_static_var(kelf_patched); kpatch_include_debug_sections(kelf_patched); + kpatch_ignore_debug_sections(kelf_patched); - kpatch_process_special_sections(kelf_patched); + kpatch_process_special_sections(kelf_patched, lookup); diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build -index 57487b1..c109ee3 100755 +index 9a98bfc..a0d8ba8 100755 --- a/kpatch-build/kpatch-build +++ b/kpatch-build/kpatch-build -@@ -1143,6 +1143,7 @@ KBUILD_EXTRA_SYMBOLS="$KBUILD_EXTRA_SYMBOLS" \ - KPATCH_LDFLAGS="$KPATCH_LDFLAGS" \ - CROSS_COMPILE="$ARCH_COMPILE" \ - make 2>&1 | logger || die -+${ARCH_COMPILE}strip -g "$TEMPDIR/patch/$MODNAME.ko" +@@ -1295,6 +1295,7 @@ KPATCH_LDFLAGS="$KPATCH_LDFLAGS" + save_env - if ! "$KPATCH_MODULE"; then - if [[ -z "$KPATCH_LDFLAGS" ]]; then + make "${MAKEVARS[@]}" 2>&1 | logger || die ++strip -g "$TEMPDIR/patch/$MODNAME.ko" + + if [[ "$USE_KLP" -eq 1 ]]; then + if [[ "$USE_KLP_ARCH" -eq 0 ]]; then -- -2.18.1 +2.23.0 diff --git a/0014-livepatch-patch-hook-support-force-enable-disable.patch b/0014-livepatch-patch-hook-support-force-enable-disable.patch deleted file mode 100644 index 6ffc163..0000000 --- a/0014-livepatch-patch-hook-support-force-enable-disable.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 62e9cb43c324c933b2934ce9d2923097b96dab1e Mon Sep 17 00:00:00 2001 -From: Zhipeng Xie -Date: Wed, 26 Feb 2020 20:43:34 -0500 -Subject: [PATCH 14/23] livepatch-patch-hook: support force enable/disable - -we use force to indicate function which bypass stack check - -Signed-off-by: Zhipeng Xie ---- - kmod/patch/kpatch-patch.h | 1 + - kmod/patch/livepatch-patch-hook.c | 18 ++++++++++++++++++ - kpatch-build/kpatch-build | 4 ++++ - 3 files changed, 23 insertions(+) - -diff --git a/kmod/patch/kpatch-patch.h b/kmod/patch/kpatch-patch.h -index 9df7818..6e39364 100644 ---- a/kmod/patch/kpatch-patch.h -+++ b/kmod/patch/kpatch-patch.h -@@ -64,4 +64,5 @@ struct kpatch_post_unpatch_callback { - char *objname; - }; - -+extern unsigned long __kpatch_force_funcs[], __kpatch_force_funcs_end[]; - #endif /* _KPATCH_PATCH_H_ */ -diff --git a/kmod/patch/livepatch-patch-hook.c b/kmod/patch/livepatch-patch-hook.c -index fb23a94..5a0de7f 100644 ---- a/kmod/patch/livepatch-patch-hook.c -+++ b/kmod/patch/livepatch-patch-hook.c -@@ -239,6 +239,17 @@ extern struct kpatch_post_patch_callback __kpatch_callbacks_post_patch[], __kpat - extern struct kpatch_pre_unpatch_callback __kpatch_callbacks_pre_unpatch[], __kpatch_callbacks_pre_unpatch_end[]; - extern struct kpatch_post_unpatch_callback __kpatch_callbacks_post_unpatch[], __kpatch_callbacks_post_unpatch_end[]; - -+static int patch_is_func_forced(unsigned long addr) -+{ -+ unsigned long *a; -+ -+ for (a = __kpatch_force_funcs; a < __kpatch_force_funcs_end; a++) -+ if (*a == addr) -+ return 1; -+ return 0; -+} -+ -+ - #ifdef HAVE_CALLBACKS - static int add_callbacks_to_patch_objects(void) - { -@@ -403,6 +414,13 @@ static int __init patch_init(void) - lfunc = &lfuncs[j]; - lfunc->old_name = func->kfunc->name; - lfunc->new_func = (void *)func->kfunc->new_addr; -+#if defined(__KLP_SUPPORT_FORCE__) -+#ifdef __ALL_FORCE__ -+ lfunc->force = 1; -+#else -+ lfunc->force = patch_is_func_forced(func->kfunc->new_addr); -+#endif -+#endif - #ifdef HAVE_SYMPOS - lfunc->old_sympos = func->kfunc->sympos; - #else -diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build -index 8bef7fb..57487b1 100755 ---- a/kpatch-build/kpatch-build -+++ b/kpatch-build/kpatch-build -@@ -1079,6 +1079,10 @@ if "$KPATCH_MODULE"; then - export KCPPFLAGS="-D__KPATCH_MODULE__" - fi - -+if [[ -n "$NO_STACK_CHECK" ]];then -+ export KCPPFLAGS="-D__ALL_FORCE__ $KCPPFLAGS" -+fi -+ - if [[ -n "$KLP_SUPPORT_FORCE" ]];then - export KCPPFLAGS="-D__KLP_SUPPORT_FORCE__ $KCPPFLAGS" - fi --- -2.18.1 - diff --git a/0016-add-object-in-kpatch.patch b/0015-add-object-in-kpatch.patch similarity index 70% rename from 0016-add-object-in-kpatch.patch rename to 0015-add-object-in-kpatch.patch index f907d2a..c6950f2 100644 --- a/0016-add-object-in-kpatch.patch +++ b/0015-add-object-in-kpatch.patch @@ -1,7 +1,7 @@ -From 24392c6f62e26afb192992808772bd19ceab5446 Mon Sep 17 00:00:00 2001 +From 8341b9ea6b889a887577772f6adfb49e1fea1bc1 Mon Sep 17 00:00:00 2001 From: Bin Yang Date: Tue, 16 Jul 2019 14:39:27 +0800 -Subject: [PATCH 16/23] add object in kpatch +Subject: [PATCH 15/24] add object in kpatch it is required by make_hotpatch users @@ -11,10 +11,10 @@ Signed-off-by: Bin Yang 1 file changed, 3 insertions(+) diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build -index c109ee3..de448dc 100755 +index a0d8ba8..c21f3ca 100755 --- a/kpatch-build/kpatch-build +++ b/kpatch-build/kpatch-build -@@ -1071,6 +1071,8 @@ echo -n "Patched objects:" +@@ -1227,6 +1227,8 @@ echo -n "Patched objects:" for i in $(echo "${objnames[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' ') do echo -n " $i" @@ -23,14 +23,14 @@ index c109ee3..de448dc 100755 done echo -@@ -1177,6 +1179,7 @@ UNDEFINED=$(comm -23 <(sort -u "${TEMPDIR}"/undefined_references) \ +@@ -1353,6 +1355,7 @@ UNDEFINED=$(comm -23 <(sort -u "${TEMPDIR}"/undefined_references) \ [[ -z "$USERMODBUILDDIR" ]] && [[ -n "$UNDEFINED" ]] && die "Undefined symbols: $UNDEFINED" cp -f "$TEMPDIR/patch/$MODNAME.ko" "$BASE" || die +cp -f "$TEMPDIR/patch/object" "$BASE" || die - [[ "$DEBUG" -eq 0 ]] && rm -f "$LOGFILE" + [[ "$DEBUG" -eq 0 && "$SKIPCLEANUP" -eq 0 ]] && rm -f "$LOGFILE" -- -2.18.1 +2.23.0 diff --git a/0017-create-diff-object-fix-.orc_unwind_ip-error.patch b/0016-create-diff-object-fix-.orc_unwind_ip-error.patch similarity index 51% rename from 0017-create-diff-object-fix-.orc_unwind_ip-error.patch rename to 0016-create-diff-object-fix-.orc_unwind_ip-error.patch index be975d2..bfbfc70 100644 --- a/0017-create-diff-object-fix-.orc_unwind_ip-error.patch +++ b/0016-create-diff-object-fix-.orc_unwind_ip-error.patch @@ -1,7 +1,7 @@ -From a1d89dc3ab47d443e879d4553a9ff80e8b82a3ab Mon Sep 17 00:00:00 2001 +From 2dab7f74fecefab38fbd9c2d171e5a6090e66829 Mon Sep 17 00:00:00 2001 From: Zhipeng Xie Date: Thu, 27 Feb 2020 15:36:55 -0500 -Subject: [PATCH 17/23] create-diff-object: fix .orc_unwind_ip error +Subject: [PATCH 16/24] create-diff-object: fix .orc_unwind_ip error error: .orc_unwind_ip section header details differ from .orc_unwind_ip @@ -14,29 +14,29 @@ Signed-off-by: Zhipeng Xie 1 file changed, 6 insertions(+) diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index bc3685b..20213a0 100644 +index 8c5af6b..5f51034 100644 --- a/kpatch-build/create-diff-object.c +++ b/kpatch-build/create-diff-object.c -@@ -975,6 +975,9 @@ static void kpatch_correlate_sections(struct list_head *seclist1, struct list_he +@@ -1079,6 +1079,9 @@ static void kpatch_correlate_sections(struct list_head *seclist_orig, continue; } -+ if (strstr(sec1->name, ".orc_unwind")) ++ if (strstr(sec_orig->name, ".orc_unwind")) + continue; + - kpatch_correlate_section(sec1, sec2); + kpatch_correlate_section(sec_orig, sec_patched); break; } -@@ -1020,6 +1023,9 @@ static void kpatch_correlate_symbols(struct list_head *symlist1, struct list_hea - sym1->sec->twin != sym2->sec) +@@ -1125,6 +1128,9 @@ static void kpatch_correlate_symbols(struct list_head *symlist_orig, + sym_orig->sec->twin != sym_patched->sec) continue; -+ if (strstr(sym1->name, ".orc_unwind")) ++ if (strstr(sym_orig->name, ".orc_unwind")) + continue; + - kpatch_correlate_symbol(sym1, sym2); + kpatch_correlate_symbol(sym_orig, sym_patched); break; } -- -2.18.1 +2.23.0 diff --git a/0017-create-diff-object-add-jump-label-support.patch b/0017-create-diff-object-add-jump-label-support.patch new file mode 100644 index 0000000..30aebe6 --- /dev/null +++ b/0017-create-diff-object-add-jump-label-support.patch @@ -0,0 +1,67 @@ +From 78a04dd5a2a98e6442441b802e1f4aa017fae87a Mon Sep 17 00:00:00 2001 +From: Zhipeng Xie +Date: Mon, 2 Mar 2020 04:35:07 -0500 +Subject: [PATCH 17/24] create-diff-object: add jump label support + +This patch processes the __jump_table special section, and +only the jump_lable used by the changed functions will be +included in __jump_table section and solve this limitation. +(The livepatch in kernel should also be modified that processing +the tracepoint again after the dynamic relocation by livepatch.) + +Signed-off-by: Zhipeng Xie +--- + kpatch-build/create-diff-object.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c +index 5f51034..6b915ae 100644 +--- a/kpatch-build/create-diff-object.c ++++ b/kpatch-build/create-diff-object.c +@@ -79,6 +79,7 @@ enum subsection { + enum loglevel loglevel = NORMAL; + + bool KLP_ARCH; ++char *KEEP_JUMP_LABEL = NULL; + + /******************* + * Data structures +@@ -2374,6 +2375,8 @@ static bool should_keep_jump_label(struct lookup_table *lookup, + if (tracepoint || dynamic_debug) + return false; + ++ if (KEEP_JUMP_LABEL) ++ return true; + /* + * This will be upgraded to an error after all jump labels have + * been reported. +@@ -2404,6 +2407,8 @@ static bool should_keep_jump_label(struct lookup_table *lookup, + if (tracepoint || dynamic_debug) + return false; + ++ if (KEEP_JUMP_LABEL) ++ return true; + /* + * This will be upgraded to an error after all jump labels have + * been reported. +@@ -2972,8 +2977,7 @@ static void kpatch_process_special_sections(struct kpatch_elf *kelf, + * labels and enable tracepoints in a patched function. + */ + list_for_each_entry(sec, &kelf->sections, list) { +- if (strcmp(sec->name, "__jump_table") && +- strcmp(sec->name, "__tracepoints") && ++ if (strcmp(sec->name, "__tracepoints") && + strcmp(sec->name, "__tracepoints_ptrs") && + strcmp(sec->name, "__tracepoints_strings")) + continue; +@@ -3865,6 +3869,7 @@ int main(int argc, char *argv[]) + char *parent_symtab, *mod_symvers, *patch_name, *output_obj; + char *no_profiling_calls = NULL; + ++ KEEP_JUMP_LABEL = getenv("KEEP_JUMP_LABEL"); + memset(&arguments, 0, sizeof(arguments)); + argp_parse (&argp, argc, argv, 0, NULL, &arguments); + if (arguments.debug) +-- +2.23.0 + diff --git a/0020-kpatch-build-add-compile-flag-fno-reorder-functions.patch b/0018-kpatch-build-add-compile-flag-fno-reorder-functions.patch similarity index 81% rename from 0020-kpatch-build-add-compile-flag-fno-reorder-functions.patch rename to 0018-kpatch-build-add-compile-flag-fno-reorder-functions.patch index 0e15c9f..59b2301 100644 --- a/0020-kpatch-build-add-compile-flag-fno-reorder-functions.patch +++ b/0018-kpatch-build-add-compile-flag-fno-reorder-functions.patch @@ -1,7 +1,7 @@ -From 586dcb3d2ccd8e45c78d3d140f0190ab5a78ecb3 Mon Sep 17 00:00:00 2001 +From 46a24818a2227ad1b6f644c2499415021522ce55 Mon Sep 17 00:00:00 2001 From: Zhipeng Xie Date: Thu, 12 Mar 2020 06:56:21 -0400 -Subject: [PATCH 20/23] kpatch-build: add compile flag -fno-reorder-functions +Subject: [PATCH 18/24] kpatch-build: add compile flag -fno-reorder-functions Sometimes function foo with static variables can be put in .text.foo section in original binary and be put in @@ -23,18 +23,18 @@ Signed-off-by: Zhipeng Xie 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build -index de448dc..ad7ab71 100755 +index c21f3ca..2ead6e4 100755 --- a/kpatch-build/kpatch-build +++ b/kpatch-build/kpatch-build -@@ -887,7 +887,7 @@ if [[ "$ARCH" = "ppc64le" ]]; then +@@ -994,7 +994,7 @@ if [[ "$ARCH" = "ppc64le" ]]; then ARCH_KCFLAGS="-mcmodel=large -fplugin=$PLUGINDIR/ppc64le-plugin.so" fi -export KCFLAGS="-I$DATADIR/patch -ffunction-sections -fdata-sections \ -+export KCFLAGS="-I$DATADIR/patch -ffunction-sections -fdata-sections -fno-reorder-functions\ - $ARCH_KCFLAGS $DEBUG_KCFLAGS ${GCC_ADD_OPTION}" ++export KCFLAGS="-I$DATADIR/patch -ffunction-sections -fdata-sections -fno-reorder-functions \ + $ARCH_KCFLAGS $DEBUG_KCFLAGS" echo "Reading special section data" -- -2.18.1 +2.23.0 diff --git a/0018-use-original-reloc-for-symbols-from-modules.patch b/0018-use-original-reloc-for-symbols-from-modules.patch deleted file mode 100644 index 7444cbc..0000000 --- a/0018-use-original-reloc-for-symbols-from-modules.patch +++ /dev/null @@ -1,33 +0,0 @@ -From f162056f0448e676345e3205ef4b190f81b51295 Mon Sep 17 00:00:00 2001 -From: Zhipeng Xie -Date: Thu, 12 Mar 2020 05:10:55 -0400 -Subject: [PATCH 18/23] use original reloc for symbols from modules - -symbols exported in a patch will generate a symbol version with -object module name in Module.symvers, but the symbol is actually -in patch module which cause livepatch symbol lookup failed. - -Signed-off-by: Zhipeng Xie ---- - kpatch-build/create-diff-object.c | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index 20213a0..457d517 100644 ---- a/kpatch-build/create-diff-object.c -+++ b/kpatch-build/create-diff-object.c -@@ -3141,10 +3141,8 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, - if (!strcmp(sym_objname, "vmlinux")) - continue; - -- if (!strcmp(sym_objname, objname)) -- continue; -- - external = 1; -+ continue; - } - } - log_debug("lookup for %s @ 0x%016lx len %lu\n", --- -2.18.1 - diff --git a/0025-Fix-relocation-not-resolved-when-new-functions-expor.patch b/0019-Fix-relocation-not-resolved-when-new-functions-expor.patch similarity index 79% rename from 0025-Fix-relocation-not-resolved-when-new-functions-expor.patch rename to 0019-Fix-relocation-not-resolved-when-new-functions-expor.patch index 670a5ba..4005ee1 100644 --- a/0025-Fix-relocation-not-resolved-when-new-functions-expor.patch +++ b/0019-Fix-relocation-not-resolved-when-new-functions-expor.patch @@ -1,7 +1,8 @@ -From 737ab3efcde45cde5fbe43ee977fc18b6912f356 Mon Sep 17 00:00:00 2001 +From 47a9749d381f02868b4f4bbe1bc841f3f38ac1a1 Mon Sep 17 00:00:00 2001 From: Zhipeng Xie Date: Sun, 22 Nov 2020 21:40:39 +0800 -Subject: [PATCH] Fix relocation not resolved when new functions exported only +Subject: [PATCH 19/24] Fix relocation not resolved when new functions exported + only When no functions changed and new functions exported, kobject is not created, so livepatch will not call klp_init_object and relocation @@ -12,8 +13,8 @@ Signed-off-by: Zhipeng Xie kmod/patch/kpatch-patch.h | 4 ++++ kmod/patch/kpatch.lds.S | 6 ++++++ kmod/patch/livepatch-patch-hook.c | 19 +++++++++++++++++++ - kpatch-build/create-diff-object.c | 24 ++++++++++++++++++++++++ - 4 files changed, 53 insertions(+) + kpatch-build/create-diff-object.c | 26 ++++++++++++++++++++++++++ + 4 files changed, 55 insertions(+) diff --git a/kmod/patch/kpatch-patch.h b/kmod/patch/kpatch-patch.h index 6e39364..33f2056 100644 @@ -46,10 +47,10 @@ index bc5de82..4c4d77b 100644 + } } diff --git a/kmod/patch/livepatch-patch-hook.c b/kmod/patch/livepatch-patch-hook.c -index 5a0de7f..d3fb1db 100644 +index 71439d9..9e56fe3 100644 --- a/kmod/patch/livepatch-patch-hook.c +++ b/kmod/patch/livepatch-patch-hook.c -@@ -249,6 +249,22 @@ static int patch_is_func_forced(unsigned long addr) +@@ -442,6 +442,22 @@ static int patch_is_func_forced(unsigned long addr) return 0; } @@ -69,10 +70,10 @@ index 5a0de7f..d3fb1db 100644 + return 0; +} + - - #ifdef HAVE_CALLBACKS - static int add_callbacks_to_patch_objects(void) -@@ -382,6 +398,9 @@ static int __init patch_init(void) + static int __init patch_init(void) + { + struct kpatch_patch_func *kfunc; +@@ -485,6 +501,9 @@ static int __init patch_init(void) if (ret) goto out; @@ -83,10 +84,10 @@ index 5a0de7f..d3fb1db 100644 ret = -ENOMEM; diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index fca68b8..bea758e 100644 +index 6b915ae..0bef022 100644 --- a/kpatch-build/create-diff-object.c +++ b/kpatch-build/create-diff-object.c -@@ -2553,6 +2553,27 @@ static void kpatch_create_kpatch_arch_section(struct kpatch_elf *kelf, char *obj +@@ -2916,6 +2916,27 @@ static void kpatch_create_kpatch_arch_section(struct kpatch_elf *kelf, char *obj karch_sec->sh.sh_size = karch_sec->data->d_size; } @@ -106,24 +107,26 @@ index fca68b8..bea758e 100644 + /* entries[index].objname */ + ALLOC_LINK(rela, &kobj_sec->rela->relas); + rela->sym = strsym; -+ rela->type = absolute_rela_type; ++ rela->type = ABSOLUTE_RELA_TYPE; + rela->addend = offset_of_string(&kelf->strings, objname); + rela->offset = (unsigned int)(offsetof(struct kpatch_object, objname)); +} + - static void kpatch_process_special_sections(struct kpatch_elf *kelf) + static void kpatch_process_special_sections(struct kpatch_elf *kelf, + struct lookup_table *lookup) { - struct special_section *special; -@@ -3710,6 +3731,9 @@ int main(int argc, char *argv[]) +@@ -3973,6 +3994,11 @@ int main(int argc, char *argv[]) kpatch_create_intermediate_sections(kelf_out, lookup, parent_name, patch_name); kpatch_create_kpatch_arch_section(kelf_out, parent_name); kpatch_create_callbacks_objname_rela(kelf_out, parent_name); ++ + if (!num_changed && new_globals_exist) { -+ kpatch_create_kpatch_object_section(kelf_out, parent_name); ++ kpatch_create_kpatch_object_section(kelf_out, parent_name); + } ++ kpatch_build_strings_section_data(kelf_out); - gcc_add_option = getenv("GCC_ADD_OPTION"); + kpatch_create_mcount_sections(kelf_out); -- -2.18.1 +2.23.0 diff --git a/0019-create-diff-object-add-jump-label-support.patch b/0019-create-diff-object-add-jump-label-support.patch deleted file mode 100644 index 931c9b7..0000000 --- a/0019-create-diff-object-add-jump-label-support.patch +++ /dev/null @@ -1,91 +0,0 @@ -From c0b20224cf1b081fba152cb4944d762515561d89 Mon Sep 17 00:00:00 2001 -From: Zhipeng Xie -Date: Mon, 2 Mar 2020 04:35:07 -0500 -Subject: [PATCH 19/23] create-diff-object: add jump label support - -This patch processes the __jump_table special section, and -only the jump_lable used by the changed functions will be -included in __jump_table section and solve this limitation. -(The livepatch in kernel should also be modified that processing -the tracepoint again after the dynamic relocation by livepatch.) - -Signed-off-by: Zhipeng Xie ---- - kpatch-build/create-diff-object.c | 47 +------------------------------ - 1 file changed, 1 insertion(+), 46 deletions(-) - -diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index 457d517..4fa4488 100644 ---- a/kpatch-build/create-diff-object.c -+++ b/kpatch-build/create-diff-object.c -@@ -2140,7 +2140,6 @@ static void kpatch_regenerate_special_section(struct kpatch_elf *kelf, - struct rela *rela, *safe; - char *src, *dest; - unsigned int group_size, src_offset, dest_offset, include; -- int jump_table = !strcmp(special->name, "__jump_table"); - - LIST_HEAD(newrelas); - -@@ -2180,49 +2179,6 @@ static void kpatch_regenerate_special_section(struct kpatch_elf *kelf, - if (!include) - continue; - -- /* -- * Jump labels (aka static keys or static branches) aren't -- * actually supported for the time being. Warn on all -- * non-tracepoint jump labels when they occur in a replacement -- * function. An inert tracepoint is harmless enough, but a -- * broken static key can cause unexpected behavior. -- * -- * Here we hard-code knowledge about the contents of the -- * jump_label struct. It has three fields: code, target, and -- * key. -- */ -- if (jump_table) { -- struct rela *code, *key; -- int i = 0; -- -- list_for_each_entry(rela, &sec->relas, list) { -- if (rela->offset >= src_offset && -- rela->offset < src_offset + group_size) { -- if (i == 0) -- code = rela; -- else if (i == 2) -- key = rela; -- i++; -- } -- } -- -- if (i != 3) -- ERROR("BUG: __jump_table has an unexpected format"); -- -- /* inert tracepoints are harmless */ -- if (!strncmp(key->sym->name, "__tracepoint_", 13)) -- continue; -- -- /* inert dynamic debug printks are harmless */ -- if (is_dynamic_debug_symbol(key->sym)) -- continue; -- -- ERROR("Found a jump label at %s()+0x%lx, using key %s. Jump labels aren't currently supported. Use static_key_enabled() instead.", -- code->sym->name, code->addend, key->sym->name); -- -- continue; -- } -- - /* - * Copy all relas in the group. It's possible that the relas - * aren't sorted (e.g. .rela.fixup), so go through the entire -@@ -2659,8 +2615,7 @@ static void kpatch_process_special_sections(struct kpatch_elf *kelf) - * jump labels and enable tracepoints in a patched function. - */ - list_for_each_entry(sec, &kelf->sections, list) { -- if (strcmp(sec->name, "__jump_table") && -- strcmp(sec->name, "__tracepoints") && -+ if (strcmp(sec->name, "__tracepoints") && - strcmp(sec->name, "__tracepoints_ptrs") && - strcmp(sec->name, "__tracepoints_strings")) - continue; --- -2.18.1 - diff --git a/0026-support-remove-static-variables-using-KPATCH_IGNORE_.patch b/0020-support-remove-static-variables-using-KPATCH_IGNORE_.patch similarity index 76% rename from 0026-support-remove-static-variables-using-KPATCH_IGNORE_.patch rename to 0020-support-remove-static-variables-using-KPATCH_IGNORE_.patch index a6b1270..7b19d99 100644 --- a/0026-support-remove-static-variables-using-KPATCH_IGNORE_.patch +++ b/0020-support-remove-static-variables-using-KPATCH_IGNORE_.patch @@ -1,7 +1,8 @@ -From 0e08aa99583573953367d5c1ec21901325c7faee Mon Sep 17 00:00:00 2001 +From a81f64c1eae14f2b0da8168ca60b3d9beb0a9fb0 Mon Sep 17 00:00:00 2001 From: Zhipeng Xie Date: Wed, 30 Dec 2020 21:13:10 -0500 -Subject: [PATCH] support remove static variables using KPATCH_IGNORE_STATIC +Subject: [PATCH 20/24] support remove static variables using + KPATCH_IGNORE_STATIC Static variables will be removed due to compiler optimization. And some static variables can be treated as new variables, such as @@ -10,30 +11,31 @@ to tell kpatch to treat the static variables as new variables. Signed-off-by: Zhipeng Xie --- - kmod/patch/kpatch-macros.h | 3 +++ + kmod/patch/kpatch-macros.h | 4 +++ kpatch-build/create-diff-object.c | 45 ++++++++++++++++++++++++++++++- - 2 files changed, 47 insertions(+), 1 deletion(-) + 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/kmod/patch/kpatch-macros.h b/kmod/patch/kpatch-macros.h -index a60a267..9a30d68 100644 +index caaadbc..ee455d2 100644 --- a/kmod/patch/kpatch-macros.h +++ b/kmod/patch/kpatch-macros.h -@@ -5,6 +5,9 @@ - #include - #include +@@ -12,6 +12,10 @@ + # define __kpatch_section(section) __section(#section) + #endif +#define KPATCH_IGNORE_STATIC(_static) \ + char *__UNIQUE_ID(kpatch_ignore_static_) __section(.kpatch.ignore.statics) = _static; ++ + /* * KPATCH_IGNORE_SECTION macro * diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index a2a9cab..211ea72 100644 +index 0bef022..f83000b 100644 --- a/kpatch-build/create-diff-object.c +++ b/kpatch-build/create-diff-object.c -@@ -1151,6 +1151,40 @@ static int kpatch_is_normal_static_local(struct symbol *sym) - return 1; +@@ -1345,6 +1345,40 @@ static struct rela *kpatch_find_static_twin_ref(struct section *rela_sec, struct + return NULL; } +static int kpatch_mark_ignored_statics(struct kpatch_elf *kelf, struct symbol *sym) @@ -73,7 +75,7 @@ index a2a9cab..211ea72 100644 /* * gcc renames static local variables by appending a period and a number. For * example, __foo could be renamed to __foo.31452. Unfortunately this number -@@ -1230,6 +1264,11 @@ static void kpatch_correlate_static_local_variables(struct kpatch_elf *base, +@@ -1425,6 +1459,11 @@ static void kpatch_correlate_static_local_variables(struct kpatch_elf *orig, if (sym->twin) continue; @@ -85,7 +87,7 @@ index a2a9cab..211ea72 100644 bundled = sym == sym->sec->sym; if (bundled && sym->sec == sec->base) { /* -@@ -1286,6 +1325,11 @@ static void kpatch_correlate_static_local_variables(struct kpatch_elf *base, +@@ -1482,6 +1521,11 @@ static void kpatch_correlate_static_local_variables(struct kpatch_elf *orig, if (!kpatch_is_normal_static_local(sym)) continue; @@ -94,10 +96,10 @@ index a2a9cab..211ea72 100644 + continue; + } + - if (!sym->twin || !sec->twin) - DIFF_FATAL("reference to static local variable %s in %s was removed", - sym->name, -@@ -1329,7 +1373,6 @@ static void kpatch_correlate_static_local_variables(struct kpatch_elf *base, + if (!sec->twin && sec->base->sym) { + struct symbol *parent = NULL; + +@@ -1525,7 +1569,6 @@ static void kpatch_correlate_static_local_variables(struct kpatch_elf *orig, log_normal("WARNING: unable to correlate static local variable %s used by %s, assuming variable is new\n", sym->name, kpatch_section_function_name(sec)); @@ -106,5 +108,5 @@ index a2a9cab..211ea72 100644 } } -- -2.18.1 +2.23.0 diff --git a/0031-create-diff-object-fix-segment-fault-when-sec2-rela-.patch b/0021-create-diff-object-fix-segment-fault-when-sec2-rela-.patch similarity index 51% rename from 0031-create-diff-object-fix-segment-fault-when-sec2-rela-.patch rename to 0021-create-diff-object-fix-segment-fault-when-sec2-rela-.patch index 97919e7..50bff4d 100644 --- a/0031-create-diff-object-fix-segment-fault-when-sec2-rela-.patch +++ b/0021-create-diff-object-fix-segment-fault-when-sec2-rela-.patch @@ -1,7 +1,8 @@ -From 8d1e6f4cfe3fc7007f17e0f01e7ec8aa71e18cae Mon Sep 17 00:00:00 2001 +From 2189dd022cda1973efdc198daa0525cbd2ee5bb2 Mon Sep 17 00:00:00 2001 From: Zhipeng Xie Date: Fri, 17 Sep 2021 10:22:24 +0800 -Subject: [PATCH] create-diff-object: fix segment fault when sec2->rela is NULL +Subject: [PATCH 21/24] create-diff-object: fix segment fault when sec2->rela + is NULL when patched section has no rela section, we meet segment fault in __kpatch_correlate_section. add sec2->rela check to fix it. @@ -13,18 +14,18 @@ Signed-off-by: hubin57 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index ff2b0e4..2159cf0 100644 +index f83000b..aa5c5c4 100644 --- a/kpatch-build/create-diff-object.c +++ b/kpatch-build/create-diff-object.c -@@ -916,7 +916,7 @@ static void kpatch_correlate_section(struct section *sec1, struct section *sec2) - __kpatch_correlate_section(sec1->base, sec2->base); - sec1 = sec1->base; - sec2 = sec2->base; -- } else if (sec1->rela) { -+ } else if (sec1->rela && sec2->rela) { - __kpatch_correlate_section(sec1->rela, sec2->rela); +@@ -1015,7 +1015,7 @@ static void kpatch_correlate_section(struct section *sec_orig, + __kpatch_correlate_section(sec_orig->base, sec_patched->base); + sec_orig = sec_orig->base; + sec_patched = sec_patched->base; +- } else if (sec_orig->rela) { ++ } else if (sec_orig->rela && sec_patched->rela) { + __kpatch_correlate_section(sec_orig->rela, sec_patched->rela); } -- -2.27.0 +2.23.0 diff --git a/0021-kpatch-build-don-t-copy-.config-for-out-of-tree-modu.patch b/0021-kpatch-build-don-t-copy-.config-for-out-of-tree-modu.patch deleted file mode 100644 index 7ed2626..0000000 --- a/0021-kpatch-build-don-t-copy-.config-for-out-of-tree-modu.patch +++ /dev/null @@ -1,28 +0,0 @@ -From cff73a8dca7069d9e558c65f0b76297feab09719 Mon Sep 17 00:00:00 2001 -From: Zhipeng Xie -Date: Thu, 12 Mar 2020 07:37:00 -0400 -Subject: [PATCH 21/23] kpatch-build: don't copy .config for out of tree module - -.config only need to be restored when the build patch for kernel - -Signed-off-by: Zhipeng Xie ---- - kpatch-build/kpatch-build | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build -index ad7ab71..fd34812 100755 ---- a/kpatch-build/kpatch-build -+++ b/kpatch-build/kpatch-build -@@ -828,7 +828,7 @@ fi - - [[ -z "$CONFIGFILE" ]] && CONFIGFILE="$SRCDIR"/.config - [[ ! -e "$CONFIGFILE" ]] && die "can't find config file" --[[ ! "$CONFIGFILE" -ef "$SRCDIR"/.config ]] && cp -f "$CONFIGFILE" "$SRCDIR/.config" -+[[ -z "$OOT_MODULE" ]] && [[ ! "$CONFIGFILE" -ef "$SRCDIR"/.config ]] && cp -f "$CONFIGFILE" "$SRCDIR/.config" - - # Build variables - Set some defaults, then adjust features - # according to .config and kernel version --- -2.18.1 - diff --git a/0022-support-force-enable-disable-for-x86.patch b/0022-support-force-enable-disable-for-x86.patch deleted file mode 100644 index 07dc053..0000000 --- a/0022-support-force-enable-disable-for-x86.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 11e57aa03ae87fa24028800851f34205a2aeb0d8 Mon Sep 17 00:00:00 2001 -From: Zhipeng Xie -Date: Wed, 15 Apr 2020 06:37:59 -0400 -Subject: [PATCH 22/23] support force enable/disable for x86 - -detect if the klp_func structure in vmlinux have force -member, if it has, export KLP_SUPPORT_FORCE=y. - -Signed-off-by: Zhipeng Xie ---- - kpatch-build/kpatch-build | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build -index fd34812..523d5df 100755 ---- a/kpatch-build/kpatch-build -+++ b/kpatch-build/kpatch-build -@@ -373,7 +373,7 @@ find_special_section_data() { - # shellcheck disable=SC2086 - SPECIAL_VARS="$(readelf -wi "$VMLINUX" | - gawk --non-decimal-data $AWK_OPTIONS ' -- BEGIN { a = b = p = e = o = j = 0 } -+ BEGIN { a = b = p = e = o = j = c = f = 0 } - - # Set state if name matches - a == 0 && /DW_AT_name.* alt_instr[[:space:]]*$/ {a = 1; next} -@@ -382,6 +382,7 @@ find_special_section_data() { - e == 0 && /DW_AT_name.* exception_table_entry[[:space:]]*$/ {e = 1; next} - o == 0 && /DW_AT_name.* orc_entry[[:space:]]*$/ {o = 1; next} - j == 0 && /DW_AT_name.* jump_entry[[:space:]]*$/ {j = 1; next} -+ c == 0 && /DW_AT_name.* klp_func[[:space:]]*$/ {c = 1; next} - - # Reset state unless this abbrev describes the struct size - a == 1 && !/DW_AT_byte_size/ { a = 0; next } -@@ -390,6 +391,8 @@ find_special_section_data() { - e == 1 && !/DW_AT_byte_size/ { e = 0; next } - o == 1 && !/DW_AT_byte_size/ { o = 0; next } - j == 1 && !/DW_AT_byte_size/ { j = 0; next } -+ c == 1 && /DW_TAG_structure_type/ { c = 3; next } -+ c == 1 && /DW_AT_name.* force[[:space:]]*$/ {f = 2; next} - - # Now that we know the size, stop parsing for it - a == 1 {printf("export ALT_STRUCT_SIZE=%d\n", $4); a = 2} -@@ -398,9 +401,10 @@ find_special_section_data() { - e == 1 {printf("export EX_STRUCT_SIZE=%d\n", $4); e = 2} - o == 1 {printf("export ORC_STRUCT_SIZE=%d\n", $4); o = 2} - j == 1 {printf("export JUMP_STRUCT_SIZE=%d\n", $4); j = 2} -+ f == 2 {printf("export KLP_SUPPORT_FORCE=y\n"); f = 3} - - # Bail out once we have everything -- a == 2 && b == 2 && (p == 2 || skip_p) && e == 2 && (o == 2 || skip_o) && (j == 2 || skip_j) {exit}')" -+ a == 2 && b == 2 && (p == 2 || skip_p) && e == 2 && (o == 2 || skip_o) && (j == 2 || skip_j) && c == 3 {exit}')" - - [[ -n "$SPECIAL_VARS" ]] && eval "$SPECIAL_VARS" - --- -2.18.1 - diff --git a/0022-use-original-reloc-for-symbols-exported-from-modules.patch b/0022-use-original-reloc-for-symbols-exported-from-modules.patch new file mode 100644 index 0000000..b08b990 --- /dev/null +++ b/0022-use-original-reloc-for-symbols-exported-from-modules.patch @@ -0,0 +1,36 @@ +From b841186b9f8ced6a78953c0c109138f9aef7a53a Mon Sep 17 00:00:00 2001 +From: Zhipeng Xie +Date: Thu, 12 Mar 2020 05:10:55 -0400 +Subject: [PATCH 22/24] use original reloc for symbols exported from modules + +symbols exported in a patch will generate a symbol version with +object module name in Module.symvers, but the symbol is actually +in patch module which cause livepatch symbol lookup failed. + +Signed-off-by: Zhipeng Xie +--- + kpatch-build/create-diff-object.c | 8 +------- + 1 file changed, 1 insertion(+), 7 deletions(-) + +diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c +index aa5c5c4..59d491d 100644 +--- a/kpatch-build/create-diff-object.c ++++ b/kpatch-build/create-diff-object.c +@@ -3317,13 +3317,7 @@ static bool need_dynrela(struct lookup_table *table, struct section *sec, const + return false; + } + +- /* +- * The symbol is exported by the to-be-patched module, or by +- * another module which the patched module depends on. Use a +- * dynrela because of late module loading: the patch module may +- * be loaded before the to-be-patched (or other) module. +- */ +- return true; ++ return false; + } + + if (symbol.global) { +-- +2.23.0 + diff --git a/0023-create-diff-object-create-dynamic-relocs-for-changed.patch b/0023-create-diff-object-create-dynamic-relocs-for-changed.patch new file mode 100644 index 0000000..565b954 --- /dev/null +++ b/0023-create-diff-object-create-dynamic-relocs-for-changed.patch @@ -0,0 +1,47 @@ +From 7fa14b0c6f2e42cdf76b44b1337eb27e5b777d14 Mon Sep 17 00:00:00 2001 +From: Zhipeng Xie +Date: Fri, 2 Nov 2018 17:25:38 +0000 +Subject: [PATCH 23/24] create-diff-object: create dynamic relocs for changed + functions in this object + +Currently, we only create dynamic relocs for changed functions of +other objects, but not this object. It will cause a problem like: + +original: funcA and funcB (funcA calls funcB) +patch-1: funcA-1 and funcB-1 (funcA-1 calls funcB-1) +patch-2: funcB-2 (funcA-1 should call funcB-2) + +But as we don't create dynamic relocs for funcA-1, it will call +funcB-1 directly (not by jumping from funcB). So the new funcB-2 +will not get called. This patch will create dynamic relocs for +all the changed functions, including changed ones in this object. + +Reported-by: Xie Zhipeng +Tested-by: Zhou Chengming +Signed-off-by: Zhou Chengming +Signed-off-by: Li Bin +Signed-off-by: Zhipeng Xie +--- + kpatch-build/create-diff-object.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c +index 59d491d..3a12ee1 100644 +--- a/kpatch-build/create-diff-object.c ++++ b/kpatch-build/create-diff-object.c +@@ -3238,6 +3238,12 @@ static bool need_dynrela(struct lookup_table *table, struct section *sec, const + return false; + + if (rela->sym->sec) { ++ if (rela->sym->type == STT_FUNC && ++ rela->sym->status == CHANGED && ++ rela->sym->sec != sec->base && ++ sec->base->sym && ++ sec->base->sym->type == STT_FUNC) ++ return true; + /* + * Internal symbols usually don't need dynrelas, because they + * live in the patch module and can be relocated normally. +-- +2.23.0 + diff --git a/0023-create-diff-object-fix-duplicate-symbols-for-vmlinux.patch b/0023-create-diff-object-fix-duplicate-symbols-for-vmlinux.patch deleted file mode 100644 index 002668f..0000000 --- a/0023-create-diff-object-fix-duplicate-symbols-for-vmlinux.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 459018cfabc65e9f29bf25476c727b4d5d8089c4 Mon Sep 17 00:00:00 2001 -From: Zhipeng Xie -Date: Wed, 22 Apr 2020 05:55:33 -0400 -Subject: [PATCH 23/23] create-diff-object: fix duplicate symbols for vmlinux - -symbol pos in vmlinux may be different with runtime -/proc/kallsyms, use ref_name and ref_offset method too. - -Signed-off-by: Zhipeng Xie ---- - kpatch-build/create-diff-object.c | 36 ++++++++++++++++--------------- - 1 file changed, 19 insertions(+), 17 deletions(-) - -diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index 4fa4488..ad5746b 100644 ---- a/kpatch-build/create-diff-object.c -+++ b/kpatch-build/create-diff-object.c -@@ -3110,25 +3110,27 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, - else { - /* for modules, src is discovered at runtime */ - ksyms[index].src = 0; -- if (lookup_is_duplicate_symbol(table, rela->sym->name, objname, -- result.pos)) { -- struct lookup_refsym refsym; -- -- if (lookup_ref_symbol_offset(table, rela->sym->name, -- &refsym, objname, &ref_offset)) -- ERROR("unresolvable ambiguity on symbol %s\n", -- rela->sym->name); -- -- /* add rela to fill in ref_name field */ -- ALLOC_LINK(rela2, &krela_sec->rela->relas); -- rela2->sym = strsym; -- rela2->type = absolute_rela_type; -- rela2->addend = offset_of_string(&kelf->strings, -- refsym.name); -- rela2->offset = (unsigned int)(index * sizeof(*krelas) + -+ } -+ -+ if (lookup_is_duplicate_symbol(table, rela->sym->name, objname, -+ result.pos)) { -+ struct lookup_refsym refsym; -+ -+ if (lookup_ref_symbol_offset(table, rela->sym->name, -+ &refsym, objname, &ref_offset)) -+ ERROR("unresolvable ambiguity on symbol %s\n", -+ rela->sym->name); -+ -+ /* add rela to fill in ref_name field */ -+ ALLOC_LINK(rela2, &krela_sec->rela->relas); -+ rela2->sym = strsym; -+ rela2->type = absolute_rela_type; -+ rela2->addend = offset_of_string(&kelf->strings, -+ refsym.name); -+ rela2->offset = (unsigned int)(index * sizeof(*krelas) + - offsetof(struct kpatch_relocation, ref_name)); -- } - } -+ - ksyms[index].pos = result.pos; - ksyms[index].type = rela->sym->type; - ksyms[index].bind = rela->sym->bind; --- -2.18.1 - diff --git a/0024-kpatch-build-support-CROSS_COMPILE.patch b/0024-kpatch-build-support-CROSS_COMPILE.patch new file mode 100644 index 0000000..56160d5 --- /dev/null +++ b/0024-kpatch-build-support-CROSS_COMPILE.patch @@ -0,0 +1,29 @@ +From ea05261d87f22ecebcc5e4abac662960e732e33b Mon Sep 17 00:00:00 2001 +From: Zhipeng Xie +Date: Tue, 16 Nov 2021 20:21:31 +0800 +Subject: [PATCH 24/24] kpatch-build: support CROSS_COMPILE + +some Makefile use $(CROSS_COMPILE)gcc to compile .o +file, append CROSS_COMPILE to MAKEVARS to make it +run into kpatch-cc. + +Signed-off-by: Zhipeng Xie +--- + kpatch-build/kpatch-build | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build +index 2ead6e4..6a9e818 100755 +--- a/kpatch-build/kpatch-build ++++ b/kpatch-build/kpatch-build +@@ -1016,6 +1016,7 @@ if [ "$CONFIG_CC_IS_CLANG" -eq 1 ]; then + MAKEVARS+=("HOSTCC=clang") + else + MAKEVARS+=("CC=${KPATCH_CC_PREFIX}gcc") ++ MAKEVARS+=("CROSS_COMPILE=${KPATCH_CC_PREFIX}") + fi + + if [ "$CONFIG_LD_IS_LLD" -eq 1 ]; then +-- +2.23.0 + diff --git a/0024-optimize-for-out-of-tree-module.patch b/0024-optimize-for-out-of-tree-module.patch deleted file mode 100644 index 032ca83..0000000 --- a/0024-optimize-for-out-of-tree-module.patch +++ /dev/null @@ -1,44 +0,0 @@ -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/0027-create-build-diff-support-for-.cold-functions-with-n.patch b/0027-create-build-diff-support-for-.cold-functions-with-n.patch deleted file mode 100644 index e1d8df0..0000000 --- a/0027-create-build-diff-support-for-.cold-functions-with-n.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 55a2778284c088f4c383cf364bef18f1b5b88531 Mon Sep 17 00:00:00 2001 -From: Artem Savkov -Date: Thu, 4 Mar 2021 12:47:43 +0100 -Subject: [PATCH] create-build-diff: support for .cold functions with no id - suffix - -create-build-diff expects .cold functions to be suffixed by an id, which -is not always the case. Drop the trailing '.' when searching for cold -functions. - -Fixes: #1160 - -Signed-off-by: Artem Savkov ---- - kpatch-build/create-diff-object.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index 6b19e1e..d20f2f1 100644 ---- a/kpatch-build/create-diff-object.c -+++ b/kpatch-build/create-diff-object.c -@@ -124,7 +124,7 @@ static int is_bundleable(struct symbol *sym) - if (sym->type == STT_FUNC && - !strncmp(sym->sec->name, ".text.unlikely.",15) && - (!strcmp(sym->sec->name + 15, sym->name) || -- (strstr(sym->name, ".cold.") && -+ (strstr(sym->name, ".cold") && - !strncmp(sym->sec->name + 15, sym->name, strlen(sym->sec->name) - 15)))) - return 1; - -@@ -248,7 +248,7 @@ static void kpatch_detect_child_functions(struct kpatch_elf *kelf) - list_for_each_entry(sym, &kelf->symbols, list) { - char *coldstr; - -- coldstr = strstr(sym->name, ".cold."); -+ coldstr = strstr(sym->name, ".cold"); - if (coldstr != NULL) { - char *pname; - --- -2.27.0 - diff --git a/0028-lookup-Add-__UNIQUE_ID_-to-maybe_discarded_sym-list.patch b/0028-lookup-Add-__UNIQUE_ID_-to-maybe_discarded_sym-list.patch deleted file mode 100644 index f7def25..0000000 --- a/0028-lookup-Add-__UNIQUE_ID_-to-maybe_discarded_sym-list.patch +++ /dev/null @@ -1,62 +0,0 @@ -From b381a0cc0b900d042ff6a718ef9795101310d702 Mon Sep 17 00:00:00 2001 -From: Kamalesh Babulal -Date: Wed, 17 Jun 2020 19:51:56 +0530 -Subject: [PATCH] lookup: Add __UNIQUE_ID_ to maybe_discarded_sym list - -Linux kernel tristate config options allows selected feature, either to -be built-in to the kernel or to be built as a kernel module. When built -as a kernel module, it's expected that the module, will be built with -module information such as author, license, description and others. - -For each of the modinfo, a corresponding __UNIQUE_ID_ symbol is -generated. Their lookup succeeds in the case of module but fails when -selected to built-in to the kernel, the reason being that the kernel -discards these __UNIQUE_ID_ symbols during linking. Add __UNIQUE_ID_ -symbols to maybe_discarded_sym list, to avoid failure in case of -table->object is vmlinux. - -i.e.: - # cat .config|grep IOSCHED_BFQ (can be compiled as module too) - CONFIG_IOSCHED_BFQ=y - - # readelf -sW ./block/bfq-iosched.o|grep UNIQUE - 219: 0000000000000000 54 OBJECT LOCAL DEFAULT 267 __UNIQUE_ID_description223 - 220: 0000000000000036 16 OBJECT LOCAL DEFAULT 267 __UNIQUE_ID_license222 - 221: 0000000000000046 19 OBJECT LOCAL DEFAULT 267 __UNIQUE_ID_file221 - 222: 0000000000000059 25 OBJECT LOCAL DEFAULT 267 __UNIQUE_ID_author220 - 223: 0000000000000072 22 OBJECT LOCAL DEFAULT 267 __UNIQUE_ID_alias219 - -the line below before the kpatch error, is a debug printf to find the failing lookup symbol: -Failed lookup for __UNIQUE_ID_description223 -/root/kpatch/kpatch-build/create-diff-object: ERROR: bfq-iosched.o: find_local_syms: 180: couldn't find matching bfq-iosched.c local symbols in ./vmlinux symbol table - -with the patch, it successfully builds with both y/m config options: -... -bfq-iosched.o: changed function: bfq_idle_slice_timer -Patched objects: vmlinux -Building patch module: -livepatch-0001-block-bfq-fix-use-after-free-in-b.ko -SUCCESS - -Signed-off-by: Kamalesh Babulal ---- - kpatch-build/lookup.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/kpatch-build/lookup.c b/kpatch-build/lookup.c -index 4f8c779..9086c9c 100644 ---- a/kpatch-build/lookup.c -+++ b/kpatch-build/lookup.c -@@ -83,7 +83,8 @@ static int maybe_discarded_sym(const char *name) - if (!strncmp(name, "__exitcall_", 11) || - !strncmp(name, "__brk_reservation_fn_", 21) || - !strncmp(name, "__func_stack_frame_non_standard_", 32) || -- !strncmp(name, "__addressable_", 14)) -+ !strncmp(name, "__addressable_", 14) || -+ !strncmp(name, "__UNIQUE_ID_", 12)) - return 1; - - return 0; --- -2.27.0 - diff --git a/0029-create-diff-object-error-on-detect-new-changed-ALTIN.patch b/0029-create-diff-object-error-on-detect-new-changed-ALTIN.patch deleted file mode 100644 index 70433c1..0000000 --- a/0029-create-diff-object-error-on-detect-new-changed-ALTIN.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 6acafe200135f0299f4834ba7dcea5d582d75a0a Mon Sep 17 00:00:00 2001 -From: Zhipeng Xie -Date: Sat, 21 Aug 2021 04:07:33 -0400 -Subject: [PATCH] create-diff-object: error on detect new/changed - ALTINSTR_ENTRY_CB - -ALTINSTR_ENTRY_CB have callback which reference to other function -in .altinstructions, currently kpatch don't support new/changed -ALTINSTR_ENTRY_CB, so error on detect this case. - -Signed-off-by: Zhipeng Xie ---- - kpatch-build/create-diff-object.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index d20f2f1..07a1815 100644 ---- a/kpatch-build/create-diff-object.c -+++ b/kpatch-build/create-diff-object.c -@@ -2227,6 +2227,8 @@ static void kpatch_regenerate_special_section(struct kpatch_elf *kelf, - * aren't sorted (e.g. .rela.fixup), so go through the entire - * rela list each time. - */ -+ int i = 0; -+ struct rela *lastrela = NULL; - list_for_each_entry_safe(rela, safe, &sec->relas, list) { - if (rela->offset >= src_offset && - rela->offset < src_offset + group_size) { -@@ -2239,12 +2241,19 @@ static void kpatch_regenerate_special_section(struct kpatch_elf *kelf, - - rela->sym->include = 1; - -+ if (!strcmp(special->name, ".altinstructions")) { -+ if (i % 2 == 1 && strcmp(rela->sym->name , ".altinstr_replacement")) { -+ DIFF_FATAL("%s have entry in .altinstructions which have callback %s instead of new instruction", lastrela->sym->name, rela->sym->name); -+ } -+ } - - if (!strcmp(special->name, ".fixup")) - kpatch_update_ex_table_addend(kelf, special, - src_offset, - dest_offset, - group_size); -+ lastrela = rela; -+ i++; - } - } - --- -2.27.0 - diff --git a/0030-kpatch-update-sympos-for-duplicate-symbols-in-vmlinu.patch b/0030-kpatch-update-sympos-for-duplicate-symbols-in-vmlinu.patch deleted file mode 100644 index dc6ab04..0000000 --- a/0030-kpatch-update-sympos-for-duplicate-symbols-in-vmlinu.patch +++ /dev/null @@ -1,104 +0,0 @@ -From 8f5c1ff32fcc519bf061f68a481116f622b9cef8 Mon Sep 17 00:00:00 2001 -From: Zhipeng Xie -Date: Fri, 10 Sep 2021 04:34:40 -0400 -Subject: [PATCH] kpatch: update sympos for duplicate symbols in vmlinux - -kallsyms in vmlinux is sorted by address, so symbol order -in vmlinux is different from /proc/kallsyms, update sympos -when patching duplicate symbol function. - -Signed-off-by: Zhipeng Xie -Signed-off-by: hubin57 ---- - kpatch-build/create-diff-object.c | 26 ++++++-------------------- - kpatch-build/lookup.c | 24 ++++++++++++++++++++++++ - kpatch-build/lookup.h | 2 ++ - 3 files changed, 32 insertions(+), 20 deletions(-) - -diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index afd5e3b..ff2b0e4 100644 ---- a/kpatch-build/create-diff-object.c -+++ b/kpatch-build/create-diff-object.c -@@ -2813,26 +2813,12 @@ static void kpatch_create_patches_sections(struct kpatch_elf *kelf, - funcs[index].new_size = sym->sym.st_size; - funcs[index].sympos = result.pos; - if (lookup_is_duplicate_symbol(table, sym->name, objname, result.pos)) { -- struct lookup_refsym refsym; -- long offset; -- -- if (lookup_ref_symbol_offset(table, sym->name, &refsym, -- objname, &offset)) -- ERROR("unresolvable ambiguity on symbol %s\n", sym->name); -- -- funcs[index].ref_offset = offset; -- -- /* -- * Add a relocation that will populate -- * the funcs[index].ref_name field. -- */ -- ALLOC_LINK(rela, &relasec->relas); -- rela->sym = strsym; -- rela->type = absolute_rela_type; -- rela->addend = offset_of_string(&kelf->strings, refsym.name); -- rela->offset = (unsigned int)(index * sizeof(*funcs) + -- offsetof(struct kpatch_patch_func, ref_name)); -- -+ if (!strcmp(objname, "vmlinux")) { -+ result.pos = get_vmlinux_duplicate_symbol_pos(table, sym->name, result.value); -+ log_debug("update %s sympos from %ld to %ld\n", -+ sym->name, funcs[index].sympos, result.pos); -+ funcs[index].sympos = result.pos; -+ } - } - - -diff --git a/kpatch-build/lookup.c b/kpatch-build/lookup.c -index 888bcc9..aa8527d 100644 ---- a/kpatch-build/lookup.c -+++ b/kpatch-build/lookup.c -@@ -526,6 +526,30 @@ int lookup_global_symbol(struct lookup_table *table, char *name, - return 1; - } - -+/* -+ * In case sometimes the sympos of duplicate symbols are different in vmlinux and -+ * /proc/kallsyms, and causes lookup_local_symbol to save wrong sympos in result, -+ * this function returns correct sympos of the symbol, by comparing -+ * address value with the symbol in vmlinux symbol table. -+ */ -+unsigned long get_vmlinux_duplicate_symbol_pos(struct lookup_table *table, -+ char *name, unsigned long value) -+{ -+ struct object_symbol *sym; -+ unsigned long pos = 1; -+ int i; -+ -+ for_each_obj_symbol(i, sym, table) { -+ if (strcmp(sym->name, name)) -+ continue; -+ -+ if (sym->value < value) -+ pos++; -+ } -+ -+ return pos; -+} -+ - int lookup_is_exported_symbol(struct lookup_table *table, char *name) - { - struct export_symbol *sym, *match = NULL; -diff --git a/kpatch-build/lookup.h b/kpatch-build/lookup.h -index daeea73..c745366 100644 ---- a/kpatch-build/lookup.h -+++ b/kpatch-build/lookup.h -@@ -37,5 +37,7 @@ int lookup_is_duplicate_symbol(struct lookup_table *table, char *name, - int lookup_ref_symbol_offset(struct lookup_table *table, char *name, - struct lookup_refsym *refsym, char *objname, - long *offset); -+unsigned long get_vmlinux_duplicate_symbol_pos(struct lookup_table *table, char *name, -+ unsigned long value); - - #endif /* _LOOKUP_H_ */ --- -2.27.0 - diff --git a/0032-create-diff-object-Fix-out-of-range-relocation-error.patch b/0032-create-diff-object-Fix-out-of-range-relocation-error.patch deleted file mode 100644 index 50308a8..0000000 --- a/0032-create-diff-object-Fix-out-of-range-relocation-error.patch +++ /dev/null @@ -1,36 +0,0 @@ -From fa5a95cafdb034b825242a93ef1b4ce57985a93d Mon Sep 17 00:00:00 2001 -From: Josh Poimboeuf -Date: Tue, 13 Apr 2021 13:58:59 -0500 -Subject: [PATCH] create-diff-object: Fix out-of-range relocation error message - -Showing sec+addend isn't valid, show sym+addend instead. - -Before: - - create-diff-object: ERROR: sys.o: kpatch_check_relocations: 2550: out-of-range relocation .rodata.__kpatch_do_sys_uname.str1.1+139 in .rela.text.__kpatch_do_sys_uname - -After: - - create-diff-object: ERROR: sys.o: kpatch_check_relocations: 2550: out-of-range relocation .LC7+139 in .rela.text.__kpatch_do_sys_uname - -Signed-off-by: Josh Poimboeuf ---- - kpatch-build/create-diff-object.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index 82e486f..d427beb 100644 ---- a/kpatch-build/create-diff-object.c -+++ b/kpatch-build/create-diff-object.c -@@ -2547,7 +2547,7 @@ static void kpatch_check_relocations(struct kpatch_elf *kelf) - if (rela->sym->sec) { - sdata = rela->sym->sec->data; - if (rela->addend > (long)sdata->d_size) { -- ERROR("out-of-range relocation %s+%lx in %s", rela->sym->sec->name, -+ ERROR("out-of-range relocation %s+%lx in %s", rela->sym->name, - rela->addend, sec->name); - } - } --- -2.23.0 - diff --git a/0033-create-diff-object-Fix-out-of-range-relocation-check.patch b/0033-create-diff-object-Fix-out-of-range-relocation-check.patch deleted file mode 100644 index 7c5e767..0000000 --- a/0033-create-diff-object-Fix-out-of-range-relocation-check.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 81f9ca4833bf9c5867858d633c340cedca554ca6 Mon Sep 17 00:00:00 2001 -From: Josh Poimboeuf -Date: Tue, 13 Apr 2021 14:00:41 -0500 -Subject: [PATCH] create-diff-object: Fix out-of-range relocation check - -Improve the relocation check for the case where the referenced symbol -isn't at the beginning of the section. - -Note that the check still isn't perfect, as many relocations have a -negative addend. But it's still a lot better than nothing. - -Signed-off-by: Josh Poimboeuf ---- - kpatch-build/create-diff-object.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c -index d427beb..14eb1f5 100644 ---- a/kpatch-build/create-diff-object.c -+++ b/kpatch-build/create-diff-object.c -@@ -2546,7 +2546,7 @@ static void kpatch_check_relocations(struct kpatch_elf *kelf) - list_for_each_entry(rela, &sec->relas, list) { - if (rela->sym->sec) { - sdata = rela->sym->sec->data; -- if (rela->addend > (long)sdata->d_size) { -+ if ((long)rela->sym->sym.st_value + rela->addend > (long)sdata->d_size) { - ERROR("out-of-range relocation %s+%lx in %s", rela->sym->name, - rela->addend, sec->name); - } --- -2.23.0 - diff --git a/0034-add-openEuler-build-support.patch b/0034-add-openEuler-build-support.patch deleted file mode 100644 index 4a16cb8..0000000 --- a/0034-add-openEuler-build-support.patch +++ /dev/null @@ -1,25 +0,0 @@ -From eaaced1912c43103749366927daff5794ea4f404 Mon Sep 17 00:00:00 2001 -From: gouhao -Date: Wed, 8 Sep 2021 09:37:08 +0800 -Subject: [PATCH] add openEuler build support - ---- - kpatch-build/kpatch-build | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build -index 495ca3d..49c0045 100755 ---- a/kpatch-build/kpatch-build -+++ b/kpatch-build/kpatch-build -@@ -696,7 +696,7 @@ fi - # shellcheck disable=SC1090 - [[ -f "$RELEASE_FILE" ]] && source "$RELEASE_FILE" - DISTRO="$ID" --if [[ "$DISTRO" = fedora ]] || [[ "$DISTRO" = rhel ]] || [[ "$DISTRO" = ol ]] || [[ "$DISTRO" = centos ]]; then -+if [[ "$DISTRO" = fedora ]] || [[ "$DISTRO" = rhel ]] || [[ "$DISTRO" = ol ]] || [[ "$DISTRO" = centos ]] || [[ "$DISTRO" = openEuler ]]; then - [[ -z "$VMLINUX" ]] && VMLINUX="/usr/lib/debug/lib/modules/$ARCHVERSION/vmlinux" - [[ -e "$VMLINUX" ]] || die "kernel-debuginfo-$ARCHVERSION not installed" - --- -2.23.0 - diff --git a/0035-livepatch-patch-hook-add-comments.patch b/0035-livepatch-patch-hook-add-comments.patch deleted file mode 100644 index 6b0ce7e..0000000 --- a/0035-livepatch-patch-hook-add-comments.patch +++ /dev/null @@ -1,232 +0,0 @@ -From 005bd5ac6878b48ade7402156b2224c1b8c8ff5e Mon Sep 17 00:00:00 2001 -From: Joe Lawrence -Date: Fri, 24 Jul 2020 15:33:28 -0400 -Subject: [PATCH] livepatch-patch-hook: add comments - -Add some commentary to the livepatch-patch-hook file to explain what -it's doing. - -Signed-off-by: Joe Lawrence ---- - kmod/patch/livepatch-patch-hook.c | 106 ++++++++++++++++++++++++++++++ - 1 file changed, 106 insertions(+) - -diff --git a/kmod/patch/livepatch-patch-hook.c b/kmod/patch/livepatch-patch-hook.c -index d3fb1db..17b40b9 100644 ---- a/kmod/patch/livepatch-patch-hook.c -+++ b/kmod/patch/livepatch-patch-hook.c -@@ -92,10 +92,28 @@ - * done, the scaffold structs are no longer needed. - */ - -+/* -+ * lpatch is the kernel data structure that will be created on patch -+ * init, registered with the livepatch API on init, and finally -+ * unregistered when the patch exits. Its struct klp_object *objs -+ * member must be dynamically allocated according to the number of -+ * target objects it will be patching. -+ */ - static struct klp_patch *lpatch; - - static LIST_HEAD(patch_objects); - static int patch_objects_nr; -+ -+/** -+ * struct patch_object - scaffolding structure tracking patch target objects -+ * @list: list of patch_object (threaded onto patch_objects) -+ * @funcs: list of patch_func associated with this object -+ * @relocs: list of patch_reloc associated with this object -+ * @callbacks: kernel struct of object callbacks -+ * @name: patch target object name (NULL for vmlinux) -+ * @funcs_nr: count of kpatch_patch_func added to @funcs -+ * @relocs_nr: count of patch_reloc added to @relocs -+ */ - struct patch_object { - struct list_head list; - struct list_head funcs; -@@ -107,16 +125,36 @@ struct patch_object { - int funcs_nr, relocs_nr; - }; - -+/** -+ * struct patch_func - scaffolding structure for kpatch_patch_func -+ * @list: list of patch_func (threaded onto patch_object.funcs) -+ * @kfunc: array of kpatch_patch_func -+ */ - struct patch_func { - struct list_head list; - struct kpatch_patch_func *kfunc; - }; - -+/** -+ * struct patch_reloc - scaffolding structure for kpatch_patch_dynrela -+ * @list: list of patch_reloc (threaded onto patch_object.relocs) -+ * @kdynrela: array of kpatch_patch_dynrela -+ */ - struct patch_reloc { - struct list_head list; - struct kpatch_patch_dynrela *kdynrela; - }; - -+/** -+ * patch_alloc_new_object() - creates and initializes a new patch_object -+ * @name: target object name -+ * -+ * Return: pointer to new patch_object, NULL on failure. -+ * -+ * Does not check for previously created patch_objects with the same -+ * name. Updates patch_objects_nr and threads new data structure onto -+ * the patch_objects list. -+ */ - static struct patch_object *patch_alloc_new_object(const char *name) - { - struct patch_object *object; -@@ -135,6 +173,16 @@ static struct patch_object *patch_alloc_new_object(const char *name) - return object; - } - -+/** -+ * patch_find_object_by_name() - find or create a patch_object with a -+ * given name -+ * @name: target object name -+ * -+ * Return: pointer to patch_object, NULL on failure. -+ * -+ * Searches the patch_objects list for an already created instance with -+ * @name, otherwise tries to create it via patch_alloc_new_object() -+ */ - static struct patch_object *patch_find_object_by_name(const char *name) - { - struct patch_object *object; -@@ -146,6 +194,17 @@ static struct patch_object *patch_find_object_by_name(const char *name) - return patch_alloc_new_object(name); - } - -+/** -+ * patch_add_func_to_object() - create scaffolding from kpatch_patch_func data -+ * -+ * @kfunc: Individual kpatch_patch_func pointer -+ * -+ * Return: 0 on success, -ENOMEM on failure. -+ * -+ * Builds scaffolding data structures from .kpatch.funcs section's array -+ * of kpatch_patch_func structures. Updates the associated -+ * patch_object's funcs_nr count. -+ */ - static int patch_add_func_to_object(struct kpatch_patch_func *kfunc) - { - struct patch_func *func; -@@ -168,6 +227,17 @@ static int patch_add_func_to_object(struct kpatch_patch_func *kfunc) - } - - #ifndef HAVE_ELF_RELOCS -+/** -+ * patch_add_reloc_to_object() - create scaffolding from kpatch_patch_dynrela data -+ * -+ * @kdynrela: Individual kpatch_patch_dynrela pointer -+ * -+ * Return: 0 on success, -ENOMEM on failure. -+ * -+ * Builds scaffolding data structures from .kpatch.dynrelas section's array -+ * of kpatch_patch_dynrela structures. Updates the associated -+ * patch_object's relocs_nr count. -+ */ - static int patch_add_reloc_to_object(struct kpatch_patch_dynrela *kdynrela) - { - struct patch_reloc *reloc; -@@ -190,6 +260,9 @@ static int patch_add_reloc_to_object(struct kpatch_patch_dynrela *kdynrela) - } - #endif - -+/** -+ * patch_free_scaffold() - tear down the temporary kpatch scaffolding -+ */ - static void patch_free_scaffold(void) { - struct patch_func *func, *safefunc; - struct patch_object *object, *safeobject; -@@ -215,6 +288,9 @@ static void patch_free_scaffold(void) { - } - } - -+/** -+ * patch_free_livepatch() - release the klp_patch and friends -+ */ - static void patch_free_livepatch(struct klp_patch *patch) - { - struct klp_object *object; -@@ -234,6 +310,7 @@ static void patch_free_livepatch(struct klp_patch *patch) - } - } - -+/* Defined by kpatch.lds.S */ - extern struct kpatch_pre_patch_callback __kpatch_callbacks_pre_patch[], __kpatch_callbacks_pre_patch_end[]; - extern struct kpatch_post_patch_callback __kpatch_callbacks_post_patch[], __kpatch_callbacks_post_patch_end[]; - extern struct kpatch_pre_unpatch_callback __kpatch_callbacks_pre_unpatch[], __kpatch_callbacks_pre_unpatch_end[]; -@@ -267,6 +344,14 @@ static int add_kpatch_objects(void) - - - #ifdef HAVE_CALLBACKS -+/** -+ * add_callbacks_to_patch_objects() - create patch_objects that have callbacks -+ * -+ * Return: 0 on success, -ENOMEM or -EINVAL on failure -+ * -+ * Iterates through all kpatch pre/post-(un)patch callback data -+ * structures and creates scaffolding patch_objects for them. -+ */ - static int add_callbacks_to_patch_objects(void) - { - struct kpatch_pre_patch_callback *p_pre_patch_callback; -@@ -356,6 +441,7 @@ static inline int add_callbacks_to_patch_objects(void) - } - #endif /* HAVE_CALLBACKS */ - -+/* Defined by kpatch.lds.S */ - extern struct kpatch_patch_func __kpatch_funcs[], __kpatch_funcs_end[]; - #ifndef HAVE_ELF_RELOCS - extern struct kpatch_patch_dynrela __kpatch_dynrelas[], __kpatch_dynrelas_end[]; -@@ -375,6 +461,12 @@ static int __init patch_init(void) - struct klp_reloc *lrelocs, *lreloc; - #endif - -+ -+ /* -+ * Step 1 - read from output.o, create temporary scaffolding -+ * data-structures -+ */ -+ - /* organize functions and relocs by object in scaffold */ - for (kfunc = __kpatch_funcs; - kfunc != __kpatch_funcs_end; -@@ -404,6 +496,16 @@ static int __init patch_init(void) - /* past this point, only possible return code is -ENOMEM */ - ret = -ENOMEM; - -+ /* -+ * Step 2 - create livepatch klp_patch and friends -+ * -+ * There are two dynamically allocated parts: -+ * -+ * klp_patch -+ * klp_object objs [patch_objects_nr] <= i -+ * klp_func funcs [object->funcs_nr] <= j -+ */ -+ - /* allocate and fill livepatch structures */ - lpatch = kzalloc(sizeof(*lpatch), GFP_KERNEL); - if (!lpatch) -@@ -478,6 +580,10 @@ static int __init patch_init(void) - i++; - } - -+ /* -+ * Step 3 - throw away scaffolding -+ */ -+ - /* - * Once the patch structure that the live patching API expects - * has been built, we can release the scaffold structure. --- -2.27.0 - - diff --git a/kpatch-0.9.1.tar.gz b/kpatch-0.9.1.tar.gz deleted file mode 100644 index 0893f72ee5fc9584cc1d585d9f60fe106098e3d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198691 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�Hg|@A=eX`1`VfsZSe6FkZBr_V)KL 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

T|w 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�vsPc6fYv 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

0Fo;nI`o&O+?s!vJXiVim1w~g^1Q(# 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
RA!Hid}f92o1NP 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
{D;I_lIuj^;!x;-f5P0a!PeIItbciO*gI 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 -1:0.9.5-1 +- Type:enhancement +- ID:NA +- SUG:NA +- DESC:upgrade to upstream v0.9.5 + * Sat Oct 30 2021 Bin Hu -1:0.9.1-21 - Type:enhancement - ID:NA diff --git a/make_hotpatch b/make_hotpatch index ea4f606..7cfeb5f 100644 --- a/make_hotpatch +++ b/make_hotpatch @@ -534,7 +534,7 @@ function fn_makepatch() G_PATCH_SRC=`readlink -f $G_KERNEL_SRC` if [ -d "$G_MODULE_SRC" ];then - echo "make out of tree module hotpath" + echo "make out of tree module hotpatch" G_PATCH_SRC=$G_MODULE_SRC #fn_init_module_build $G_MODULE_SRC $G_MODULE_MAKEFILE #if [ $? -ne 0 ];then @@ -592,6 +592,7 @@ function fn_makepatch() export USERMODFLAGS=`cat $G_KPATCH_FLAGS` export NO_PROFILING_CALLS="yes" export DISABLE_AFTER_LOAD="yes" + export KEEP_JUMP_LABEL="yes" UNAME_R=$(uname -r) UNAME_R_ARCH=${UNAME_R##*.} SKIP_GCC_CHECK="" @@ -599,7 +600,7 @@ function fn_makepatch() echo "build in cross compile environment, skip gcc check" SKIP_GCC_CHECK="--skip-gcc-check" fi - kpatch-build -s $G_PATCH_SRC -c $G_KERNEL_CONFIG -v $G_VMLINUX ${SKIP_GCC_CHECK} -n "${G_PREFIX}_${G_HOTPATCH_ID}" $G_DEBUG_INFO $G_PATCHFILE + kpatch-build -s $G_PATCH_SRC -c $G_KERNEL_CONFIG -v $G_VMLINUX ${SKIP_GCC_CHECK} -n "${G_PREFIX}_${G_HOTPATCH_ID}" $G_DEBUG_INFO $G_PATCHFILE -R l_ret=$? cd - &>/dev/null if [ $l_ret -eq 0 ] && [ -f "$G_TMP_DIR/$G_HOTPATCH" ];then

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%0D~nq_LSfPr;z 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˷Hv^U#kW{ASQpY4~*Y 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