From 90161729e83e95a3e0058ab2f9c8b3571c5cb539 Mon Sep 17 00:00:00 2001 From: imxcc Date: Mon, 7 Feb 2022 11:05:47 +0800 Subject: [PATCH 1/9] updated the README.en.md file Signed-off-by: imxcc --- README.en.md | 27 +++++++++++---------------- libcareplus.spec | 5 ++++- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/README.en.md b/README.en.md index db9fc30..3077b91 100644 --- a/README.en.md +++ b/README.en.md @@ -1,40 +1,35 @@ -# libcareplus +# LibcarePlus #### Description -LibcarePlus delivers live patches to any of your Linux executables or libraries at the runtime, without the need for restart of your applications. +LibcarePlus‧is‧a‧general‧user-mode‧live‧patch‧framework.‧It delivers live patches to any of your Linux executables or libraries at the runtime, without the need for restart of your applications. -LibcarePlus is a self maintained branch derived from the LibCare project. It is released with the same LICENSE with LibCare and the original Copyright is kept. +LibcarePlus is a self-maintained branch derived from the LibCare project. It is released with the same license with LibCare and the original copyright is kept. More information about LibCare can be reached at: [https://github.com/cloudlinux/libcare](https://github.com/cloudlinux/libcare) -LibcarePlus aims at providing userspac livepatch ability -for popular architecture like x86_64 and aarch64. +LibcarePlus aims at providing user-mode live patches for popular architectures like x86_64 and AArch64. #### Software Architecture -For more information about the design of LibcarePlus, -please refer to the `LibcarePlus Design`. +For more information about the design of LibcarePlus, see the `LibcarePlus Design`. #### Installation -Please refer to the `LibcarePlus Intallation Guide` to -complete the installation of LibcarePlus. +Refer to the `LibcarePlus Intallation Guide` to install LibcarePlus. -### User Guide +#### User Guide -Please refer to: +Refer to: * LibcarePlus Patch Make Tutorial * LibcarePlus Patch Apply Tutorial -to help you to make the patch and apply it to the target process. +to help you make the patch and apply it to the target process. #### Contribution -Any contributors are wellcome to join this project, -we are glad to provide help and guide needed. -Developers can post an issue on this project and -make a pull request to join the development process. \ No newline at end of file +Any contributors are welcome to join this project, and we are glad to provide help and guidance needed. +Developers can post an issue on this project and submit a pull request to join the development process. \ No newline at end of file diff --git a/libcareplus.spec b/libcareplus.spec index 8e334e1..3b59f92 100644 --- a/libcareplus.spec +++ b/libcareplus.spec @@ -3,7 +3,7 @@ Version: 0.1.4 Name: libcareplus Summary: LibcarePlus tools -Release: 7 +Release: 8 Group: Applications/System License: GPLv2 Url: https://gitee.com/openeuler/libcareplus @@ -212,6 +212,9 @@ exit 0 %endif %changelog +* Mon Feb 07 2022 imxcc - 0.1.4.8 +- updated the README.en.md file + * Wed Sep 08 2021 imxcc - 0.1.4.7 - selinux: Allow init_t create lnk file -- Gitee From 5a9a2250111fbafe967b7c0a5ccb0dc90b6a5e7d Mon Sep 17 00:00:00 2001 From: imxcc Date: Mon, 7 Feb 2022 11:43:43 +0800 Subject: [PATCH 2/9] libcare-patch-make: add `-j|--jobs` option Signed-off-by: imxcc --- ...libcare-patch-make-add-j-jobs-option.patch | 89 +++++++++++++++++++ libcareplus.spec | 6 +- 2 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 0048-libcare-patch-make-add-j-jobs-option.patch diff --git a/0048-libcare-patch-make-add-j-jobs-option.patch b/0048-libcare-patch-make-add-j-jobs-option.patch new file mode 100644 index 0000000..0fefe88 --- /dev/null +++ b/0048-libcare-patch-make-add-j-jobs-option.patch @@ -0,0 +1,89 @@ +From ecb0c4d9aa87da11f5477a760e4eb28c3ce53798 Mon Sep 17 00:00:00 2001 +From: RToax <2386499836@qq.com> +Date: Sun, 26 Sep 2021 01:26:37 +0000 +Subject: [PATCH] libcare-patch-make: add `-j|--jobs` option + +Building large project with single thread is too slow. So we +add `-j|--jobs` option to libcare-patch-make scripts to speed +up compilation. + +Signed-off-by: RToax <2386499836@qq.com> +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/libcare-patch-make | 17 ++++++++++++++--- + 1 file changed, 14 insertions(+), 3 deletions(-) + +diff --git a/src/libcare-patch-make b/src/libcare-patch-make +index 7138f89..64fc709 100755 +--- a/src/libcare-patch-make ++++ b/src/libcare-patch-make +@@ -7,6 +7,7 @@ Makes `kpatch'es for the makesystem in the current directory. + Usage: libcare-patch-make [-h|--help] [-u|--update || -c|--clean] + [-s|--srcdir=SRCDIR] \ + [-d|--destdir=DESTDIRVAR] \ ++ [-j|--jobs=] \ + PATCH1 PATCH2 ... + + Run from inside the directory with `make'ble software. Makesystem must support +@@ -17,6 +18,8 @@ install with specified DESTDIR. + working on patch utils. + -d --destdir specify variable makefile system uses to specify destination + directory for the installation ++ -j --jobs specify variable makefile system jobs of compile, for example ++ `make -j 4` is startup `4` jobs to compile. + EOF + exit ${1-0} + } +@@ -72,6 +75,9 @@ trap "restore_origs" 0 + build_objects() { + restore_origs + ++ JOBS_MAKE="" ++ test $jobs_make && JOBS_MAKE="-j $jobs_make" ++ + if test -n "$do_clean"; then + make $LPMAKEFILE clean >$MAKE_OUTPUT 2>&1 + rm -rf "$LPMAKE_ORIGINAL_DIR" "$LPMAKE_PATCHED_DIR" +@@ -81,7 +87,7 @@ build_objects() { + export KPCC_DBGFILTER_ARGS="" + + echo "${green}BUILDING ORIGINAL CODE${reset}" +- make $LPMAKEFILE >$MAKE_OUTPUT 2>&1 ++ make $LPMAKEFILE $JOBS_MAKE >$MAKE_OUTPUT 2>&1 + + echo "${green}INSTALLING ORIGINAL OBJECTS INTO $LPMAKE_ORIGINAL_DIR${reset}" + make $LPMAKEFILE install \ +@@ -107,7 +113,7 @@ build_objects() { + export KPCC_APPEND_ARGS="-Wl,-q" + + echo "${green}BUILDING PATCHED CODE${reset}" +- make $LPMAKEFILE >$MAKE_OUTPUT 2>&1 ++ make $LPMAKEFILE $JOBS_MAKE >$MAKE_OUTPUT 2>&1 + + echo "${green}INSTALLING PATCHED OBJECTS INTO $LPMAKE_PATCHED_DIR${reset}" + make $LPMAKEFILE install \ +@@ -149,7 +155,7 @@ build_kpatches() { + main() { + PROG_NAME=$(basename $0) + +- TEMP=$(getopt -o s:ucd --long srcdir:,update,clean,destdir: -n ${PROG_NAME} -- "$@" || usage 1) ++ TEMP=$(getopt -o s:ucd:j: --long srcdir:,update,clean,destdir:,jobs: -n ${PROG_NAME} -- "$@" || usage 1) + eval set -- "$TEMP" + + destdir="DESTDIR" +@@ -173,6 +179,11 @@ main() { + destdir=$1 + shift + ;; ++ -j|--jobs) ++ shift ++ jobs_make=$1 ++ shift ++ ;; + --) + shift; break; + ;; +-- +2.27.0 + diff --git a/libcareplus.spec b/libcareplus.spec index 3b59f92..62a4d53 100644 --- a/libcareplus.spec +++ b/libcareplus.spec @@ -3,7 +3,7 @@ Version: 0.1.4 Name: libcareplus Summary: LibcarePlus tools -Release: 8 +Release: 9 Group: Applications/System License: GPLv2 Url: https://gitee.com/openeuler/libcareplus @@ -57,6 +57,7 @@ Patch0045: 0044-kpatch_ptrace-Split-function-kpatch_syscall_remote.patch Patch0046: 0045-kpatch_ptrace-Split-function-wait_for_mmap.patch Patch0047: 0046-kpatch_ptrace-Split-function-kpatch_ptrace_kickstart.patch Patch0048: 0047-Allow-init_t-create-lnk-file.patch +Patch0049: 0048-libcare-patch-make-add-j-jobs-option.patch BuildRequires: elfutils-libelf-devel libunwind-devel gcc systemd @@ -212,6 +213,9 @@ exit 0 %endif %changelog +* Mon Feb 07 2022 imxcc - 0.1.4.9 +- libcare-patch-make: add `-j|--jobs` option + * Mon Feb 07 2022 imxcc - 0.1.4.8 - updated the README.en.md file -- Gitee From ea43f9e0dd88fe364239161b5e9fd619312badf0 Mon Sep 17 00:00:00 2001 From: imxcc Date: Mon, 7 Feb 2022 14:23:24 +0800 Subject: [PATCH 3/9] kpatch_user.c: fix gcc warning Signed-off-by: imxcc --- 0049-kpatch_user.c-fix-gcc-warning.patch | 51 ++++++++++++++++++++++++ libcareplus.spec | 6 ++- 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 0049-kpatch_user.c-fix-gcc-warning.patch diff --git a/0049-kpatch_user.c-fix-gcc-warning.patch b/0049-kpatch_user.c-fix-gcc-warning.patch new file mode 100644 index 0000000..eaab8b3 --- /dev/null +++ b/0049-kpatch_user.c-fix-gcc-warning.patch @@ -0,0 +1,51 @@ +From 466df96b05896eefbdd10e4c158133542740882d Mon Sep 17 00:00:00 2001 +From: RToax <2386499836@qq.com> +Date: Thu, 30 Sep 2021 06:40:57 +0000 +Subject: [PATCH] kpatch_user.c: fix gcc warning +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +While using gcc version 10.3.1 to compile libcareplus, we +will get the following warning: + +warning: passing argument 2 to restrict-qualified parameter aliases with argument 1 +gcc -Wall -g -O2 -D_GNU_SOURCE -I /home/rongtao/libcareplus/src -Wuninitialized -Wreturn-type -Wno-builtin-macro-redefined -Wno-deprecated-declarations -DDEBUG -O0 -g -o kpatch_user.o -c kpatch_user.c +kpatch_user.c: In function ‘processes_do’: +kpatch_user.c:895:22: warning: passing argument 2 to restrict-qualified parameter aliases with argument 1 [-Wrestrict] + rv = readlink(buf, buf, sizeof(buf)); + +This patch will fix it. + +Signed-off-by: RToax <2386499836@qq.com> +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_user.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/kpatch_user.c b/src/kpatch_user.c +index 11e3408..c74a5cd 100644 +--- a/src/kpatch_user.c ++++ b/src/kpatch_user.c +@@ -869,7 +869,7 @@ processes_do(int pid, callback_t callback, void *data) + DIR *dir; + struct dirent *de; + int ret = 0, rv; +- char *tmp, buf[64]; ++ char *tmp, buf[64], buf2[64]; + + if (pid != -1) + return callback(pid, data); +@@ -892,7 +892,7 @@ processes_do(int pid, callback_t callback, void *data) + continue; + + snprintf(buf, sizeof(buf), "/proc/%d/exe", pid); +- rv = readlink(buf, buf, sizeof(buf)); ++ rv = readlink(buf, buf2, sizeof(buf2)); + if (rv == -1) { + if (errno == ENOENT) + kpdebug("skipping kernel thread %d\n", pid); +-- +2.27.0 + diff --git a/libcareplus.spec b/libcareplus.spec index 62a4d53..6e934f2 100644 --- a/libcareplus.spec +++ b/libcareplus.spec @@ -3,7 +3,7 @@ Version: 0.1.4 Name: libcareplus Summary: LibcarePlus tools -Release: 9 +Release: 10 Group: Applications/System License: GPLv2 Url: https://gitee.com/openeuler/libcareplus @@ -58,6 +58,7 @@ Patch0046: 0045-kpatch_ptrace-Split-function-wait_for_mmap.patch Patch0047: 0046-kpatch_ptrace-Split-function-kpatch_ptrace_kickstart.patch Patch0048: 0047-Allow-init_t-create-lnk-file.patch Patch0049: 0048-libcare-patch-make-add-j-jobs-option.patch +Patch0050: 0049-kpatch_user.c-fix-gcc-warning.patch BuildRequires: elfutils-libelf-devel libunwind-devel gcc systemd @@ -213,6 +214,9 @@ exit 0 %endif %changelog +* Mon Feb 07 2022 imxcc - 0.1.4.10 +- kpatch_user.c: fix gcc warning + * Mon Feb 07 2022 imxcc - 0.1.4.9 - libcare-patch-make: add `-j|--jobs` option -- Gitee From 781c686b3cf79bd1a8af2c7988b277b24f2ce54e Mon Sep 17 00:00:00 2001 From: imxcc Date: Mon, 7 Feb 2022 14:31:10 +0800 Subject: [PATCH 4/9] New support for GCC compilation options Signed-off-by: imxcc --- ...are-cc-add-gcc-iquote-option-support.patch | 33 +++++++++++++++++++ 0051-kpatch_cc.c-support-gcc-MQ-option.patch | 28 ++++++++++++++++ libcareplus.spec | 8 ++++- 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 0050-libcare-cc-add-gcc-iquote-option-support.patch create mode 100644 0051-kpatch_cc.c-support-gcc-MQ-option.patch diff --git a/0050-libcare-cc-add-gcc-iquote-option-support.patch b/0050-libcare-cc-add-gcc-iquote-option-support.patch new file mode 100644 index 0000000..0569370 --- /dev/null +++ b/0050-libcare-cc-add-gcc-iquote-option-support.patch @@ -0,0 +1,33 @@ +From db9a3f97972a2cb30a9edc02dff3108fc7a34d13 Mon Sep 17 00:00:00 2001 +From: Luo Yifan +Date: Tue, 13 Oct 2020 10:53:54 +0800 +Subject: [PATCH 50/51] libcare-cc: add gcc iquote option support + +The -I option has been deprecated by gcc. Newer projects like QEMU 2.12 +now use -iquote instead of -I. Hereby add iquote option support to make +libcare work with these projects. + +reference: https://github.com/cloudlinux/libcare/pull/52/commits/2b0894f49527e5d04d5fcad05cf6efdd2df04a95 + +Signed-off-by: Luo Yifan +Reviewed-by: Bihong Yu +--- + src/kpatch_cc.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/kpatch_cc.c b/src/kpatch_cc.c +index 7f17fdf..b901551 100644 +--- a/src/kpatch_cc.c ++++ b/src/kpatch_cc.c +@@ -402,6 +402,8 @@ static void init(int argc_, const char **argv_) + i++; + if (strcmp(arg + 2, "system") == 0) + i++; ++ if (strcmp(arg + 2, "quote") == 0) ++ i++; + continue; + case 'e': + case 'T': +-- +2.27.0 + diff --git a/0051-kpatch_cc.c-support-gcc-MQ-option.patch b/0051-kpatch_cc.c-support-gcc-MQ-option.patch new file mode 100644 index 0000000..88438fb --- /dev/null +++ b/0051-kpatch_cc.c-support-gcc-MQ-option.patch @@ -0,0 +1,28 @@ +From 9966557f076b853c72673f9e03d08853afe993f9 Mon Sep 17 00:00:00 2001 +From: RToax <2386499836@qq.com> +Date: Tue, 28 Sep 2021 09:15:26 +0000 +Subject: [PATCH 51/51] kpatch_cc.c: support gcc -MQ option + +Signed-off-by:RToax <2386499836@qq.com> +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_cc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/kpatch_cc.c b/src/kpatch_cc.c +index b901551..312c9e5 100644 +--- a/src/kpatch_cc.c ++++ b/src/kpatch_cc.c +@@ -394,7 +394,7 @@ static void init(int argc_, const char **argv_) + argv[i] = NULL; + continue; + case 'M': +- if (arg[2] == 'F' || arg[2] == 'T') ++ if (arg[2] == 'F' || arg[2] == 'T' || arg[2] == 'Q') + i++; + continue; + case 'i': +-- +2.27.0 + diff --git a/libcareplus.spec b/libcareplus.spec index 6e934f2..f34e8c7 100644 --- a/libcareplus.spec +++ b/libcareplus.spec @@ -3,7 +3,7 @@ Version: 0.1.4 Name: libcareplus Summary: LibcarePlus tools -Release: 10 +Release: 11 Group: Applications/System License: GPLv2 Url: https://gitee.com/openeuler/libcareplus @@ -59,6 +59,8 @@ Patch0047: 0046-kpatch_ptrace-Split-function-kpatch_ptrace_kickstart.patch Patch0048: 0047-Allow-init_t-create-lnk-file.patch Patch0049: 0048-libcare-patch-make-add-j-jobs-option.patch Patch0050: 0049-kpatch_user.c-fix-gcc-warning.patch +Patch0051: 0050-libcare-cc-add-gcc-iquote-option-support.patch +Patch0052: 0051-kpatch_cc.c-support-gcc-MQ-option.patch BuildRequires: elfutils-libelf-devel libunwind-devel gcc systemd @@ -214,6 +216,10 @@ exit 0 %endif %changelog +* Mon Feb 07 2022 imxcc - 0.1.4.11 +- kpatch_cc: support gcc -MQ option +- libcare-cc: add gcc iquote option support + * Mon Feb 07 2022 imxcc - 0.1.4.10 - kpatch_user.c: fix gcc warning -- Gitee From 5c9f2c9cd9df5b4b7fc5d78ca64cdd4c645dcb50 Mon Sep 17 00:00:00 2001 From: imxcc Date: Mon, 7 Feb 2022 20:12:25 +0800 Subject: [PATCH 5/9] add patch maganer and some bugfix Signed-off-by: imxcc --- ...ecute-config-scripts-before-building.patch | 30 + ...support-ignoring-functions-which-we-.patch | 132 ++++ ...h_parse-modify-is_variable_start-for.patch | 67 ++ ...are-ctl-implement-applied-patch-list.patch | 392 +++++++++++ 0056-libcare-ctl-introduce-patch-id.patch | 625 ++++++++++++++++++ ...h_elf-Add-LDR-and-B-instruction-relo.patch | 155 +++++ ...h_parse-improve-VAR_CBLOCK-start-ind.patch | 64 ++ ...support-for-TLS-symbol-with-IE-model.patch | 406 ++++++++++++ ...add-R_AARCH64_LDST32_ABS_LO12_NC-rel.patch | 47 ++ ...process-fix-region-start-calculation.patch | 87 +++ ...-Add-ldr-and-ldrb-relocation-for-aar.patch | 62 ++ libcareplus.spec | 27 +- 12 files changed, 2093 insertions(+), 1 deletion(-) create mode 100644 0052-src-Makefile-execute-config-scripts-before-building.patch create mode 100644 0053-kpatch_gensrc.c-support-ignoring-functions-which-we-.patch create mode 100644 0054-arch-aarch64-arch_parse-modify-is_variable_start-for.patch create mode 100644 0055-libcare-ctl-implement-applied-patch-list.patch create mode 100644 0056-libcare-ctl-introduce-patch-id.patch create mode 100644 0057-arch-aarch64-arch_elf-Add-LDR-and-B-instruction-relo.patch create mode 100644 0058-arch-aarch64-arch_parse-improve-VAR_CBLOCK-start-ind.patch create mode 100644 0059-tls-add-support-for-TLS-symbol-with-IE-model.patch create mode 100644 0060-arch64-arch_elf-add-R_AARCH64_LDST32_ABS_LO12_NC-rel.patch create mode 100644 0061-process-fix-region-start-calculation.patch create mode 100644 0062-aarch64-arch_elf-Add-ldr-and-ldrb-relocation-for-aar.patch diff --git a/0052-src-Makefile-execute-config-scripts-before-building.patch b/0052-src-Makefile-execute-config-scripts-before-building.patch new file mode 100644 index 0000000..f2442b4 --- /dev/null +++ b/0052-src-Makefile-execute-config-scripts-before-building.patch @@ -0,0 +1,30 @@ +From cf64f81949b89953b64bfb6d6f898733eb68925c Mon Sep 17 00:00:00 2001 +From: Bihong Yu +Date: Wed, 3 Nov 2021 04:33:08 -0400 +Subject: [PATCH 52/62] src/Makefile: execute config scripts before building + +We support aarch64 and x86_64, so we need distinguish between +different architectures, so get arch before building. + +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index 2649ee3..3cb1358 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -20,7 +20,7 @@ CFLAGS_WARN += $(call cc-option,-Wno-builtin-macro-redefined) + CFLAGS_WARN += $(call cc-option,-Wno-deprecated-declarations) + CFLAGS = $(CFLAGS_MISC) $(CFLAGS_WARN) + +-ARCH := $(shell cat arch.desc) ++ARCH := $(shell sh config; cat arch.desc) + ifeq ($(ARCH),aarch64) + VPATH = arch/aarch64 + else +-- +2.27.0 + diff --git a/0053-kpatch_gensrc.c-support-ignoring-functions-which-we-.patch b/0053-kpatch_gensrc.c-support-ignoring-functions-which-we-.patch new file mode 100644 index 0000000..d48a042 --- /dev/null +++ b/0053-kpatch_gensrc.c-support-ignoring-functions-which-we-.patch @@ -0,0 +1,132 @@ +From e6ddf3a525742a83ade100dcc30a13f96a98dd67 Mon Sep 17 00:00:00 2001 +From: Bihong Yu +Date: Wed, 3 Nov 2021 05:10:17 -0400 +Subject: [PATCH 53/62] kpatch_gensrc.c: support ignoring functions which we + don't need + +Adding or deleting statements in the function will cause the +subsequent __LINE__ macro to be offset. The change will also be +recognized by the patch tools and made into the patch file, +which is not what we expected. + +So we add a configure file 'patch_func_names.conf'. We can write +the functions we need into the configuration file. When the patch +tools make a patch, they will filter out other functions that we +don't need based on the content in the configuration file. + +Signed-off-by: Jiajie Li +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_gensrc.c | 65 ++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 59 insertions(+), 6 deletions(-) + +diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c +index 4f978f8..36ff24f 100644 +--- a/src/kpatch_gensrc.c ++++ b/src/kpatch_gensrc.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.09.23 - kpatch_gensrc.c: support ignoring functions which we don't need ++ * Huawei Technologies Co., Ltd. ++ ******************************************************************************/ ++ + #include + #include + #include +@@ -38,9 +43,57 @@ static int nr_must_adapt_syms; + static int force_gotpcrel; + static int force_global; + +-static inline int in_syms_list(char *filename, kpstr_t *sym, const struct sym_desc *sym_arr, int nr_syms) ++static char* patch_func_file_name = "/etc/libcare/patch_func_names.conf"; ++ ++static int is_func_in_patch_func_file(FILE *fp, kpstr_t *sym) ++{ ++ char buffer[1024]; ++ ++ /* 1024 should be enough for func_cblock name */ ++ if (sym->l <= 0 || sym->l > sizeof(buffer)) ++ return 0; ++ ++ rewind(fp); ++ while (!feof(fp)) { ++ memset(buffer, 0, sizeof(buffer)); ++ fgets(buffer, sizeof(buffer), fp); ++ if (strncmp(buffer, sym->s, sym->l) == 0) { ++ return 1; ++ } ++ } ++ return 0; ++} ++ ++static inline int in_syms_list(char *filename, kpstr_t *sym, const struct sym_desc *sym_arr, int nr_syms, int cblock_type) + { +- int i, len; ++ int i, len, rv; ++ ++ /* ++ * Since we need to ignore some unwanted function being patched, ++ * so we will first check if there is a file called "patch_func_name". ++ * If there isn't, we will continue as usual. ++ * If there is, we will ignore those function which is not in the file. ++ */ ++ if (cblock_type == CBLOCK_FUNC && sym_arr == ignore_syms) { ++ FILE *fp = fopen(patch_func_file_name, "r"); ++ if (fp == NULL) { ++ goto no_conf; ++ } ++ ++ rv = is_func_in_patch_func_file(fp, sym); ++ ++ if (fclose(fp) != 0) { ++ kpfatal("Error in closing file %s\n", patch_func_file_name); ++ } ++ ++ /* ++ * If rv is 1, which means symbol is in patch_func_file, ++ * which means we cann't ignore it. So return 0, otherwise return 1. ++ */ ++ return rv == 1 ? 0 : 1; ++ } ++ ++no_conf: + for (i = 0; i < nr_syms; i++) { + if (sym_arr[i].filename) { + len = strlen(sym_arr[i].filename); +@@ -811,7 +864,7 @@ static void cblock_var_check_content(struct cblock *b0) + cblock_print2(b0, b1); + kplog(LOG_DEBUG, "-------------------------------------------\n"); + +- if (in_syms_list(b1->f->basename, &b0->human_name, ignore_syms, nr_ignore_syms)) ++ if (in_syms_list(b1->f->basename, &b0->human_name, ignore_syms, nr_ignore_syms, b0->type)) + return; + + if (cblock_cmp(b0, b1, CBLOCK_CMP_SECT|CBLOCK_CMP_RENAME)) +@@ -1114,12 +1167,12 @@ static void analyze_func_cblocks(struct kp_file *f0, struct kp_file *f1) + if (b1->type != CBLOCK_FUNC || !b1->pair) + continue; + +- if (in_syms_list(b1->f->basename, &b1->human_name, ignore_syms, nr_ignore_syms)) { ++ if (in_syms_list(b1->f->basename, &b1->human_name, ignore_syms, nr_ignore_syms, b1->type)) { + rename_del(b1->f, &b1->name); + rename_del(b1->pair->f, &b1->pair->name); + b1->ignore = 1; + } +- if (in_syms_list(b1->f->basename, &b1->human_name, unlink_syms, nr_unlink_syms)) { ++ if (in_syms_list(b1->f->basename, &b1->human_name, unlink_syms, nr_unlink_syms, b1->type)) { + kplog(LOG_DEBUG, "unlinking %.*s\n", b1->name.l, b1->name.s); + b1->unlink = 1; + } +@@ -1141,7 +1194,7 @@ static void analyze_func_cblocks(struct kp_file *f0, struct kp_file *f1) + rename_add(b1->f, &b1->name, &b0->name); + b1->ignore = 1; + } else { +- if (!b1->adapted && in_syms_list(b1->f->basename, &b1->human_name, must_adapt_syms, nr_must_adapt_syms)) { ++ if (!b1->adapted && in_syms_list(b1->f->basename, &b1->human_name, must_adapt_syms, nr_must_adapt_syms, b1->type)) { + not_adapted= 1; + kplog(LOG_ERR, "FATAL! not adapted function change %.*s\n", b1->name.l, b1->name.s); + } +-- +2.27.0 + diff --git a/0054-arch-aarch64-arch_parse-modify-is_variable_start-for.patch b/0054-arch-aarch64-arch_parse-modify-is_variable_start-for.patch new file mode 100644 index 0000000..c874832 --- /dev/null +++ b/0054-arch-aarch64-arch_parse-modify-is_variable_start-for.patch @@ -0,0 +1,67 @@ +From afd9b74e49cb4f392b9f5c5a72ea7c1a8f5981fa Mon Sep 17 00:00:00 2001 +From: Jiajie Li +Date: Mon, 30 Nov 2020 16:50:41 +0800 +Subject: [PATCH 54/62] arch/aarch64/arch_parse: modify is_variable_start for + arm asm + +Because is arm, the .rodata pseudoinstruction is used for all rodata. +If it is seperate by .set pseudoinstruction, the .rodata sentence will +be recognized as OTHER_CBLOCK, as a result, some rodata will be in .text +which will change function offset in .text. So we need to adjust it. + +Signed-off-by: Jiajie Li +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/arch/aarch64/arch_parse.c | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +diff --git a/src/arch/aarch64/arch_parse.c b/src/arch/aarch64/arch_parse.c +index e0f0c8b..a79e27f 100644 +--- a/src/arch/aarch64/arch_parse.c ++++ b/src/arch/aarch64/arch_parse.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.09.23 - arch/aarch64/arch_parse: modify is_variable_start function for gensrc in arm ++ * Huawei Technologies Co., Ltd. - 0.1.4-10 ++ ******************************************************************************/ ++ + #include + + #include "include/kpatch_log.h" +@@ -105,6 +110,7 @@ int is_variable_start(struct kp_file *f, int l, int *e, int *pglobl, kpstr_t *nm + char *s; + int l0 = l, globl = 0; + kpstr_t nm2, attr; ++ nm2.s = NULL; + + kpstrset(nm, "", 0); + for ( ; cline(f, l); l++) { +@@ -130,12 +136,22 @@ int is_variable_start(struct kp_file *f, int l, int *e, int *pglobl, kpstr_t *nm + case DIRECTIVE_TEXT: + case DIRECTIVE_DATA: + case DIRECTIVE_BSS: +- case DIRECTIVE_SECTION: + case DIRECTIVE_PUSHSECTION: + case DIRECTIVE_POPSECTION: + case DIRECTIVE_PREVIOUS: + case DIRECTIVE_SUBSECTION: + break; ++ case DIRECTIVE_SECTION: ++ if (nm2.s != NULL) ++ break; ++ get_token(&s, &nm2); ++ get_token(&s, &nm2); ++ if (kpstrcmpz(&nm2, ".rodata") == 0) { ++ *nm = nm2; ++ if(e) ++ *e = l + 2; ++ return 1; ++ } + case DIRECTIVE_TYPE: + get_type_args(cline(f, l), &nm2, &attr); + if (kpstrcmpz(&attr, "%object") && kpstrcmpz(&attr, "%tls_object")) +-- +2.27.0 + diff --git a/0055-libcare-ctl-implement-applied-patch-list.patch b/0055-libcare-ctl-implement-applied-patch-list.patch new file mode 100644 index 0000000..62848c7 --- /dev/null +++ b/0055-libcare-ctl-implement-applied-patch-list.patch @@ -0,0 +1,392 @@ +From f2011e266d923e8928667736d57fec9b5cdcfa7e Mon Sep 17 00:00:00 2001 +From: Hao Wang +Date: Sat, 5 Dec 2020 17:54:02 +0800 +Subject: [PATCH 55/62] libcare-ctl: implement applied patch list + +Implement applied patch list to support multi-patches management. + +Signed-off-by: Hao Wang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/include/kpatch_process.h | 29 ++++++++++++----- + src/kpatch_patch.c | 61 +++++++----------------------------- + src/kpatch_process.c | 58 ++++++++++++++++++++++++++++++---- + src/kpatch_user.c | 22 ++++++++----- + 4 files changed, 99 insertions(+), 71 deletions(-) + +diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h +index b96a6da..431e598 100644 +--- a/src/include/kpatch_process.h ++++ b/src/include/kpatch_process.h +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.09.23 - libcare-ctl: implement applied patch list ++ * Huawei Technologies Co., Ltd. - 0.1.4-11 ++ ******************************************************************************/ ++ + #ifndef __KPATCH_PROCESS__ + #define __KPATCH_PROCESS__ + +@@ -32,6 +37,11 @@ struct obj_vm_area { + struct list_head list; + }; + ++struct obj_applied_patch { ++ struct list_head list; ++ struct object_file *patch_file; ++}; ++ + struct object_file { + struct list_head list; + kpatch_process_t *proc; +@@ -95,8 +105,10 @@ struct object_file { + /* Pointer to the previous hole in the patient's mapping */ + struct vm_hole *previous_hole; + +- /* Pointer to the applied patch, if any */ +- struct object_file *applied_patch; ++ /* Pointer to the applied patch list, if any */ ++ struct list_head applied_patch; ++ /* The number of applied patch */ ++ size_t num_applied_patch; + + /* Do we have patch for the object? */ + unsigned int has_patch:1; +@@ -204,11 +216,11 @@ kpatch_process_get_obj_by_regex(kpatch_process_t *proc, const char *regex); + static inline int + is_kernel_object_name(char *name) + { +- if ((name[0] == '[') && (name[strlen(name) - 1] == ']')) +- return 1; +- if (strncmp(name, "anon_inode", 10) == 0) +- return 1; +- return 0; ++ if ((name[0] == '[') && (name[strlen(name) - 1] == ']')) ++ return 1; ++ if (strncmp(name, "anon_inode", 10) == 0) ++ return 1; ++ return 0; + } + + struct vm_hole *next_hole(struct vm_hole *hole, struct list_head *head); +@@ -220,4 +232,7 @@ unsigned long object_find_patch_region(struct object_file *obj, + size_t memsize, + struct vm_hole **hole); + ++int kpatch_object_add_applied_patch(struct object_file *o, struct object_file *new); ++struct object_file * kpatch_object_find_applied_patch(struct object_file *o); ++ + #endif /* ifndef __KPATCH_PROCESS__ */ +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index 4a1d149..3f2665d 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.09.23 - libcare-ctl: implement applied patch list ++ * Huawei Technologies Co., Ltd. - 0.1.4-11 ++ ******************************************************************************/ ++ + #include + #include + #include +@@ -300,12 +305,6 @@ object_apply_patch(struct object_file *o) + if (o->skpfile == NULL || o->is_patch) + return 0; + +- if (o->applied_patch) { +- kpinfo("Object '%s' already have a patch, not patching\n", +- o->name); +- return 0; +- } +- + ret = duplicate_kp_file(o); + if (ret < 0) { + kplogerror("can't duplicate kp_file\n"); +@@ -379,43 +378,6 @@ object_apply_patch(struct object_file *o) + static int + object_unapply_patch(struct object_file *o, int check_flag); + +-static int +-object_unapply_old_patch(struct object_file *o) +-{ +- struct kpatch_file *kpatch_applied, *kpatch_storage; +- int ret; +- +- if (o->skpfile == NULL || o->is_patch || o->applied_patch == NULL) +- return 0; +- +- kpatch_applied = o->applied_patch->kpfile.patch; +- kpatch_storage = o->skpfile->patch; +- +- if (kpatch_applied->user_level >= kpatch_storage->user_level) { +- kpinfo("'%s' applied patch level is %d (storage has %d\n)\n", +- o->name, +- kpatch_applied->user_level, +- kpatch_storage->user_level); +- return 1; +- } +- +- printf("%s: replacing patch level %d with level %d\n", +- o->name, +- kpatch_applied->user_level, +- kpatch_storage->user_level); +- ret = object_unapply_patch(o, /* check_flag */ 0); +- if (ret < 0) +- kperr("can't unapply patch for %s\n", o->name); +- else { +- /* TODO(pboldin): handle joining the holes here */ +- o->applied_patch = NULL; +- o->info = NULL; +- o->ninfo = 0; +- } +- +- return ret; +-} +- + static int + kpatch_apply_patches(kpatch_process_t *proc) + { +@@ -424,10 +386,6 @@ kpatch_apply_patches(kpatch_process_t *proc) + + list_for_each_entry(o, &proc->objs, list) { + +- ret = object_unapply_old_patch(o); +- if (ret < 0) +- break; +- + ret = object_apply_patch(o); + if (ret < 0) + goto unpatch; +@@ -551,6 +509,7 @@ object_find_applied_patch_info(struct object_file *o) + size_t nalloc = 0; + struct process_mem_iter *iter; + int ret; ++ struct object_file *target = kpatch_object_find_applied_patch(o); + + if (o->info != NULL) + return 0; +@@ -579,8 +538,8 @@ object_find_applied_patch_info(struct object_file *o) + o->ninfo++; + } while (1); + +- o->applied_patch->info = o->info; +- o->applied_patch->ninfo = o->ninfo; ++ target->info = o->info; ++ target->ninfo = o->ninfo; + + err: + kpatch_process_mem_iter_free(iter); +@@ -660,12 +619,14 @@ kpatch_unapply_patches(kpatch_process_t *proc, + int ret; + size_t unapplied = 0; + ++ /* TODO: disable before patch->id is introduced + ret = kpatch_process_associate_patches(proc); + if (ret < 0) + return ret; ++ */ + + list_for_each_entry(o, &proc->objs, list) { +- if (o->applied_patch == NULL) ++ if (o->num_applied_patch == 0) + continue; + + if (!kpatch_should_unapply_patch(o, buildids, nbuildids)) +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index f987b7e..e29c4f4 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.09.23 - libcare-ctl: implement applied patch list ++ * Huawei Technologies Co., Ltd. - 0.1.4-11 ++ ******************************************************************************/ ++ + #include + #include + #include +@@ -107,6 +112,8 @@ process_new_object(kpatch_process_t *proc, + } + list_init(&o->list); + list_init(&o->vma); ++ list_init(&o->applied_patch); ++ o->num_applied_patch = 0; + o->proc = proc; + o->skpfile = NULL; + o->dev = dev; +@@ -126,7 +133,6 @@ process_new_object(kpatch_process_t *proc, + o->kpta = 0UL; + o->info = NULL; + o->ninfo = 0; +- o->applied_patch = NULL; + o->vma_start = ~(unsigned long)0; + o->load_offset = ~(unsigned long)0; + memset(&o->ehdr, 0, sizeof(o->ehdr)); +@@ -289,12 +295,17 @@ static void + object_destroy(struct object_file *o) + { + struct obj_vm_area *ovma, *tmp; ++ struct obj_applied_patch *patch, *temp; + + list_del(&o->list); + list_for_each_entry_safe(ovma, tmp, &o->vma, list) { + list_del(&ovma->list); + free(ovma); + } ++ list_for_each_entry_safe(patch, temp, &o->applied_patch, list) { ++ list_del(&patch->list); ++ free(patch); ++ } + o->proc->num_objs--; + if (o->jmp_table) + free(o->jmp_table); +@@ -309,7 +320,7 @@ object_destroy(struct object_file *o) + if (o->is_patch) { + free(o->info); + } +- if (o->applied_patch == NULL) ++ if (o->num_applied_patch == 0) + free(o->kpfile.patch); + free(o); + } +@@ -329,8 +340,8 @@ kpatch_object_dump(struct object_file *o) + if (log_level < LOG_INFO) + return; + +- if (o->applied_patch) +- patchinfo = o->applied_patch->name; ++ if (o->num_applied_patch > 0) ++ patchinfo = "yes"; + else + patchinfo = o->skpfile != NULL ? "yes" : "no"; + +@@ -393,11 +404,12 @@ kpatch_process_associate_patches(kpatch_process_t *proc) + struct obj_vm_area *patchvma; + + bid = kpatch_get_buildid(o); +- if (o->applied_patch != NULL || bid == NULL || ++ if (bid == NULL || + strcmp(bid, objpatch->kpfile.patch->uname)) + continue; + +- o->applied_patch = objpatch; ++ if (kpatch_object_add_applied_patch(o, objpatch) < 0) ++ return -1; + patchvma = list_first_entry(&objpatch->vma, + struct obj_vm_area, + list); +@@ -1124,3 +1136,37 @@ kpatch_process_get_obj_by_regex(kpatch_process_t *proc, const char *regex) + regfree(&r); + return found; + } ++ ++int ++kpatch_object_add_applied_patch(struct object_file *o, struct object_file *new) ++{ ++ struct obj_applied_patch *patch; ++ ++ patch = malloc(sizeof(*patch)); ++ if (!patch) ++ return -1; ++ ++ if (!o || !new) { ++ free(patch); ++ return -1; ++ } ++ ++ patch->patch_file = new; ++ list_add(&patch->list, &o->applied_patch); ++ o->num_applied_patch++; ++ ++ return 0; ++} ++ ++struct object_file * ++kpatch_object_find_applied_patch(struct object_file *o) ++{ ++ struct obj_applied_patch *patch; ++ struct object_file *target = NULL; ++ ++ list_for_each_entry(patch, &o->applied_patch, list) { ++ target = patch->patch_file; ++ } ++ ++ return target; ++} +diff --git a/src/kpatch_user.c b/src/kpatch_user.c +index c74a5cd..aef1ba8 100644 +--- a/src/kpatch_user.c ++++ b/src/kpatch_user.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.09.23 - libcare-ctl: implement applied patch list ++ * Huawei Technologies Co., Ltd. - 0.1.4-11 ++ ******************************************************************************/ ++ + #include + #include + #include +@@ -232,6 +237,7 @@ object_info(struct info_data *data, struct object_file *o, + int pid = proc->pid; + struct kpatch_storage_patch *patch = NULL; + int patch_found = PATCH_NOT_FOUND; ++ struct obj_applied_patch *applied_patch; + + if (!o->is_elf || is_kernel_object_name(o->name)) + return 0; +@@ -262,7 +268,7 @@ object_info(struct info_data *data, struct object_file *o, + buildid, + &patch); + +- if (o->applied_patch == NULL && !patch_found) ++ if (o->num_applied_patch == 0 && !patch_found) + return 0; + + if (!*pid_printed) { +@@ -270,17 +276,17 @@ object_info(struct info_data *data, struct object_file *o, + *pid_printed = 1; + } + +- printf("%s buildid=%s", o->name, buildid); +- if (o->applied_patch != NULL) { +- int patchlvl = o->kpfile.patch->user_level; +- printf(" patchlvl=%d", patchlvl); ++ printf("process=%s; buildid=%s; applied patch number=%ld\n", o->name, buildid, o->num_applied_patch); ++ list_for_each_entry(applied_patch, &o->applied_patch, list) { ++ printf("--->patch->magic=%s\n", applied_patch->patch_file->kpfile.patch->magic); + } ++ + if (storage_patch_found(patch) && patch->patchlevel) { + printf(" latest=%d", patch->patchlevel); + } + + /* empty patch patchlevel=0 with description of bugs in the version */ +- if (patch && patch->patchlevel == 0 && o->applied_patch == NULL) { ++ if (patch && patch->patchlevel == 0 && o->num_applied_patch == 0) { + printf(" %sVULNERABLE%s\n", RED, RESET); + + if (data->print_description) { +@@ -299,7 +305,7 @@ object_info(struct info_data *data, struct object_file *o, + + /* Old or no patch applied but we have one in storage */ + if (patch && patch->patchlevel != 0 && +- (o->applied_patch == NULL || patch->patchlevel > o->kpfile.patch->user_level)) { ++ (o->num_applied_patch == 0 || patch->patchlevel > o->kpfile.patch->user_level)) { + if (data->print_description) { + char *desc; + +@@ -314,7 +320,7 @@ object_info(struct info_data *data, struct object_file *o, + } + + /* patch applied and is latest version. show descripition for it */ +- if (patch && o->applied_patch != NULL && data->print_description) { ++ if (patch && (o->num_applied_patch > 0) && data->print_description) { + char *desc; + + printf("\n%slatest patch applied\n", GREEN); +-- +2.27.0 + diff --git a/0056-libcare-ctl-introduce-patch-id.patch b/0056-libcare-ctl-introduce-patch-id.patch new file mode 100644 index 0000000..56386ff --- /dev/null +++ b/0056-libcare-ctl-introduce-patch-id.patch @@ -0,0 +1,625 @@ +From 2e398b2e7d5665e1ad8dcc0596af5a73093844ad Mon Sep 17 00:00:00 2001 +From: Hao Wang +Date: Mon, 7 Dec 2020 14:18:54 +0800 +Subject: [PATCH 56/62] libcare-ctl: introduce patch-id + +Unique patch-id is necessary when multi-patches unpatching and querying. +Introduce patch-id and bring two interface changes: + +1.making kpatch: +kpatch_make -b -i + +2.unapplying kpatch: +libcare-ctl unpatch -p -i + +Signed-off-by: Hao Wang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/include/kpatch_file.h | 6 ++++ + src/include/kpatch_patch.h | 6 ++++ + src/include/kpatch_process.h | 10 +++++-- + src/kpatch_make.c | 22 ++++++++++---- + src/kpatch_patch.c | 43 +++++++++++++++++++------- + src/kpatch_process.c | 58 ++++++++++++++++++++++++++---------- + src/kpatch_user.c | 39 +++++++++++++++--------- + src/libcare-patch-make | 16 ++++++++-- + 8 files changed, 149 insertions(+), 51 deletions(-) + +diff --git a/src/include/kpatch_file.h b/src/include/kpatch_file.h +index 0b314e3..e307d0c 100644 +--- a/src/include/kpatch_file.h ++++ b/src/include/kpatch_file.h +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.09.23 - libcare-ctl: introduce patch-id ++ * Huawei Technologies Co., Ltd. - 0.1.4-12 ++ ******************************************************************************/ ++ + #ifndef __KPATCH_FILE_H__ + #define __KPATCH_FILE_H__ + +@@ -113,6 +118,7 @@ struct kpatch_payload { + + struct kpatch_file { + char magic[8]; /* magic string */ ++ char id[8]; /* unique patch id */ + unsigned char flags; + unsigned char safety_method; + char pad[6]; +diff --git a/src/include/kpatch_patch.h b/src/include/kpatch_patch.h +index fa96b08..bd086df 100644 +--- a/src/include/kpatch_patch.h ++++ b/src/include/kpatch_patch.h +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.09.23 - libcare-ctl: introduce patch-id ++ * Huawei Technologies Co., Ltd. - 0.1.4-12 ++ ******************************************************************************/ ++ + #ifndef __KPATCH_PATCH__ + #define __KPATCH_PATCH__ + +@@ -20,6 +25,7 @@ struct patch_data { + struct unpatch_data { + char **buildids; + int nbuildids; ++ const char *patch_id; + }; + + int process_patch(int pid, void *_data); +diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h +index 431e598..9409917 100644 +--- a/src/include/kpatch_process.h ++++ b/src/include/kpatch_process.h +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.09.23 - libcare-ctl: introduce patch-id ++ * Huawei Technologies Co., Ltd. - 0.1.4-12 ++ * + * 2021.09.23 - libcare-ctl: implement applied patch list + * Huawei Technologies Co., Ltd. - 0.1.4-11 + ******************************************************************************/ +@@ -179,11 +182,11 @@ kpatch_object_allocate_patch(struct object_file *obj, + size_t sz); + + int +-kpatch_process_associate_patches(kpatch_process_t *proc); ++kpatch_process_associate_patches(kpatch_process_t *proc, const char *patch_id); + int + kpatch_process_parse_proc_maps(kpatch_process_t *proc); + int +-kpatch_process_map_object_files(kpatch_process_t *proc); ++kpatch_process_map_object_files(kpatch_process_t *proc, const char *patch_id); + int + kpatch_process_attach(kpatch_process_t *proc); + +@@ -232,7 +235,8 @@ unsigned long object_find_patch_region(struct object_file *obj, + size_t memsize, + struct vm_hole **hole); + ++int kpatch_object_check_duplicate_id(struct object_file *o, const char *patch_id); + int kpatch_object_add_applied_patch(struct object_file *o, struct object_file *new); +-struct object_file * kpatch_object_find_applied_patch(struct object_file *o); ++struct object_file * kpatch_object_find_applied_patch(struct object_file *o, const char *patch_id); + + #endif /* ifndef __KPATCH_PROCESS__ */ +diff --git a/src/kpatch_make.c b/src/kpatch_make.c +index 6a173e6..043cd24 100644 +--- a/src/kpatch_make.c ++++ b/src/kpatch_make.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.09.23 - libcare-ctl: introduce patch-id ++ * Huawei Technologies Co., Ltd. - 0.1.4-12 ++ ******************************************************************************/ ++ + #include + #include + #include +@@ -26,7 +31,7 @@ static void xerror(const char *fmt, ...) + exit(1); + } + +-int make_file(int fdo, void *buf1, off_t size, const char *buildid) ++int make_file(int fdo, void *buf1, off_t size, const char *buildid, const char *patch_id) + { + int res; + struct kpatch_file khdr; +@@ -34,6 +39,7 @@ int make_file(int fdo, void *buf1, off_t size, const char *buildid) + memset(&khdr, 0, sizeof(khdr)); + + memcpy(khdr.magic, KPATCH_FILE_MAGIC1, sizeof(khdr.magic)); ++ strncpy(khdr.id, patch_id, sizeof(khdr.id)); + strncpy(khdr.uname, buildid, sizeof(khdr.uname)); + khdr.build_time = (uint64_t)time(NULL); + khdr.csum = 0; /* FIXME */ +@@ -55,9 +61,10 @@ int make_file(int fdo, void *buf1, off_t size, const char *buildid) + + static void usage(void) + { +- printf("Usage: kpatch_make [-d] -n [-v ] -e [-o ] [input2]\n"); ++ printf("Usage: kpatch_make [-d] -n [-v ] -e [-o ] -i [input2]\n"); + printf(" -b buildid = target buildid for patch\n"); + printf(" -d debug (verbose)\n"); ++ printf(" -i unique patch id\n"); + printf("\n"); + printf(" result is printed to output and is the following:\n"); + printf(" header - struct kpatch_file\n"); +@@ -71,9 +78,9 @@ int main(int argc, char **argv) + int fd1, fdo; + void *buf; + struct stat st; +- char *buildid = NULL, *outputname = NULL; ++ char *buildid = NULL, *outputname = NULL, *patch_id = NULL; + +- while ((opt = getopt(argc, argv, "db:o:v:s:")) != -1) { ++ while ((opt = getopt(argc, argv, "db:o:i:v:s:")) != -1) { + switch (opt) { + case 'd': + verbose = 1; +@@ -84,12 +91,15 @@ int main(int argc, char **argv) + case 'o': + outputname = strdup(optarg); + break; ++ case 'i': ++ patch_id = strdup(optarg); ++ break; + default: /* '?' */ + usage(); + } + } + +- if (buildid == NULL) ++ if (buildid == NULL || patch_id == NULL) + usage(); + + fd1 = open(argv[optind], O_RDONLY); +@@ -109,5 +119,5 @@ int main(int argc, char **argv) + xerror("Can't open output file '%s'", outputname); + } + +- return make_file(fdo, buf, st.st_size, buildid); ++ return make_file(fdo, buf, st.st_size, buildid, patch_id); + } +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index 3f2665d..3eb0922 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.09.23 - libcare-ctl: introduce patch-id ++ * Huawei Technologies Co., Ltd. - 0.1.4-12 ++ * + * 2021.09.23 - libcare-ctl: implement applied patch list + * Huawei Technologies Co., Ltd. - 0.1.4-11 + ******************************************************************************/ +@@ -311,6 +314,12 @@ object_apply_patch(struct object_file *o) + return -1; + } + ++ if (kpatch_object_check_duplicate_id(o, (const char *)o->kpfile.patch->id)) { ++ kplogerror("A patch with patch-id(%s) is already applied by %s", ++ o->kpfile.patch->id, o->name); ++ return -1; ++ } ++ + ret = kpatch_elf_load_kpatch_info(o); + if (ret < 0) + return ret; +@@ -450,7 +459,7 @@ int process_patch(int pid, void *_data) + * Because we know uniq BuildID of the object the section addresses + * stored in the patch are valid for the original object. + */ +- ret = kpatch_process_map_object_files(proc); ++ ret = kpatch_process_map_object_files(proc, NULL); + if (ret < 0) + goto out_free; + +@@ -509,11 +518,23 @@ object_find_applied_patch_info(struct object_file *o) + size_t nalloc = 0; + struct process_mem_iter *iter; + int ret; +- struct object_file *target = kpatch_object_find_applied_patch(o); ++ struct object_file *applied_patch; ++ const char *patch_id = NULL; + + if (o->info != NULL) + return 0; + ++ if (o->kpfile.patch) ++ patch_id = o->kpfile.patch->id; ++ else ++ return -1; ++ ++ applied_patch = kpatch_object_find_applied_patch(o, patch_id); ++ if (!applied_patch) { ++ fprintf(stderr, "Failed to find target applied patch!\n"); ++ return -1; ++ } ++ + iter = kpatch_process_mem_iter_init(o->proc); + if (iter == NULL) + return -1; +@@ -538,8 +559,8 @@ object_find_applied_patch_info(struct object_file *o) + o->ninfo++; + } while (1); + +- target->info = o->info; +- target->ninfo = o->ninfo; ++ applied_patch->info = o->info; ++ applied_patch->ninfo = o->ninfo; + + err: + kpatch_process_mem_iter_free(iter); +@@ -613,20 +634,19 @@ kpatch_should_unapply_patch(struct object_file *o, + static int + kpatch_unapply_patches(kpatch_process_t *proc, + char *buildids[], +- int nbuildids) ++ int nbuildids, ++ const char *patch_id) + { + struct object_file *o; + int ret; + size_t unapplied = 0; + +- /* TODO: disable before patch->id is introduced +- ret = kpatch_process_associate_patches(proc); ++ ret = kpatch_process_associate_patches(proc, patch_id); + if (ret < 0) + return ret; +- */ + + list_for_each_entry(o, &proc->objs, list) { +- if (o->num_applied_patch == 0) ++ if (o->is_patch || o->num_applied_patch == 0) + continue; + + if (!kpatch_should_unapply_patch(o, buildids, nbuildids)) +@@ -648,6 +668,7 @@ int process_unpatch(int pid, void *_data) + struct unpatch_data *data = _data; + char **buildids = data->buildids; + int nbuildids = data->nbuildids; ++ const char *patch_id = data->patch_id; + + ret = kpatch_process_init(proc, pid, /* start */ 0, /* send_fd */ -1); + if (ret < 0) +@@ -659,7 +680,7 @@ int process_unpatch(int pid, void *_data) + if (ret < 0) + goto out; + +- ret = kpatch_process_map_object_files(proc); ++ ret = kpatch_process_map_object_files(proc, patch_id); + if (ret < 0) + goto out; + +@@ -667,7 +688,7 @@ int process_unpatch(int pid, void *_data) + if (ret < 0) + goto out; + +- ret = kpatch_unapply_patches(proc, buildids, nbuildids); ++ ret = kpatch_unapply_patches(proc, buildids, nbuildids, patch_id); + + out: + kpatch_process_free(proc); +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index e29c4f4..9753bad 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.09.23 - libcare-ctl: introduce patch-id ++ * Huawei Technologies Co., Ltd. - 0.1.4-12 ++ * + * 2021.09.23 - libcare-ctl: implement applied patch list + * Huawei Technologies Co., Ltd. - 0.1.4-11 + ******************************************************************************/ +@@ -389,10 +392,11 @@ process_add_vm_hole(kpatch_process_t *proc, + } + + int +-kpatch_process_associate_patches(kpatch_process_t *proc) ++kpatch_process_associate_patches(kpatch_process_t *proc, const char *patch_id) + { + struct object_file *o, *objpatch; + size_t found = 0; ++ size_t found_target = 0; + + list_for_each_entry(objpatch, &proc->objs, list) { + +@@ -410,17 +414,24 @@ kpatch_process_associate_patches(kpatch_process_t *proc) + + if (kpatch_object_add_applied_patch(o, objpatch) < 0) + return -1; +- patchvma = list_first_entry(&objpatch->vma, +- struct obj_vm_area, +- list); +- o->kpta = patchvma->inmem.start; +- o->kpfile = objpatch->kpfile; ++ ++ if (patch_id && !strcmp(objpatch->kpfile.patch->id, patch_id)) { ++ patchvma = list_first_entry(&objpatch->vma, ++ struct obj_vm_area, ++ list); ++ o->kpta = patchvma->inmem.start; ++ o->kpfile = objpatch->kpfile; ++ found_target = 1; ++ } + + found++; + break; + } + } + ++ if (patch_id && !found_target) ++ fprintf(stderr, "Failed to find target patch with patch_id=%s!\n", patch_id); ++ + return found; + } + +@@ -518,7 +529,7 @@ error: + } + + int +-kpatch_process_map_object_files(kpatch_process_t *proc) ++kpatch_process_map_object_files(kpatch_process_t *proc, const char *patch_id) + { + struct object_file *o; + int ret; +@@ -533,7 +544,7 @@ kpatch_process_map_object_files(kpatch_process_t *proc) + return -1; + } + +- ret = kpatch_process_associate_patches(proc); ++ ret = kpatch_process_associate_patches(proc, patch_id); + if (ret >= 0) { + kpinfo("Found %d applied patch(es).\n", ret); + } +@@ -1137,18 +1148,33 @@ kpatch_process_get_obj_by_regex(kpatch_process_t *proc, const char *regex) + return found; + } + ++int ++kpatch_object_check_duplicate_id(struct object_file *o, const char *patch_id) ++{ ++ struct obj_applied_patch *applied_patch; ++ ++ list_for_each_entry(applied_patch, &o->applied_patch, list) { ++ if (!strcmp(patch_id, applied_patch->patch_file->kpfile.patch->id)) ++ return 1; ++ } ++ ++ return 0; ++} ++ + int + kpatch_object_add_applied_patch(struct object_file *o, struct object_file *new) + { + struct obj_applied_patch *patch; ++ const char *patch_id; + + patch = malloc(sizeof(*patch)); + if (!patch) + return -1; + +- if (!o || !new) { ++ patch_id = new->kpfile.patch->id; ++ if (kpatch_object_check_duplicate_id(o, patch_id)) { + free(patch); +- return -1; ++ return 0; + } + + patch->patch_file = new; +@@ -1159,14 +1185,16 @@ kpatch_object_add_applied_patch(struct object_file *o, struct object_file *new) + } + + struct object_file * +-kpatch_object_find_applied_patch(struct object_file *o) ++kpatch_object_find_applied_patch(struct object_file *o, const char *patch_id) + { +- struct obj_applied_patch *patch; ++ struct obj_applied_patch *applied_patch; + struct object_file *target = NULL; + +- list_for_each_entry(patch, &o->applied_patch, list) { +- target = patch->patch_file; ++ list_for_each_entry(applied_patch, &o->applied_patch, list) { ++ target = applied_patch->patch_file; ++ if (!strcmp(target->kpfile.patch->id, patch_id)) ++ return target; + } + +- return target; ++ return NULL; + } +diff --git a/src/kpatch_user.c b/src/kpatch_user.c +index aef1ba8..66f3efa 100644 +--- a/src/kpatch_user.c ++++ b/src/kpatch_user.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.09.23 - libcare-ctl: introduce patch-id ++ * Huawei Technologies Co., Ltd. - 0.1.4-12 ++ * + * 2021.09.23 - libcare-ctl: implement applied patch list + * Huawei Technologies Co., Ltd. - 0.1.4-11 + ******************************************************************************/ +@@ -135,11 +138,12 @@ out_err: + } + + static int +-processes_unpatch(int pid, char *buildids[], int nbuildids) ++processes_unpatch(int pid, char *buildids[], int nbuildids, const char *patch_id) + { + struct unpatch_data data = { + .buildids = buildids, +- .nbuildids = nbuildids ++ .nbuildids = nbuildids, ++ .patch_id = patch_id + }; + + return processes_do(pid, process_unpatch, &data); +@@ -149,22 +153,24 @@ static int usage_unpatch(const char *err) + { + if (err) + fprintf(stderr, "err: %s\n", err); +- fprintf(stderr, "usage: libcare-ctl unpatch [options] <-p PID> " ++ fprintf(stderr, "usage: libcare-ctl unpatch [options] <-p PID> <-i patch_id>" + "[Build-ID or name ...]\n"); + fprintf(stderr, "\nOptions:\n"); +- fprintf(stderr, " -h - this message\n"); +- fprintf(stderr, " -p - target process\n"); ++ fprintf(stderr, " -h - this message\n"); ++ fprintf(stderr, " -p - target process\n"); ++ fprintf(stderr, " -i - target patch id\n"); + return err ? 0 : -1; + } + + int cmd_unpatch_user(int argc, char *argv[]) + { + int opt, pid = -1, is_pid_set = 0; ++ const char *patch_id = NULL; + +- if (argc < 3) ++ if (argc < 4) + return usage_unpatch(NULL); + +- while ((opt = getopt(argc, argv, "hp:")) != EOF) { ++ while ((opt = getopt(argc, argv, "hp:i:")) != EOF) { + switch (opt) { + case 'h': + return usage_unpatch(NULL); +@@ -173,6 +179,9 @@ int cmd_unpatch_user(int argc, char *argv[]) + pid = atoi(optarg); + is_pid_set = 1; + break; ++ case 'i': ++ patch_id = optarg; ++ break; + default: + return usage_unpatch("unknown option"); + } +@@ -181,13 +190,13 @@ int cmd_unpatch_user(int argc, char *argv[]) + argc -= optind; + argv += optind; + +- if (!is_pid_set) +- return usage_patch("PID argument is mandatory"); ++ if (!is_pid_set || !patch_id) ++ return usage_unpatch("PID or patch_id argument is mandatory"); + + if (!kpatch_check_system()) + return -1; + +- return processes_unpatch(pid, argv, argc); ++ return processes_unpatch(pid, argv, argc, patch_id); + } + + static +@@ -238,6 +247,7 @@ object_info(struct info_data *data, struct object_file *o, + struct kpatch_storage_patch *patch = NULL; + int patch_found = PATCH_NOT_FOUND; + struct obj_applied_patch *applied_patch; ++ int i = 1; + + if (!o->is_elf || is_kernel_object_name(o->name)) + return 0; +@@ -276,9 +286,10 @@ object_info(struct info_data *data, struct object_file *o, + *pid_printed = 1; + } + +- printf("process=%s; buildid=%s; applied patch number=%ld\n", o->name, buildid, o->num_applied_patch); ++ printf("process = %s; buildid = %s; applied patch number = %ld:\n", o->name, buildid, o->num_applied_patch); + list_for_each_entry(applied_patch, &o->applied_patch, list) { +- printf("--->patch->magic=%s\n", applied_patch->patch_file->kpfile.patch->magic); ++ printf("%d. patch->id = %s\n", i, applied_patch->patch_file->kpfile.patch->id); ++ i++; + } + + if (storage_patch_found(patch) && patch->patchlevel) { +@@ -349,7 +360,7 @@ process_info(int pid, void *_data) + if (ret < 0) + goto out; + +- ret = kpatch_process_map_object_files(proc); ++ ret = kpatch_process_map_object_files(proc, NULL); + if (ret < 0) + goto out; + +@@ -620,7 +631,7 @@ server_stress_test(int fd, int argc, char *argv[]) + if (server_wait(pid, delay) < 0) + return 0; + +- while (processes_unpatch(pid, 0, 0) < 0) ++ while (processes_unpatch(pid, 0, 0, NULL) < 0) + if (server_wait(pid, 1) < 0) + return 0; + test_info.stat_cycle_num++; +diff --git a/src/libcare-patch-make b/src/libcare-patch-make +index 64fc709..01181b1 100755 +--- a/src/libcare-patch-make ++++ b/src/libcare-patch-make +@@ -7,6 +7,7 @@ Makes `kpatch'es for the makesystem in the current directory. + Usage: libcare-patch-make [-h|--help] [-u|--update || -c|--clean] + [-s|--srcdir=SRCDIR] \ + [-d|--destdir=DESTDIRVAR] \ ++ [-i|--id=PATCH-ID] \ + [-j|--jobs=] \ + PATCH1 PATCH2 ... + +@@ -18,6 +19,7 @@ install with specified DESTDIR. + working on patch utils. + -d --destdir specify variable makefile system uses to specify destination + directory for the installation ++ -i --id>-give this patch an unique id (less than 7 char) + -j --jobs specify variable makefile system jobs of compile, for example + `make -j 4` is startup `4` jobs to compile. + EOF +@@ -145,7 +147,7 @@ build_kpatches() { + "${patchedexec}.stripped" || continue + /usr/bin/strip --strip-unneeded "${patchedexec}.stripped" + $KPATCH_PATH/kpatch_strip --undo-link "$origexec" "${patchedexec}.stripped" +- $KPATCH_PATH/kpatch_make -b "$buildid" \ ++ $KPATCH_PATH/kpatch_make -b "$buildid" -i "$patch_id" \ + "${patchedexec}.stripped" -o "${patchedexec}.kpatch" + cp "${patchedexec}.kpatch" "${LPMAKE_PATCHROOT}"/${buildid}.kpatch + echo "patch for ${origexec} is in ${LPMAKE_PATCHROOT}/${buildid}.kpatch" +@@ -155,7 +157,7 @@ build_kpatches() { + main() { + PROG_NAME=$(basename $0) + +- TEMP=$(getopt -o s:ucd:j: --long srcdir:,update,clean,destdir:,jobs: -n ${PROG_NAME} -- "$@" || usage 1) ++ TEMP=$(getopt -o s:ucd:i:j: --long srcdir:,update,clean,destdir:,id:,jobs: -n ${PROG_NAME} -- "$@" || usage 1) + eval set -- "$TEMP" + + destdir="DESTDIR" +@@ -179,6 +181,11 @@ main() { + destdir=$1 + shift + ;; ++ -i|--id) ++ shift ++ patch_id="$1" ++ shift ++ ;; + -j|--jobs) + shift + jobs_make=$1 +@@ -190,6 +197,11 @@ main() { + esac + done + ++ if [ -z "$patch_id" ] || [ ${#patch_id} -gt 7 ];then ++ echo "Invalid patch-id!" >&2 ++ usage 1 ++ fi ++ + prepare_env + + if test -z "$only_update"; then +-- +2.27.0 + diff --git a/0057-arch-aarch64-arch_elf-Add-LDR-and-B-instruction-relo.patch b/0057-arch-aarch64-arch_elf-Add-LDR-and-B-instruction-relo.patch new file mode 100644 index 0000000..1839e56 --- /dev/null +++ b/0057-arch-aarch64-arch_elf-Add-LDR-and-B-instruction-relo.patch @@ -0,0 +1,155 @@ +From e76db94fc8573f366d7da1f7e6620c44e298302e Mon Sep 17 00:00:00 2001 +From: Jiajie Li +Date: Tue, 8 Dec 2020 19:08:17 +0800 +Subject: [PATCH 57/62] arch/aarch64/arch_elf: Add LDR and B instruction + relocation + +In arm, relocation is specfic to instruction, the common pair is ADRP&ADD, +ADRP&LDR. Since we use jmp table instead of GOT, for function, we change LDR +insturction to add instruction; For variable, we keep LDR instruction, +not load jmp table entry instruction, but directly load the var addr. + +Signed-off-by: Jiajie Li +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/arch/aarch64/arch_elf.c | 83 ++++++++++++++++++++++++++++++------- + 1 file changed, 69 insertions(+), 14 deletions(-) + +diff --git a/src/arch/aarch64/arch_elf.c b/src/arch/aarch64/arch_elf.c +index deacb6f..83aa703 100644 +--- a/src/arch/aarch64/arch_elf.c ++++ b/src/arch/aarch64/arch_elf.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.09.23 - arch/aarch64/arch_elf: Add LDR and B instruction relocation ++ * Huawei Technologies Co., Ltd. - 0.1.4-13 ++ ******************************************************************************/ ++ + #include + #include + #include +@@ -19,47 +24,95 @@ + static int kpatch_arch_apply_relocate(GElf_Rela *r, GElf_Sym *s, + void *loc, void *loc2, unsigned long val) + { ++ uint32_t mask; ++ uint32_t immLo; ++ uint32_t immHi; ++ + switch (GELF_R_TYPE(r->r_info)) { + case R_AARCH64_ABS64: + *(unsigned long *)loc = val; + kpdebug("R_AARCH64_ABS64: loc=0x%x, val =0x%lx\n",*(unsigned int*)loc,val); + break; + case R_AARCH64_ADD_ABS_LO12_NC: { +- //ADD ins ++ /* ADD ins */ + kpdebug("R_AARCH64_ADD_ABS_LO12_NC: val=0x%lx\n", val); + val = val & 0xfff; +- uint32_t mask = 0xfff << 10; ++ mask = 0xfff << 10; + *(unsigned int*)loc &= ~mask; + or_32(loc, (val & 0xfff) << 10); + kpdebug("R_AARCH64_ADD_ABS_LO12_NC: loc=0x%x, val =0x%lx\n",*(unsigned int*)loc,val); + break; + } + case R_AARCH64_CALL26: { +- // TODO bl ins ++ /* BL ins */ + kpdebug("R_AARCH64_CALL26: val=0x%lx\n", val); + val -= (unsigned long)loc2; +- uint32_t mask = 0x03FFFFFF;; ++ mask = 0x03FFFFFF;; + *(unsigned int*)loc &= ~mask; + or_32(loc, (val >> 2) & mask); + kpdebug("R_AARCH64_CALL26: loc=0x%x, val =0x%lx\n",*(unsigned int*)loc, val); + break; + } + case R_AARCH64_ADR_PREL_PG_HI21: { +- // TODO ADRP ins +- kpdebug("RR_AARCH64_ADR_PREL_PG_HI21: val=0x%lx\n", val); ++ /* ADRP ins */ ++ kpdebug("R_AARCH64_ADR_PREL_PG_HI21: val=0x%lx\n", val); + val = (val >> 12) - ((unsigned long)loc2 >> 12); +- kpdebug("val=0x%lx\n",val); +- uint32_t immLo = (val & 0x3) << 29; +- uint32_t immHi = (val & 0x1FFFFC) << 3; +- uint64_t mask = (0x3 << 29) | (0x1FFFFC << 3); ++ immLo = (val & 0x3) << 29; ++ immHi = (val & 0x1FFFFC) << 3; ++ mask = (0x3 << 29) | (0x1FFFFC << 3); + *(unsigned int*)loc = (*(unsigned int*)loc & ~mask) | immLo | immHi; +- //*(unsigned int*)loc &= 0x7fffffff; +- kpdebug("lo=0x%x hi=0x%x\n",immLo,immHi); + kpdebug("R_AARCH64_ADR_PREL_PG_HI21: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); + break; + } ++ case R_AARCH64_ADR_GOT_PAGE: { ++ /* ADRP ins */ ++ kpdebug("R_AARCH64_ADR_GOT_PAGE: val=0x%lx\n", val); ++ val = (val >> 12) - ((unsigned long)loc2 >> 12); ++ immLo = (val & 0x3) << 29; ++ immHi = (val & 0x1FFFFC) << 3; ++ mask = (0x3 << 29) | (0x1FFFFC << 3); ++ *(unsigned int*)loc = (*(unsigned int*)loc & ~mask) | immLo | immHi; ++ kpdebug("R_AARCH64_ADR_GOT_PAGE: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); ++ break; ++ } ++ case R_AARCH64_LD64_GOT_LO12_NC: { ++ /* LDR ins ++ * For function, because we don't use GOT in patch code, ++ * so chang LDR to ADD. ++ * For object, we use jmp table instead GOT, so keep using LDR. ++ */ ++ kpdebug("R_AARCH64_LD64_GOT_LO12_NC: val=0x%lx\n", val); ++ if (GELF_ST_TYPE(s->st_info) == STT_OBJECT && ++ s->st_shndx == SHN_UNDEF && ++ GELF_ST_BIND(s->st_info) == STB_GLOBAL) { ++ /* This case is for a new global var from DSO */ ++ val += 8; ++ val = ((val & 0xfff) >> 3) << 10; ++ *(unsigned int*)loc = *(unsigned int*)loc & ~(0xfff << 10); ++ *(unsigned int*)loc = *(unsigned int*)loc | val; ++ break; ++ } ++ *(unsigned int*)loc = (*(unsigned int*)loc & ~(0x3ff << 22)); ++ *(unsigned int*)loc = (*(unsigned int*)loc | (0x244 << 22)); ++ val = val & 0xfff; ++ mask = 0xfff << 10; ++ *(unsigned int*)loc &= ~mask; ++ or_32(loc, (val & 0xfff) << 10); ++ kpdebug("R_AARCH64_LD64_GOT_LO12_NC: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); ++ break; ++ } ++ case R_AARCH64_JUMP26: { ++ /* B ins */ ++ kpdebug("R_AARCH64_JUMP26: val=0x%lx\n", val); ++ val = (val >> 2) - ((unsigned long)loc2 >> 2); ++ val = val & ~(0x3f << 26); ++ *(unsigned int*)loc = *(unsigned int*)loc & (0x3f << 26); ++ *(unsigned int*)loc = *(unsigned int*)loc | val; ++ kpdebug("R_AARCH64_JUMP26: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); ++ break; ++ } + default: +- kperr("unknown relocation type: %lx\n", r->r_info); ++ kperr("unknown relocation type: %ld\n", GELF_R_TYPE(r->r_info)); + return -1; + } + return 0; +@@ -108,7 +161,9 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) + val = s->st_size; + } + +- kpatch_arch_apply_relocate(r, s, loc, loc2, val); ++ if(kpatch_arch_apply_relocate(r, s, loc, loc2, val)) { ++ return -1; ++ } + } + + return 0; +-- +2.27.0 + diff --git a/0058-arch-aarch64-arch_parse-improve-VAR_CBLOCK-start-ind.patch b/0058-arch-aarch64-arch_parse-improve-VAR_CBLOCK-start-ind.patch new file mode 100644 index 0000000..59699f8 --- /dev/null +++ b/0058-arch-aarch64-arch_parse-improve-VAR_CBLOCK-start-ind.patch @@ -0,0 +1,64 @@ +From 05b128f942851a59fa7320557023a66ec97c5c2c Mon Sep 17 00:00:00 2001 +From: Jiajie Li +Date: Tue, 8 Dec 2020 19:11:37 +0800 +Subject: [PATCH 58/62] arch/aarch64/arch_parse: improve VAR_CBLOCK start + indentify + +The real problem with arm gensrc is .set pseudoinstruction separate the +.rodata / .rodata.* / .bss / .data.* such section start identifier with +follow var_cblock. So instead of handle the section start identifier +one by one, we should solve the root problem with the additional +judge of .set pseudoinstruction in is_variable_start function. + +Signed-off-by: Jiajie Li +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/arch/aarch64/arch_parse.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/src/arch/aarch64/arch_parse.c b/src/arch/aarch64/arch_parse.c +index a79e27f..84caf82 100644 +--- a/src/arch/aarch64/arch_parse.c ++++ b/src/arch/aarch64/arch_parse.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.09.23 - arch/aarch64/arch_parse: improve VAR_CBLOCK start indentify ++ * Huawei Technologies Co., Ltd. - 0.1.4-14 ++ * + * 2021.09.23 - arch/aarch64/arch_parse: modify is_variable_start function for gensrc in arm + * Huawei Technologies Co., Ltd. - 0.1.4-10 + ******************************************************************************/ +@@ -136,22 +139,19 @@ int is_variable_start(struct kp_file *f, int l, int *e, int *pglobl, kpstr_t *nm + case DIRECTIVE_TEXT: + case DIRECTIVE_DATA: + case DIRECTIVE_BSS: ++ case DIRECTIVE_SECTION: + case DIRECTIVE_PUSHSECTION: + case DIRECTIVE_POPSECTION: + case DIRECTIVE_PREVIOUS: + case DIRECTIVE_SUBSECTION: + break; +- case DIRECTIVE_SECTION: +- if (nm2.s != NULL) +- break; ++ case DIRECTIVE_SET: + get_token(&s, &nm2); + get_token(&s, &nm2); +- if (kpstrcmpz(&nm2, ".rodata") == 0) { +- *nm = nm2; +- if(e) +- *e = l + 2; +- return 1; +- } ++ *nm = nm2; ++ if (e) ++ *e = l + 1; ++ return 1; + case DIRECTIVE_TYPE: + get_type_args(cline(f, l), &nm2, &attr); + if (kpstrcmpz(&attr, "%object") && kpstrcmpz(&attr, "%tls_object")) +-- +2.27.0 + diff --git a/0059-tls-add-support-for-TLS-symbol-with-IE-model.patch b/0059-tls-add-support-for-TLS-symbol-with-IE-model.patch new file mode 100644 index 0000000..2171123 --- /dev/null +++ b/0059-tls-add-support-for-TLS-symbol-with-IE-model.patch @@ -0,0 +1,406 @@ +From 9de6ed39b3f7ce1250dbcbf7f07bf163f1271e00 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Tue, 15 Dec 2020 20:00:19 +0800 +Subject: [PATCH 59/62] tls: add support for TLS symbol with IE model + +Since we have implement init-exec mode for qemu, we can take care +of tls symbol in libcare. +i. as for x86, we do need to do relocation for both global and local + tls symbol. This is because it uses %fs register to restore GOT + offset. +ii. it is really tricky for global tls symbol reference on arch64, + because it uses adrp and ldr to locate the offset of GOT entry. + We need to parse the GOT offset in fix-relocation stage and get + the right address. No more relocation for local symbol because it + has been optimized as relative addressing other than GOT reference. + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/Makefile | 2 +- + src/arch/aarch64/arch_elf.c | 26 ++++++++ + src/arch/aarch64/arch_strip.c | 109 +++++++++++++++++++++++++++++++++ + src/arch/x86/arch_strip.c | 111 ++++++++++++++++++++++++++++++++++ + src/include/kpatch_strip.h | 31 ++++++++++ + src/kpatch_strip.c | 11 +++- + 6 files changed, 287 insertions(+), 3 deletions(-) + create mode 100644 src/arch/aarch64/arch_strip.c + create mode 100644 src/arch/x86/arch_strip.c + create mode 100644 src/include/kpatch_strip.h + +diff --git a/src/Makefile b/src/Makefile +index 3cb1358..6989617 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -55,7 +55,7 @@ libcare-stresstest: LDLIBS += -lelf -lrt $(LIBUNWIND_LIBS) + + libcare-client: libcare-client.o + +-kpatch_strip: kpatch_strip.o kpatch_elf_objinfo.o kpatch_log.o ++kpatch_strip: kpatch_strip.o kpatch_elf_objinfo.o kpatch_log.o arch_strip.o + kpatch_strip: LDLIBS = -lelf + + libcare-cc: kpatch_cc.o +diff --git a/src/arch/aarch64/arch_elf.c b/src/arch/aarch64/arch_elf.c +index 83aa703..6bbb153 100644 +--- a/src/arch/aarch64/arch_elf.c ++++ b/src/arch/aarch64/arch_elf.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.09.23 - tls: add support for tls symbol ++ * Huawei Technologies Co., Ltd. - 0.1.4-15 ++ * + * 2021.09.23 - arch/aarch64/arch_elf: Add LDR and B instruction relocation + * Huawei Technologies Co., Ltd. - 0.1.4-13 + ******************************************************************************/ +@@ -29,6 +32,18 @@ static int kpatch_arch_apply_relocate(GElf_Rela *r, GElf_Sym *s, + uint32_t immHi; + + switch (GELF_R_TYPE(r->r_info)) { ++ case R_AARCH64_NONE: ++ case R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC: ++ break; ++ case R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21: ++ kpdebug("R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21: val=0x%lx\n", val); ++ val = (val >> 12) - ((unsigned long)loc2 >> 12); ++ immLo = (val & 0x3) << 29; ++ immHi = (val & 0x1FFFFC) << 3; ++ mask = (0x3 << 29) | (0x1FFFFC << 3); ++ *(unsigned int*)loc = (*(unsigned int*)loc & ~mask) | immLo | immHi; ++ kpdebug("R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); ++ break; + case R_AARCH64_ABS64: + *(unsigned long *)loc = val; + kpdebug("R_AARCH64_ABS64: loc=0x%x, val =0x%lx\n",*(unsigned int*)loc,val); +@@ -160,6 +175,17 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) + if (is_kpatch_info && is_undef_symbol(s)) { + val = s->st_size; + } ++ /* ++ Special care for TLS symbol ++ i. For GLOBAL TLS symbol, point to GOT entry ++ ii. For LOCAL TLS symbol, do nothing since everything is done in static-link ++ */ ++ if (GELF_ST_TYPE(s->st_info) == STT_TLS) { ++ if (GELF_ST_BIND(s->st_info) == STB_LOCAL) ++ return 0; ++ else ++ val = r->r_addend + o->load_offset; ++ } + + if(kpatch_arch_apply_relocate(r, s, loc, loc2, val)) { + return -1; +diff --git a/src/arch/aarch64/arch_strip.c b/src/arch/aarch64/arch_strip.c +new file mode 100644 +index 0000000..5ec317d +--- /dev/null ++++ b/src/arch/aarch64/arch_strip.c +@@ -0,0 +1,109 @@ ++/****************************************************************************** ++ * Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 and ++ * only version 2 as published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * Description: add support for aarch64 architecture TLS symbol with IE model. ++ ******************************************************************************/ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "include/kpatch_file.h" ++#include "include/kpatch_common.h" ++ ++#include ++#include "include/kpatch_elf_objinfo.h" ++ ++#include "include/kpatch_log.h" ++#include "include/kpatch_strip.h" ++ ++ ++/* Update relocation against TLS symbol. ++ * ++ * Thread-Local Storage variables require special care because they are ++ * referenced by the offset into Thread Local Storage allocated for each ++ * thread. There are different models for TLS and we only support Initial-Exec. ++ * ++ * Returns 1 when symbol must be updated, 0 when everything is OK, -1 on error. ++ */ ++ ++#define MASK(n) ((1u << (n)) - 1) ++ ++static uint32_t objinfo_find_tls_got_by_offset(GElf_Rela *rel, ++ GElf_Shdr *sh_text, ++ unsigned char *text) ++{ ++ int i; ++ unsigned long off; ++ uint32_t insn; ++ uint32_t imm; ++ uint32_t gotoffset; ++ ++ off = rel->r_offset - sh_text->sh_addr; ++ ++ /* Get ins from text according to ARM ABI */ ++ insn = (unsigned long)text[off]; ++ for (i = 1; i <= 3; i++) { ++ insn = insn + ((unsigned long)text[off + i] << (8 * i)); ++ } ++ ++ imm = (((insn >> 5) & MASK (19)) << 2) | ((insn >> 29) & MASK (2)); ++ imm = imm << 12; ++ ++ gotoffset = imm + (sh_text->sh_addr & 0xfffff000); ++ ++ return gotoffset; ++} ++ ++int ++kpatch_arch_fixup_rela_update_tls(kpatch_objinfo *origbin, ++ kpatch_objinfo *patch, ++ GElf_Rela *rela, ++ GElf_Sym *sym, ++ GElf_Shdr *sh_text, ++ unsigned char *text) ++{ ++ unsigned long got_offset; ++ ++ char *symname, *tmp; ++ ++ /* Do nothing for Local TLS symbol */ ++ if (GELF_ST_BIND(sym->st_info) != STB_LOCAL) ++ return 0; ++ ++ symname = (char *)kpatch_objinfo_strptr(patch, ++ SYMBOL_NAME, sym->st_name); ++ tmp = strchr(symname, '@'); ++ if (tmp != NULL) ++ *tmp = '\0'; ++ ++ switch (GELF_R_TYPE(rela->r_info)) { ++ case R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21: ++ got_offset = objinfo_find_tls_got_by_offset(rela, sh_text, text); ++ kpinfo("Fix relocation for TLS symbol %s from %lx to %lx\n", ++ symname, rela->r_addend, got_offset); ++ rela->r_addend = got_offset; ++ break; ++ case R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC: ++ break; ++ default: ++ kpfatalerror("non-supported TLS model\n"); ++ return -1; ++ } ++ ++ return 0; ++} +diff --git a/src/arch/x86/arch_strip.c b/src/arch/x86/arch_strip.c +new file mode 100644 +index 0000000..ff1e212 +--- /dev/null ++++ b/src/arch/x86/arch_strip.c +@@ -0,0 +1,111 @@ ++/****************************************************************************** ++ * Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 and ++ * only version 2 as published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * Description: add support for x86 architecture TLS symbol with IE model. ++ ******************************************************************************/ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "include/kpatch_file.h" ++#include "include/kpatch_common.h" ++ ++#include ++#include "include/kpatch_elf_objinfo.h" ++ ++#include "include/kpatch_log.h" ++#include "include/kpatch_strip.h" ++ ++#define SECTION_OFFSET_FOUND 0x0 ++#define SECTION_NOT_FOUND 0x1 ++ ++/* Update relocation against TLS symbol. ++ * ++ * Thread-Local Storage variables require special care because they are ++ * referenced by the offset into Thread Local Storage allocated for each ++ * thread. There are different models for TLS and we only support Initial-Exec. ++ * ++ * The following types of relocations are handled: ++ * ++ * - Relocs of type TPOFF32 targeting symbols in the original are changed ++ * to reloc type NONE after the symbol is checked to be present at the ++ * same place in the original binary. (TODO) ++ * ++ * *NOTE* the only way to support new variables allocated by patch is to use ++ * dlopen-loaded patches. ++ * - Relocs of type TPOFF64 are ignored. These are only used for long memory ++ * model or as entries to GOT. ++ * - Relocs of type GOTTPOFF are quite tricky. These usually point to a GOT ++ * entry filled with TPOFF64 relocation. We can't do this relocation on our ++ * own because it requires digging into glibc internels with a hack. ++ * ++ * Instead, we cheat here and find the appropriate TPOFF64 relocations IN ++ * THE ORIGINAL object and make GOTTPOFF point there. This is different for ++ * local/global symbols but is not very hard. ++ * ++ * Returns 1 when symbol must be updated, 0 when everything is OK, -1 on error. ++ */ ++int ++kpatch_arch_fixup_rela_update_tls(kpatch_objinfo *origbin, ++ kpatch_objinfo *patch, ++ GElf_Rela *rela, ++ GElf_Sym *sym, ++ GElf_Shdr *sh_text, ++ unsigned char *text) ++{ ++ switch (GELF_R_TYPE(rela->r_info)) { ++ case R_X86_64_GOTTPOFF: ++ case R_X86_64_TPOFF32: { ++ const char *symname; ++ int rv; ++ unsigned long off; ++ /* Leave the value as is, just check offset is the same. */ ++ rela->r_info = GELF_R_INFO(0, R_X86_64_NONE); ++ symname = kpatch_objinfo_strptr(patch, SYMBOL_NAME, ++ sym->st_name); ++ ++ rv = kpatch_get_original_symbol_loc( ++ origbin, symname, &off, NULL); ++ if (rv == SECTION_NOT_FOUND) { ++ kpfatalerror( ++ "TLS symbol %s not found in original binary", ++ symname); ++ } ++ ++ kpinfo("Compare TLS symbol %s offset: %lx in origbinal binary, %lx in patch\n", ++ symname, off, sym->st_value); ++ if (off != sym->st_value) { ++ kpfatalerror("TLS symbol %s has different offset!\n", symname); ++ } ++ ++ return 0; ++ } ++ ++ case R_X86_64_DTPOFF32: ++ case R_X86_64_DTPOFF64: ++ case R_X86_64_DTPMOD64: ++ case R_X86_64_TLSGD: ++ case R_X86_64_TLSLD: ++ case R_X86_64_TPOFF64: ++ default: ++ kpfatalerror("non-supported TLS model\n"); ++ return -1; ++ } ++ ++ return 0; ++} +diff --git a/src/include/kpatch_strip.h b/src/include/kpatch_strip.h +new file mode 100644 +index 0000000..07774c5 +--- /dev/null ++++ b/src/include/kpatch_strip.h +@@ -0,0 +1,31 @@ ++/****************************************************************************** ++ * Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 and ++ * only version 2 as published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ ******************************************************************************/ ++ ++#ifndef __KPATCH_STRIP_H__ ++#define __KPATCH_STRIP_H__ ++ ++int ++kpatch_get_original_symbol_loc(kpatch_objinfo *origbin, ++ const char *symname, ++ size_t *symoff, ++ const char **secname); ++ ++int ++kpatch_arch_fixup_rela_update_tls(kpatch_objinfo *origbin, ++ kpatch_objinfo *patch, ++ GElf_Rela *rela, ++ GElf_Sym *sym, ++ GElf_Shdr *sh_text, ++ unsigned char *text); ++ ++#endif +diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c +index 6ad56a3..bfc95a8 100644 +--- a/src/kpatch_strip.c ++++ b/src/kpatch_strip.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.09.23 - tls: add support for tls symbol ++ * Huawei Technologies Co., Ltd. - 0.1.4-15 ++ ******************************************************************************/ ++ + #include + #include + #include +@@ -14,6 +19,7 @@ + #include "include/kpatch_elf_objinfo.h" + + #include "include/kpatch_log.h" ++#include "include/kpatch_strip.h" + + #define ALIGN(off,sz) (((off)+(sz)-1)&~((sz)-1)) + +@@ -211,7 +217,7 @@ kpatch_get_symbol_offset_rel_section(kpatch_objinfo *oi, + return 0; + } + +-static int ++int + kpatch_get_original_symbol_loc(kpatch_objinfo *origbin, + const char *symname, + size_t *symoff, +@@ -499,7 +505,8 @@ kpatch_fixup_rela_one(kpatch_objinfo *origbin, + } + + if (GELF_ST_TYPE(sym->st_info) == STT_TLS) { +- rv = kpatch_fixup_rela_update_tls(origbin, patch, rel, sym); ++ rv = kpatch_arch_fixup_rela_update_tls(origbin, patch, rel, ++ sym, sh_text, text); + if (rv < 0) + kpfatalerror("kpatch_fixup_rela_update_tls"); + +-- +2.27.0 + diff --git a/0060-arch64-arch_elf-add-R_AARCH64_LDST32_ABS_LO12_NC-rel.patch b/0060-arch64-arch_elf-add-R_AARCH64_LDST32_ABS_LO12_NC-rel.patch new file mode 100644 index 0000000..7a81e8a --- /dev/null +++ b/0060-arch64-arch_elf-add-R_AARCH64_LDST32_ABS_LO12_NC-rel.patch @@ -0,0 +1,47 @@ +From 81b38ad6f44183dce7ecca58e8ff891212cadf75 Mon Sep 17 00:00:00 2001 +From: Jiajie Li +Date: Mon, 21 Dec 2020 20:20:01 +0800 +Subject: [PATCH 60/62] arch64/arch_elf: add R_AARCH64_LDST32_ABS_LO12_NC + relocation type for aarch64 + +Add a new relocation type for aarch64: R_AARCH64_LDST32_ABS_LO12_NC. +It's a LDR instruction, change the imm according to arm manual. + +Signed-off-by: Jiajie Li +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/arch/aarch64/arch_elf.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/src/arch/aarch64/arch_elf.c b/src/arch/aarch64/arch_elf.c +index 6bbb153..fe7393e 100644 +--- a/src/arch/aarch64/arch_elf.c ++++ b/src/arch/aarch64/arch_elf.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.07 - aarch64/arch_elf: Add R_AARCH64_LDST32_ABS_LO12_NC relocation type for arm ++ * Huawei Technologies Co., Ltd. - 0.1.4-16 ++ * + * 2021.09.23 - tls: add support for tls symbol + * Huawei Technologies Co., Ltd. - 0.1.4-15 + * +@@ -126,6 +129,14 @@ static int kpatch_arch_apply_relocate(GElf_Rela *r, GElf_Sym *s, + kpdebug("R_AARCH64_JUMP26: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); + break; + } ++ case R_AARCH64_LDST32_ABS_LO12_NC: { ++ /* LDR ins */ ++ val = ((val & 0xfff) >> 3) << 10; ++ *(unsigned int*)loc = *(unsigned int*)loc & ~(0xfff << 10); ++ *(unsigned int*)loc = *(unsigned int*)loc | val; ++ kpdebug("R_AARCH64_LDST32_ABS_LO12_NC: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); ++ break; ++ } + default: + kperr("unknown relocation type: %ld\n", GELF_R_TYPE(r->r_info)); + return -1; +-- +2.27.0 + diff --git a/0061-process-fix-region-start-calculation.patch b/0061-process-fix-region-start-calculation.patch new file mode 100644 index 0000000..b125a6c --- /dev/null +++ b/0061-process-fix-region-start-calculation.patch @@ -0,0 +1,87 @@ +From 0e67320d7a01d301929ed28524920b0c466d40b1 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Fri, 25 Dec 2020 16:24:20 +0800 +Subject: [PATCH 61/62] process: fix region start calculation + +1), as for x86, we do not need to add a total PAGE_SIZE because we have + added one page when process_add_vm_hole() +2), as for arm, max_distance should be limited to 128M due to branch + instruction jump size +3), do not do random for region start to make cumulative patches allocation + in order + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/arch/aarch64/arch_process.c | 19 +++++++------------ + src/arch/x86/arch_process.c | 7 ++++++- + 2 files changed, 13 insertions(+), 13 deletions(-) + +diff --git a/src/arch/aarch64/arch_process.c b/src/arch/aarch64/arch_process.c +index 3a64d77..6fa6fdc 100644 +--- a/src/arch/aarch64/arch_process.c ++++ b/src/arch/aarch64/arch_process.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.10.07 - process: fix region_start caclulation ++ * Huawei Technologies Co., Ltd. - 0.1.4-17 ++ ******************************************************************************/ ++ + #include + #include + #include +@@ -47,7 +52,7 @@ object_find_patch_region(struct object_file *obj, + struct list_head *head = &obj->proc->vmaholes; + struct vm_hole *left_hole = obj->previous_hole, + *right_hole = next_hole(left_hole, head); +- unsigned long max_distance = 0x80000000; ++ unsigned long max_distance = 0x8000000; + struct obj_vm_area *sovma; + + unsigned long obj_start, obj_end; +@@ -102,17 +107,7 @@ object_find_patch_region(struct object_file *obj, + return -1UL; + } + +- /* +- * On aarch64, virtual address of text and data segments may be continuous, +- * gap between data segment and process heap may be huge. Need to have +- * region_end fixed. Here goes the trick: +- * The branch instruction jump size is in the range of +/-128MB. +- * So we need to put limitation to the region_end. +- */ +- region_end = region_start + (0x1<<25); +- region_start = random_from_range(region_start >> PAGE_SHIFT, +- region_end >> PAGE_SHIFT); +- region_start <<= PAGE_SHIFT; ++ region_start = (region_start >> PAGE_SHIFT) << PAGE_SHIFT; + kpdebug("Found patch region for '%s' at %lx\n", obj->name, region_start); + + return region_start; +diff --git a/src/arch/x86/arch_process.c b/src/arch/x86/arch_process.c +index ba66134..9b6ba84 100644 +--- a/src/arch/x86/arch_process.c ++++ b/src/arch/x86/arch_process.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.10.07 - process: fix region_start caclulation ++ * Huawei Technologies Co., Ltd. - 0.1.4-17 ++ ******************************************************************************/ ++ + #include + #include + #include +@@ -101,7 +106,7 @@ unsigned long object_find_patch_region(struct object_file *obj, + return -1UL; + } + +- region_start += PAGE_SIZE; ++ region_start = (region_start >> PAGE_SHIFT) << PAGE_SHIFT; + kpdebug("Found patch region for '%s' at %lx\n", obj->name, region_start); + + return region_start; +-- +2.27.0 + diff --git a/0062-aarch64-arch_elf-Add-ldr-and-ldrb-relocation-for-aar.patch b/0062-aarch64-arch_elf-Add-ldr-and-ldrb-relocation-for-aar.patch new file mode 100644 index 0000000..e995c36 --- /dev/null +++ b/0062-aarch64-arch_elf-Add-ldr-and-ldrb-relocation-for-aar.patch @@ -0,0 +1,62 @@ +From e49c69f5c9e2b70e561df4e1ebad1deb63e7e5d3 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Mon, 28 Dec 2020 12:21:52 +0800 +Subject: [PATCH 62/62] aarch64/arch_elf: Add ldr and ldrb relocation for + aarch64 + +i: Add a new relocation type for aarch64: R_AARCH64_LDST64_ABS_LO12_NC. +It's a LDR instruction, change the imm according to arm manual. +Assemble shows like: +8013f0: fd438749 ldr d9, [x26, #1800] + +ii:Add a new relocation type for aarch64: R_AARCH64_LDST8_ABS_LO12_NC. +It's a LDRB instruction, change the imm according to arm manual. +Assemble shows like: +801230: 395e2000 ldrb w0, [x0, #1928] + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/arch/aarch64/arch_elf.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/src/arch/aarch64/arch_elf.c b/src/arch/aarch64/arch_elf.c +index fe7393e..2a9b5dc 100644 +--- a/src/arch/aarch64/arch_elf.c ++++ b/src/arch/aarch64/arch_elf.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.07 - aarch64/arch_elf: Add ldr and ldrb relocation for aarch64 ++ * Huawei Technologies Co., Ltd. - 0.1.4-18 ++ * + * 2021.10.07 - aarch64/arch_elf: Add R_AARCH64_LDST32_ABS_LO12_NC relocation type for arm + * Huawei Technologies Co., Ltd. - 0.1.4-16 + * +@@ -137,6 +140,22 @@ static int kpatch_arch_apply_relocate(GElf_Rela *r, GElf_Sym *s, + kpdebug("R_AARCH64_LDST32_ABS_LO12_NC: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); + break; + } ++ case R_AARCH64_LDST64_ABS_LO12_NC: { ++ /* LDR ins */ ++ val = ((val & 0xfff) >> 3) << 10; ++ *(unsigned int*)loc = *(unsigned int*)loc & ~(0xfff << 10); ++ *(unsigned int*)loc = *(unsigned int*)loc | val; ++ kpdebug("R_AARCH64_LDST64_ABS_LO12_NC: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); ++ break; ++ } ++ case R_AARCH64_LDST8_ABS_LO12_NC: { ++ /* LDRB ins */ ++ val = ((val & 0xfff) >> 3) << 10; ++ *(unsigned int*)loc = *(unsigned int*)loc & ~(0xfff << 10); ++ *(unsigned int*)loc = *(unsigned int*)loc | val; ++ kpdebug("R_AARCH64_LDST8_ABS_LO12_NC: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); ++ break; ++ } + default: + kperr("unknown relocation type: %ld\n", GELF_R_TYPE(r->r_info)); + return -1; +-- +2.27.0 + diff --git a/libcareplus.spec b/libcareplus.spec index f34e8c7..c4a197d 100644 --- a/libcareplus.spec +++ b/libcareplus.spec @@ -3,7 +3,7 @@ Version: 0.1.4 Name: libcareplus Summary: LibcarePlus tools -Release: 11 +Release: 12 Group: Applications/System License: GPLv2 Url: https://gitee.com/openeuler/libcareplus @@ -61,6 +61,18 @@ Patch0049: 0048-libcare-patch-make-add-j-jobs-option.patch Patch0050: 0049-kpatch_user.c-fix-gcc-warning.patch Patch0051: 0050-libcare-cc-add-gcc-iquote-option-support.patch Patch0052: 0051-kpatch_cc.c-support-gcc-MQ-option.patch +Patch0053: 0052-src-Makefile-execute-config-scripts-before-building.patch +Patch0054: 0053-kpatch_gensrc.c-support-ignoring-functions-which-we-.patch +Patch0055: 0054-arch-aarch64-arch_parse-modify-is_variable_start-for.patch +Patch0056: 0055-libcare-ctl-implement-applied-patch-list.patch +Patch0057: 0056-libcare-ctl-introduce-patch-id.patch +Patch0058: 0057-arch-aarch64-arch_elf-Add-LDR-and-B-instruction-relo.patch +Patch0059: 0058-arch-aarch64-arch_parse-improve-VAR_CBLOCK-start-ind.patch +Patch0060: 0059-tls-add-support-for-TLS-symbol-with-IE-model.patch +Patch0061: 0060-arch64-arch_elf-add-R_AARCH64_LDST32_ABS_LO12_NC-rel.patch +Patch0062: 0061-process-fix-region-start-calculation.patch +Patch0063: 0062-aarch64-arch_elf-Add-ldr-and-ldrb-relocation-for-aar.patch + BuildRequires: elfutils-libelf-devel libunwind-devel gcc systemd @@ -216,6 +228,19 @@ exit 0 %endif %changelog +* Mon Feb 07 2022 imxcc - 0.1.4.12 +- src/Makefile: execute config scripts before building +- kpatch_gensrc.c: support ignoring functions which we don't need +- arch/aarch64/arch_parse: modify is_variable_start for arm asm +- libcare-ctl: implement applied patch list +- libcare-ctl: introduce patch-id +- arch/aarch64/arch_elf: Add LDR and B instruction relocation +- arch/aarch64/arch_parse: improve VAR_CBLOCK start indentify +- tls: add support for TLS symbol with IE model +- arch64/arch_elf: add R_AARCH64_LDST32_ABS_LO12_NC relocation type for aarch64 +- process: fix region start calculation +- aarch64/arch_elf: Add ldr and ldrb relocation for aarch6 + * Mon Feb 07 2022 imxcc - 0.1.4.11 - kpatch_cc: support gcc -MQ option - libcare-cc: add gcc iquote option support -- Gitee From cce0d9ddfc78a9c7c2489f6f99e8b92c4ba2c0c0 Mon Sep 17 00:00:00 2001 From: imxcc Date: Mon, 7 Feb 2022 20:30:49 +0800 Subject: [PATCH 6/9] add libcare-dump tool Signed-off-by: imxcc --- ...cess-add-some-checks-before-patching.patch | 85 ++ ...-frozen-time-count-for-patch-unpatch.patch | 103 ++ ...-optimize-output-of-libcare-ctl-info.patch | 96 ++ ...care-patch-make-add-build-id-options.patch | 73 ++ ...ke-add-j-option-to-accelarate-make-p.patch | 46 + ...file-make-binfiles-permission-as-500.patch | 42 + ...ove-useless-codes-for-info-interface.patch | 315 +++++ ...mbine-funcitons-with-similar-functio.patch | 154 +++ 0071-process_unpatch-adapt-return-value.patch | 61 + ...elf-enhance-kpatch_elf-and-arch_elf-.patch | 269 ++++ ...ve-deprecated-code-for-tls-and-prctl.patch | 300 +++++ ...x-possible-Null-pointer-dereferences.patch | 93 ++ ...timize-libcare-code-to-make-checker-.patch | 489 ++++++++ ...rse-fix-wrong-return-in-is_data_sect.patch | 39 + ...ch-make-export-libcare-env-variables.patch | 34 + ...rage-strip-fix-some-bad-code-problem.patch | 162 +++ ...cess-patch-fix-some-bad-code-problem.patch | 269 ++++ 0080-kpatch-rename-uname-to-buildid.patch | 168 +++ 0081-kpatch-clear-code-checker-warnings.patch | 268 ++++ ...p-revert-close-fd-in-kpatch_open_elf.patch | 40 + 0083-kpatch-fix-code-checker-warning.patch | 222 ++++ ...patch_ptrace-fix-x86-compile-failure.patch | 61 + ...y-return-properly-other-than-direct-.patch | 1111 +++++++++++++++++ ...ke-check-return-for-each-patch-make-.patch | 59 + 0087-kpatch-clear-code-checker-warnings.patch | 125 ++ ...tialize-fd-to-avoid-unexpected-close.patch | 39 + ...Optimize-build_multiple-a-little-bit.patch | 83 ++ 0090-patch-correct-time-comsume-print.patch | 128 ++ ...sts-fix-tests-some-executing-problem.patch | 65 + ...mode-and-check-whether-the-conf-file.patch | 142 +++ ...ump-add-libcare-dump-auxiliary-tools.patch | 207 +++ ...dd-a-flag-to-mark-unpatch-target-elf.patch | 103 ++ ...care-dump-output-elf-file-can-not-be.patch | 49 + 0096-kpatch_user-remove-stresstest-mode.patch | 198 +++ ...plit-client-server-binary-into-devel.patch | 837 +++++++++++++ ...ORTIFY_SOURCE-2-and-fix-return-check.patch | 125 ++ ...ial-codex-issues-and-compile-warning.patch | 144 +++ ...nfo-rename-Process-as-Target-instead.patch | 41 + ...add-support-for-dumping-patch-header.patch | 151 +++ 0102-codedex-fix-codedex-warning.patch | 36 + ...error-handling-and-log-records-of-ob.patch | 110 ++ 0104-test-adapt-UT-tests-in-x86_64.patch | 276 ++++ 0105-arch.desc-delete-arch.desc.patch | 37 + 0106-test-fix-some-problems-in-UT-tests.patch | 62 + 0107-ptrace-check-pread-return-value.patch | 148 +++ ...are-dump-fix-fd-leak-in-libcare-dump.patch | 45 + ...or-avoid-potential-file-leak-in-main.patch | 89 ++ ...dump-avoid-file-leak-in-libcare-dump.patch | 32 + ...-kpatch_ptrace-fix-wrong-return-type.patch | 40 + ...-closing-negative-fd-in-kpatch_strip.patch | 33 + ...x-closing-negative-fd-in-kpatch_make.patch | 33 + ...n-on-gcc-Werror-and-fix-some-warning.patch | 27 + 0115-kpatch_ptrace-fix-uninitialing-buf.patch | 38 + ...liablity-avoid-double-free-in-future.patch | 33 + ...nning-status-if-ptrace-detach-return.patch | 76 ++ ...bcare-dump-avoid-resource-leak-in-cm.patch | 50 + libcareplus.spec | 64 +- 57 files changed, 8223 insertions(+), 2 deletions(-) create mode 100644 0063-process-add-some-checks-before-patching.patch create mode 100644 0064-time-add-frozen-time-count-for-patch-unpatch.patch create mode 100644 0065-libcare-ctl-optimize-output-of-libcare-ctl-info.patch create mode 100644 0066-libcare-patch-make-add-build-id-options.patch create mode 100644 0067-libcare-patch-make-add-j-option-to-accelarate-make-p.patch create mode 100644 0068-Makefile-make-binfiles-permission-as-500.patch create mode 100644 0069-libcare-ctl-remove-useless-codes-for-info-interface.patch create mode 100644 0070-kpatch_object-combine-funcitons-with-similar-functio.patch create mode 100644 0071-process_unpatch-adapt-return-value.patch create mode 100644 0072-kpatch_elf-arch_elf-enhance-kpatch_elf-and-arch_elf-.patch create mode 100644 0073-tls-prctl-remove-deprecated-code-for-tls-and-prctl.patch create mode 100644 0074-kpatch_parse-fix-possible-Null-pointer-dereferences.patch create mode 100644 0075-gensrc-cc-elf-optimize-libcare-code-to-make-checker-.patch create mode 100644 0076-kpatch_parse-fix-wrong-return-in-is_data_sect.patch create mode 100644 0077-libcare-patch-make-export-libcare-env-variables.patch create mode 100644 0078-storage-strip-fix-some-bad-code-problem.patch create mode 100644 0079-ptrace-process-patch-fix-some-bad-code-problem.patch create mode 100644 0080-kpatch-rename-uname-to-buildid.patch create mode 100644 0081-kpatch-clear-code-checker-warnings.patch create mode 100644 0082-kpatch_strip-revert-close-fd-in-kpatch_open_elf.patch create mode 100644 0083-kpatch-fix-code-checker-warning.patch create mode 100644 0084-kpatch_ptrace-fix-x86-compile-failure.patch create mode 100644 0085-return-make-every-return-properly-other-than-direct-.patch create mode 100644 0086-libcare-patch-make-check-return-for-each-patch-make-.patch create mode 100644 0087-kpatch-clear-code-checker-warnings.patch create mode 100644 0088-kpatch_make-initialize-fd-to-avoid-unexpected-close.patch create mode 100644 0089-kpatch_cc-Optimize-build_multiple-a-little-bit.patch create mode 100644 0090-patch-correct-time-comsume-print.patch create mode 100644 0091-tests-fix-tests-some-executing-problem.patch create mode 100644 0092-gensrc-add-test-mode-and-check-whether-the-conf-file.patch create mode 100644 0093-libcare-dump-add-libcare-dump-auxiliary-tools.patch create mode 100644 0094-process-add-a-flag-to-mark-unpatch-target-elf.patch create mode 100644 0095-strip-settle-libcare-dump-output-elf-file-can-not-be.patch create mode 100644 0096-kpatch_user-remove-stresstest-mode.patch create mode 100644 0097-tests-Split-client-server-binary-into-devel.patch create mode 100644 0098-misc-add-D_FORTIFY_SOURCE-2-and-fix-return-check.patch create mode 100644 0099-misc-fix-trivial-codex-issues-and-compile-warning.patch create mode 100644 0100-libcare-info-rename-Process-as-Target-instead.patch create mode 100644 0101-libcare-dump-add-support-for-dumping-patch-header.patch create mode 100644 0102-codedex-fix-codedex-warning.patch create mode 100644 0103-unpatch-enhance-error-handling-and-log-records-of-ob.patch create mode 100644 0104-test-adapt-UT-tests-in-x86_64.patch create mode 100644 0105-arch.desc-delete-arch.desc.patch create mode 100644 0106-test-fix-some-problems-in-UT-tests.patch create mode 100644 0107-ptrace-check-pread-return-value.patch create mode 100644 0108-libcare-dump-fix-fd-leak-in-libcare-dump.patch create mode 100644 0109-refactor-avoid-potential-file-leak-in-main.patch create mode 100644 0110-libcare-dump-avoid-file-leak-in-libcare-dump.patch create mode 100644 0111-kpatch_ptrace-fix-wrong-return-type.patch create mode 100644 0112-kpatch_strip-fix-closing-negative-fd-in-kpatch_strip.patch create mode 100644 0113-kpatch_make-fix-closing-negative-fd-in-kpatch_make.patch create mode 100644 0114-process-turn-on-gcc-Werror-and-fix-some-warning.patch create mode 100644 0115-kpatch_ptrace-fix-uninitialing-buf.patch create mode 100644 0116-reliablity-avoid-double-free-in-future.patch create mode 100644 0117-process-check-running-status-if-ptrace-detach-return.patch create mode 100644 0118-kpatch_gensrc-libcare-dump-avoid-resource-leak-in-cm.patch diff --git a/0063-process-add-some-checks-before-patching.patch b/0063-process-add-some-checks-before-patching.patch new file mode 100644 index 0000000..fb0729a --- /dev/null +++ b/0063-process-add-some-checks-before-patching.patch @@ -0,0 +1,85 @@ +From 545f861d2c0586f78d4860406f107a3fd963218c Mon Sep 17 00:00:00 2001 +From: Hao Wang +Date: Wed, 6 Jan 2021 14:16:15 +0800 +Subject: [PATCH 063/118] process: add some checks before patching + +Add some checks before patching: + 1. exit if target patch is not found + 2. exit if inputted patch-id is a empty string + +Signed-off-by: Hao Wang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_make.c | 7 +++++-- + src/kpatch_process.c | 13 +++++++++---- + 2 files changed, 14 insertions(+), 6 deletions(-) + +diff --git a/src/kpatch_make.c b/src/kpatch_make.c +index 043cd24..ceadd1c 100644 +--- a/src/kpatch_make.c ++++ b/src/kpatch_make.c +@@ -1,6 +1,9 @@ + /****************************************************************************** ++ * 2021.10.07 - process: add some checks before patching ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.09.23 - libcare-ctl: introduce patch-id +- * Huawei Technologies Co., Ltd. - 0.1.4-12 ++ * Huawei Technologies Co., Ltd. + ******************************************************************************/ + + #include +@@ -99,7 +102,7 @@ int main(int argc, char **argv) + } + } + +- if (buildid == NULL || patch_id == NULL) ++ if (buildid == NULL || patch_id == NULL || *patch_id == '\0') + usage(); + + fd1 = open(argv[optind], O_RDONLY); +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index 9753bad..4734930 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -1,9 +1,12 @@ + /****************************************************************************** ++ * 2021.10.07 - process: add some checks before patching ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.09.23 - libcare-ctl: introduce patch-id +- * Huawei Technologies Co., Ltd. - 0.1.4-12 ++ * Huawei Technologies Co., Ltd. + * + * 2021.09.23 - libcare-ctl: implement applied patch list +- * Huawei Technologies Co., Ltd. - 0.1.4-11 ++ * Huawei Technologies Co., Ltd. + ******************************************************************************/ + + #include +@@ -429,8 +432,10 @@ kpatch_process_associate_patches(kpatch_process_t *proc, const char *patch_id) + } + } + +- if (patch_id && !found_target) ++ if (patch_id && !found_target) { + fprintf(stderr, "Failed to find target patch with patch_id=%s!\n", patch_id); ++ return -1; ++ } + + return found; + } +@@ -549,7 +554,7 @@ kpatch_process_map_object_files(kpatch_process_t *proc, const char *patch_id) + kpinfo("Found %d applied patch(es).\n", ret); + } + +- return 0; ++ return ret; + } + + static void +-- +2.27.0 + diff --git a/0064-time-add-frozen-time-count-for-patch-unpatch.patch b/0064-time-add-frozen-time-count-for-patch-unpatch.patch new file mode 100644 index 0000000..345f274 --- /dev/null +++ b/0064-time-add-frozen-time-count-for-patch-unpatch.patch @@ -0,0 +1,103 @@ +From 67aa886cba66819468adb7ccc1326ee40d9ab1e2 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Thu, 7 Jan 2021 13:30:36 +0800 +Subject: [PATCH 064/118] time: add frozen time count for patch/unpatch + +It is necessary to calculate frozeon time which is directly related +to live patch downtime. + +Signed-off-by: JiaJie Li +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_patch.c | 21 +++++++++++++++++++-- + 1 file changed, 19 insertions(+), 2 deletions(-) + +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index 3eb0922..e0d533d 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -1,9 +1,12 @@ + /****************************************************************************** ++ * 2021.10.07 - time: add frozen time count for patch/unpatch ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.09.23 - libcare-ctl: introduce patch-id +- * Huawei Technologies Co., Ltd. - 0.1.4-12 ++ * Huawei Technologies Co., Ltd. + * + * 2021.09.23 - libcare-ctl: implement applied patch list +- * Huawei Technologies Co., Ltd. - 0.1.4-11 ++ * Huawei Technologies Co., Ltd. + ******************************************************************************/ + + #include +@@ -28,7 +31,9 @@ + #include "include/kpatch_ptrace.h" + #include "include/list.h" + #include "include/kpatch_log.h" ++#include + ++#define GET_MICROSECONDS(a, b) ((a.tv_sec - b.tv_sec) * 1000000 + (a.tv_usec - b.tv_usec)) + + static inline int + is_addr_in_info(unsigned long addr, +@@ -421,6 +426,8 @@ int process_patch(int pid, void *_data) + int ret; + kpatch_process_t _proc, *proc = &_proc; + struct patch_data *data = _data; ++ struct timeval start_tv, end_tv; ++ unsigned long frozen_time; + + kpatch_storage_t *storage = data->storage; + int is_just_started = data->is_just_started; +@@ -470,6 +477,7 @@ int process_patch(int pid, void *_data) + if (ret <= 0) + goto out_free; + ++ gettimeofday(&start_tv, NULL); + /* Finally, attach to process */ + ret = kpatch_process_attach(proc); + if (ret < 0) +@@ -491,6 +499,9 @@ int process_patch(int pid, void *_data) + + out_free: + kpatch_process_free(proc); ++ gettimeofday(&end_tv, NULL); ++ frozen_time = GET_MICROSECONDS(end_tv, start_tv); ++ kpinfo("PID '%d' process patch frozen_time is %ld microsecond\n", pid, frozen_time); + + out: + if (ret < 0) { +@@ -669,6 +680,8 @@ int process_unpatch(int pid, void *_data) + char **buildids = data->buildids; + int nbuildids = data->nbuildids; + const char *patch_id = data->patch_id; ++ struct timeval start_tv, end_tv; ++ unsigned long frozen_time; + + ret = kpatch_process_init(proc, pid, /* start */ 0, /* send_fd */ -1); + if (ret < 0) +@@ -676,6 +689,7 @@ int process_unpatch(int pid, void *_data) + + kpatch_process_print_short(proc); + ++ gettimeofday(&start_tv, NULL); + ret = kpatch_process_attach(proc); + if (ret < 0) + goto out; +@@ -692,6 +706,9 @@ int process_unpatch(int pid, void *_data) + + out: + kpatch_process_free(proc); ++ gettimeofday(&end_tv, NULL); ++ frozen_time = GET_MICROSECONDS(end_tv, start_tv); ++ kpinfo("PID '%d' process unpatch frozen_time is %ld microsecond\n", pid, frozen_time); + + if (ret < 0) + printf("Failed to cancel patches for %d\n", pid); +-- +2.27.0 + diff --git a/0065-libcare-ctl-optimize-output-of-libcare-ctl-info.patch b/0065-libcare-ctl-optimize-output-of-libcare-ctl-info.patch new file mode 100644 index 0000000..c59887c --- /dev/null +++ b/0065-libcare-ctl-optimize-output-of-libcare-ctl-info.patch @@ -0,0 +1,96 @@ +From e9aae44bb4ffd25a3a3feb9b8423ac0d692312c3 Mon Sep 17 00:00:00 2001 +From: Hao Wang +Date: Thu, 21 Jan 2021 19:21:33 +0800 +Subject: [PATCH 065/118] libcare-ctl: optimize output of libcare-ctl info + +Signed-off-by: Hao Wang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_user.c | 30 +++++++++++++----------------- + 1 file changed, 13 insertions(+), 17 deletions(-) + +diff --git a/src/kpatch_user.c b/src/kpatch_user.c +index 66f3efa..4283e33 100644 +--- a/src/kpatch_user.c ++++ b/src/kpatch_user.c +@@ -1,9 +1,12 @@ + /****************************************************************************** ++ * 2021.10.07 - libcare-ctl: optimize output of libcare-ctl info ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.09.23 - libcare-ctl: introduce patch-id +- * Huawei Technologies Co., Ltd. - 0.1.4-12 ++ * Huawei Technologies Co., Ltd. + * + * 2021.09.23 - libcare-ctl: implement applied patch list +- * Huawei Technologies Co., Ltd. - 0.1.4-11 ++ * Huawei Technologies Co., Ltd. + ******************************************************************************/ + + #include +@@ -238,8 +241,7 @@ init_colors(void) + } + + static int +-object_info(struct info_data *data, struct object_file *o, +- int *pid_printed) ++object_info(struct info_data *data, struct object_file *o) + { + const char *buildid; + kpatch_process_t *proc = o->proc; +@@ -247,7 +249,6 @@ object_info(struct info_data *data, struct object_file *o, + struct kpatch_storage_patch *patch = NULL; + int patch_found = PATCH_NOT_FOUND; + struct obj_applied_patch *applied_patch; +- int i = 1; + + if (!o->is_elf || is_kernel_object_name(o->name)) + return 0; +@@ -281,15 +282,12 @@ object_info(struct info_data *data, struct object_file *o, + if (o->num_applied_patch == 0 && !patch_found) + return 0; + +- if (!*pid_printed) { +- printf("pid=%d comm=%s\n", pid, proc->comm); +- *pid_printed = 1; +- } +- +- printf("process = %s; buildid = %s; applied patch number = %ld:\n", o->name, buildid, o->num_applied_patch); ++ printf("%-25s %d\n", "Pid:", pid); ++ printf("%-25s %s\n", "Process:", o->name); ++ printf("%-25s %s\n", "Build id:", buildid); ++ printf("%-25s %ld\n", "Applied patch number:", o->num_applied_patch); + list_for_each_entry(applied_patch, &o->applied_patch, list) { +- printf("%d. patch->id = %s\n", i, applied_patch->patch_file->kpfile.patch->id); +- i++; ++ printf("%-25s %s\n", "Patch id:", applied_patch->patch_file->kpfile.patch->id); + } + + if (storage_patch_found(patch) && patch->patchlevel) { +@@ -347,7 +345,7 @@ object_info(struct info_data *data, struct object_file *o, + static int + process_info(int pid, void *_data) + { +- int ret, pid_printed = 0; ++ int ret; + kpatch_process_t _proc, *proc = &_proc; + struct info_data *data = _data; + struct object_file *o; +@@ -366,11 +364,9 @@ process_info(int pid, void *_data) + + + list_for_each_entry(o, &proc->objs, list) +- if (object_info(data, o, &pid_printed)) ++ if (object_info(data, o)) + break; + +- if (pid_printed && data->print_description) +- printf("========================================\n"); + out: + kpatch_process_free(proc); + +-- +2.27.0 + diff --git a/0066-libcare-patch-make-add-build-id-options.patch b/0066-libcare-patch-make-add-build-id-options.patch new file mode 100644 index 0000000..fb8ef8d --- /dev/null +++ b/0066-libcare-patch-make-add-build-id-options.patch @@ -0,0 +1,73 @@ +From b946c0505cabaacf780a3903097e685af44d6945 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Mon, 1 Feb 2021 16:26:16 +0800 +Subject: [PATCH 066/118] libcare-patch-make: add --build-id options + +build-id could change between a complete packages and a package +after extracting debuginfo through rpmbuild. +Note that, it would not change any symbol offset when do stripping +debuginfo, it would be safe to assign the build-id forcely. + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/libcare-patch-make | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/src/libcare-patch-make b/src/libcare-patch-make +index 01181b1..7e0edf0 100755 +--- a/src/libcare-patch-make ++++ b/src/libcare-patch-make +@@ -8,6 +8,7 @@ Usage: libcare-patch-make [-h|--help] [-u|--update || -c|--clean] + [-s|--srcdir=SRCDIR] \ + [-d|--destdir=DESTDIRVAR] \ + [-i|--id=PATCH-ID] \ ++ [-b|--buildid=BUILD-ID] \ + [-j|--jobs=] \ + PATCH1 PATCH2 ... + +@@ -20,6 +21,7 @@ install with specified DESTDIR. + -d --destdir specify variable makefile system uses to specify destination + directory for the installation + -i --id>-give this patch an unique id (less than 7 char) ++ -b --buildid give this patch an unique build-id + -j --jobs specify variable makefile system jobs of compile, for example + `make -j 4` is startup `4` jobs to compile. + EOF +@@ -140,6 +142,10 @@ build_kpatches() { + + test -n "$buildid" || continue + ++ if [ ! -z ${build_id} ];then ++ buildid=${build_id} ++ fi ++ + chmod u+w "${origexec}" "${patchedexec}" + $KPATCH_PATH/kpatch_strip --strip "${patchedexec}" \ + "${patchedexec}.stripped" >/dev/null +@@ -157,7 +163,7 @@ build_kpatches() { + main() { + PROG_NAME=$(basename $0) + +- TEMP=$(getopt -o s:ucd:i:j: --long srcdir:,update,clean,destdir:,id:,jobs: -n ${PROG_NAME} -- "$@" || usage 1) ++ TEMP=$(getopt -o s:ucd:i:b:j: --long srcdir:,update,clean,destdir:,id:,buildid:,jobs: -n ${PROG_NAME} -- "$@" || usage 1) + eval set -- "$TEMP" + + destdir="DESTDIR" +@@ -186,6 +192,11 @@ main() { + patch_id="$1" + shift + ;; ++ -b|--buildid) ++ shift ++ build_id="$1" ++ shift ++ ;; + -j|--jobs) + shift + jobs_make=$1 +-- +2.27.0 + diff --git a/0067-libcare-patch-make-add-j-option-to-accelarate-make-p.patch b/0067-libcare-patch-make-add-j-option-to-accelarate-make-p.patch new file mode 100644 index 0000000..dddc2e8 --- /dev/null +++ b/0067-libcare-patch-make-add-j-option-to-accelarate-make-p.patch @@ -0,0 +1,46 @@ +From 9818d259a05f1da3eef99b2dc7df28b653d02f89 Mon Sep 17 00:00:00 2001 +From: Bihong Yu +Date: Sun, 7 Feb 2021 18:51:24 +0800 +Subject: [PATCH 067/118] libcare-patch-make: add -j option to accelarate make + process + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/libcare-patch-make | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/libcare-patch-make b/src/libcare-patch-make +index 7e0edf0..3b757aa 100755 +--- a/src/libcare-patch-make ++++ b/src/libcare-patch-make +@@ -83,7 +83,7 @@ build_objects() { + test $jobs_make && JOBS_MAKE="-j $jobs_make" + + if test -n "$do_clean"; then +- make $LPMAKEFILE clean >$MAKE_OUTPUT 2>&1 ++ make $LPMAKEFILE $JOBS_MAKE clean >$MAKE_OUTPUT 2>&1 + rm -rf "$LPMAKE_ORIGINAL_DIR" "$LPMAKE_PATCHED_DIR" + fi + +@@ -94,7 +94,7 @@ build_objects() { + make $LPMAKEFILE $JOBS_MAKE >$MAKE_OUTPUT 2>&1 + + echo "${green}INSTALLING ORIGINAL OBJECTS INTO $LPMAKE_ORIGINAL_DIR${reset}" +- make $LPMAKEFILE install \ ++ make $LPMAKEFILE $JOBS_MAKE install \ + "$destdir=$LPMAKE_ORIGINAL_DIR" \ + >$MAKE_OUTPUT 2>&1 + +@@ -120,7 +120,7 @@ build_objects() { + make $LPMAKEFILE $JOBS_MAKE >$MAKE_OUTPUT 2>&1 + + echo "${green}INSTALLING PATCHED OBJECTS INTO $LPMAKE_PATCHED_DIR${reset}" +- make $LPMAKEFILE install \ ++ make $LPMAKEFILE $JOBS_MAKE install \ + "$destdir=$LPMAKE_PATCHED_DIR" \ + >$MAKE_OUTPUT 2>&1 + } +-- +2.27.0 + diff --git a/0068-Makefile-make-binfiles-permission-as-500.patch b/0068-Makefile-make-binfiles-permission-as-500.patch new file mode 100644 index 0000000..c22d8ca --- /dev/null +++ b/0068-Makefile-make-binfiles-permission-as-500.patch @@ -0,0 +1,42 @@ +From e17ed8e58c3aa6c4450316ed2131b1d5ba263c4a Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Sun, 7 Feb 2021 20:38:54 +0800 +Subject: [PATCH 068/118] Makefile: make binfiles' permission as 500 + +Permission as 500 should be enough for all binfiles, change it. + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/Makefile | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/src/Makefile b/src/Makefile +index 6989617..9071be4 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -111,12 +111,12 @@ libexecdir ?= /usr/local/libexec + INSTALL ?= install + install: all + $(INSTALL) -d $(DESTDIR)/$(bindir) +- $(INSTALL) -m 0755 libcare-ctl $(DESTDIR)/$(bindir)/libcare-ctl +- $(INSTALL) -m 0755 libcare-client $(DESTDIR)/$(bindir)/libcare-client +- $(INSTALL) -m 0755 libcare-cc $(DESTDIR)/$(bindir)/libcare-cc +- $(INSTALL) -m 0755 libcare-patch-make $(DESTDIR)/$(bindir)/libcare-patch-make +- $(INSTALL) -m 0755 kpatch_gensrc $(DESTDIR)/$(bindir)/kpatch_gensrc +- $(INSTALL) -m 0755 kpatch_make $(DESTDIR)/$(bindir)/kpatch_make +- $(INSTALL) -m 0755 kpatch_strip $(DESTDIR)/$(bindir)/kpatch_strip ++ $(INSTALL) -m 0500 libcare-ctl $(DESTDIR)/$(bindir)/libcare-ctl ++ $(INSTALL) -m 0500 libcare-client $(DESTDIR)/$(bindir)/libcare-client ++ $(INSTALL) -m 0500 libcare-cc $(DESTDIR)/$(bindir)/libcare-cc ++ $(INSTALL) -m 0500 libcare-patch-make $(DESTDIR)/$(bindir)/libcare-patch-make ++ $(INSTALL) -m 0500 kpatch_gensrc $(DESTDIR)/$(bindir)/kpatch_gensrc ++ $(INSTALL) -m 0500 kpatch_make $(DESTDIR)/$(bindir)/kpatch_make ++ $(INSTALL) -m 0500 kpatch_strip $(DESTDIR)/$(bindir)/kpatch_strip + + .PHONY: all clean test tests tests-gensrc tests-strip +-- +2.27.0 + diff --git a/0069-libcare-ctl-remove-useless-codes-for-info-interface.patch b/0069-libcare-ctl-remove-useless-codes-for-info-interface.patch new file mode 100644 index 0000000..162bc30 --- /dev/null +++ b/0069-libcare-ctl-remove-useless-codes-for-info-interface.patch @@ -0,0 +1,315 @@ +From 7f5ab12da72aa5878c61b0078fedfb82575d0b5d Mon Sep 17 00:00:00 2001 +From: Hao Wang +Date: Fri, 26 Feb 2021 15:42:13 +0800 +Subject: [PATCH 069/118] libcare-ctl: remove useless codes for info interface + +Signed-off-by: Hao Wang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_user.c | 216 ++++------------------------------------------ + 1 file changed, 19 insertions(+), 197 deletions(-) + +diff --git a/src/kpatch_user.c b/src/kpatch_user.c +index 4283e33..8eaec58 100644 +--- a/src/kpatch_user.c ++++ b/src/kpatch_user.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.07 - libcare-ctl: remove useless codes for info interface ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.07 - libcare-ctl: optimize output of libcare-ctl info + * Huawei Technologies Co., Ltd. + * +@@ -202,87 +205,40 @@ int cmd_unpatch_user(int argc, char *argv[]) + return processes_unpatch(pid, argv, argc, patch_id); + } + +-static +-int usage_info(const char *err) ++static int ++usage_info(const char *err) + { + if (err) + fprintf(stderr, "err: %s\n", err); +- fprintf(stderr, "usage: libcare-ctl info [options] [-b BUILDID] [-p PID] [-s STORAGE] [-r REGEXP]\n"); ++ ++ fprintf(stderr, "usage: libcare-ctl info -p PID\n"); + fprintf(stderr, "\nOptions:\n"); + fprintf(stderr, " -h - this message\n"); +- fprintf(stderr, " -n - don't print patch descriptions\n"); +- fprintf(stderr, " -b - output all processes having object with specified BuildID loaded\n"); + fprintf(stderr, " -p - target process, 'all' or omitted for all the system processes\n"); +- fprintf(stderr, " -s - only show BuildIDs of object having patches in STORAGE, default %s\n", +- storage_dir); +- fprintf(stderr, " -r - only show BuildIDs of object having name matching REGEXP\n"); + return err ? 0 : -1; + } + +-struct info_data { +- const char *buildid; +- kpatch_storage_t *storage; +- regex_t *name_re; +- int print_description; +- int may_update, vulnerable; +-}; +- +-const char *RED = "\x1B[31m"; +-const char *GREEN = "\x1B[32m"; +-const char *YELLOW = "\x1B[33m"; +-const char *RESET = "\x1B[0m"; +- +-static void +-init_colors(void) +-{ +- if (!isatty(fileno(stdout))) { +- RED = GREEN = YELLOW = RESET = ""; +- } +-} +- + static int +-object_info(struct info_data *data, struct object_file *o) ++object_info(struct object_file *o) + { + const char *buildid; + kpatch_process_t *proc = o->proc; +- int pid = proc->pid; +- struct kpatch_storage_patch *patch = NULL; +- int patch_found = PATCH_NOT_FOUND; +- struct obj_applied_patch *applied_patch; ++ struct obj_applied_patch *applied_patch = NULL; + + if (!o->is_elf || is_kernel_object_name(o->name)) + return 0; + + +- if (data->name_re != NULL && +- regexec(data->name_re, o->name, +- 0, NULL, REG_EXTENDED) == REG_NOMATCH) ++ if (!o->num_applied_patch) + return 0; + + buildid = kpatch_get_buildid(o); + if (buildid == NULL) { + kpinfo("can't get buildid for %s\n", o->name); +- return 0; +- } +- +- if (data->buildid) { +- if (!strcmp(data->buildid, buildid)) { +- printf("pid=%d comm=%s\n", pid, proc->comm); +- printf("%s %s\n", o->name, buildid); +- return 1; +- } +- return 0; ++ return -1; + } + +- if (data->storage) +- patch_found = storage_have_patch(data->storage, +- buildid, +- &patch); +- +- if (o->num_applied_patch == 0 && !patch_found) +- return 0; +- +- printf("%-25s %d\n", "Pid:", pid); ++ printf("%-25s %d\n", "Pid:", proc->pid); + printf("%-25s %s\n", "Process:", o->name); + printf("%-25s %s\n", "Build id:", buildid); + printf("%-25s %ld\n", "Applied patch number:", o->num_applied_patch); +@@ -290,64 +246,16 @@ object_info(struct info_data *data, struct object_file *o) + printf("%-25s %s\n", "Patch id:", applied_patch->patch_file->kpfile.patch->id); + } + +- if (storage_patch_found(patch) && patch->patchlevel) { +- printf(" latest=%d", patch->patchlevel); +- } +- +- /* empty patch patchlevel=0 with description of bugs in the version */ +- if (patch && patch->patchlevel == 0 && o->num_applied_patch == 0) { +- printf(" %sVULNERABLE%s\n", RED, RESET); +- +- if (data->print_description) { +- char *desc; +- +- desc = storage_get_description(data->storage, patch); +- printf("\n%sVULNERABLE VERSION:\n", RED); +- +- printf("%s%s", desc, RESET); +- } +- +- data->vulnerable ++; +- } +- + printf("\n"); + +- /* Old or no patch applied but we have one in storage */ +- if (patch && patch->patchlevel != 0 && +- (o->num_applied_patch == 0 || patch->patchlevel > o->kpfile.patch->user_level)) { +- if (data->print_description) { +- char *desc; +- +- printf("\n%snew patch description:\n", YELLOW); +- +- desc = storage_get_description(data->storage, patch); +- printf("%s%s", desc, RESET); +- } +- +- data->may_update++; +- return 0; +- } +- +- /* patch applied and is latest version. show descripition for it */ +- if (patch && (o->num_applied_patch > 0) && data->print_description) { +- char *desc; +- +- printf("\n%slatest patch applied\n", GREEN); +- +- desc = storage_get_description(data->storage, patch); +- printf("%s%s", desc, RESET); +- return 0; +- } +- + return 0; + } + + static int +-process_info(int pid, void *_data) ++process_info(int pid) + { + int ret; + kpatch_process_t _proc, *proc = &_proc; +- struct info_data *data = _data; + struct object_file *o; + + ret = kpatch_process_init(proc, pid, /* start */ 0, /* send_fd */ -1); +@@ -363,102 +271,23 @@ process_info(int pid, void *_data) + goto out; + + +- list_for_each_entry(o, &proc->objs, list) +- if (object_info(data, o)) ++ list_for_each_entry(o, &proc->objs, list) { ++ if ((ret = object_info(o)) < 0) + break; ++ } + + out: + kpatch_process_free(proc); +- +- return ret; +-} +- +-static int +-processes_info(int pid, +- const char *buildid, +- const char *storagepath, +- const char *regexp, +- int print_description) +-{ +- int ret = -1; +- struct info_data data = { 0, }; +- kpatch_storage_t storage; +- regex_t regex; +- +- init_colors(); +- +- data.buildid = buildid; +- data.print_description = print_description; +- data.may_update = 0; +- data.vulnerable = 0; +- +- if (regexp != NULL) { +- ret = regcomp(®ex, regexp, REG_EXTENDED); +- if (ret != 0) { +- ret = -1; +- goto out_err; +- } +- data.name_re = ®ex; +- } +- +- if (storagepath != NULL) { +- ret = storage_init(&storage, storagepath); +- if (ret < 0) +- goto out_err; +- data.storage = &storage; +- } +- +- ret = processes_do(pid, process_info, &data); +- +- if (data.vulnerable) { +- printf("%s%d object(s) are vulnerable%s\n", RED, data.vulnerable, RESET); +- } +- +- if (data.may_update) { +- printf("%s%d object(s) may be updated to the latest patch%s\n", +- YELLOW, data.may_update, RESET); +- printf("\n%sRun: libcare-client update%s\n", +- RED, RESET); +- } +- +-out_err: +- if (data.storage != NULL) { +- storage_free(data.storage); +- } +- if (data.name_re != NULL) { +- regfree(data.name_re); +- } +- + return ret; + } + + int cmd_info_user(int argc, char *argv[]) + { +- int opt, pid = -1, verbose = 0, print_description = 1; +- const char *buildid = NULL; +- const char *storagepath = storage_dir; +- const char *regexp = NULL; ++ int opt, pid = -1, verbose = 0; + +- while ((opt = getopt(argc, argv, "hb:p:s:r:vn")) != EOF) { ++ while ((opt = getopt(argc, argv, "hp:v")) != EOF) { + switch (opt) { +- case 'b': +- buildid = optarg; +- break; + case 'p': +- if (strcmp(optarg, "all")) +- pid = atoi(optarg); +- break; +- case 's': +- storagepath = optarg; +- if (storagepath[0] == '\0' || +- !strcmp(storagepath, "/dev/null")) +- storagepath = NULL; +- break; +- case 'n': +- print_description = 0; +- break; +- case 'r': +- regexp = optarg; + break; + case 'v': + verbose = 1; +@@ -473,14 +302,7 @@ int cmd_info_user(int argc, char *argv[]) + if (!verbose) + log_level = LOG_ERR; + +- if ((regexp != NULL && buildid != NULL) || +- (buildid != NULL && storagepath != NULL)) { +- return usage_info("regexp & buildid | buildid & storage are mutual"); +- } +- +- +- return processes_info(pid, buildid, storagepath, regexp, +- print_description); ++ return process_info(pid); + } + + +-- +2.27.0 + diff --git a/0070-kpatch_object-combine-funcitons-with-similar-functio.patch b/0070-kpatch_object-combine-funcitons-with-similar-functio.patch new file mode 100644 index 0000000..baea253 --- /dev/null +++ b/0070-kpatch_object-combine-funcitons-with-similar-functio.patch @@ -0,0 +1,154 @@ +From 1f57665d6e1a71879dd782fc6e166ad89e09e57b Mon Sep 17 00:00:00 2001 +From: Bihong Yu +Date: Mon, 22 Feb 2021 17:11:01 +0800 +Subject: [PATCH 070/118] kpatch_object: combine funcitons with similar + function + +the kpatch_object_find_applied_patch() and +the kpatch_object_check_duplicate_id() have similar function, so +combine them. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/include/kpatch_process.h | 11 +++++++---- + src/kpatch_patch.c | 10 ++++++++-- + src/kpatch_process.c | 29 +++++++++-------------------- + 3 files changed, 24 insertions(+), 26 deletions(-) + +diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h +index 9409917..ea5aa27 100644 +--- a/src/include/kpatch_process.h ++++ b/src/include/kpatch_process.h +@@ -1,9 +1,12 @@ + /****************************************************************************** ++ * 2021.10.07 - kpatch_object: combine funcitons with similar function ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.09.23 - libcare-ctl: introduce patch-id +- * Huawei Technologies Co., Ltd. - 0.1.4-12 ++ * Huawei Technologies Co., Ltd. + * + * 2021.09.23 - libcare-ctl: implement applied patch list +- * Huawei Technologies Co., Ltd. - 0.1.4-11 ++ * Huawei Technologies Co., Ltd. + ******************************************************************************/ + + #ifndef __KPATCH_PROCESS__ +@@ -235,8 +238,8 @@ unsigned long object_find_patch_region(struct object_file *obj, + size_t memsize, + struct vm_hole **hole); + +-int kpatch_object_check_duplicate_id(struct object_file *o, const char *patch_id); ++struct object_file * ++kpatch_object_get_applied_patch_by_id(struct object_file *o, const char *patch_id); + int kpatch_object_add_applied_patch(struct object_file *o, struct object_file *new); +-struct object_file * kpatch_object_find_applied_patch(struct object_file *o, const char *patch_id); + + #endif /* ifndef __KPATCH_PROCESS__ */ +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index e0d533d..f3e35e6 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.07 - kpatch_object: combine funcitons with similar function ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.07 - time: add frozen time count for patch/unpatch + * Huawei Technologies Co., Ltd. + * +@@ -307,6 +310,7 @@ static int + object_apply_patch(struct object_file *o) + { + struct kpatch_file *kp; ++ struct object_file *applied_patch; + size_t sz, i; + int undef, ret; + +@@ -319,7 +323,9 @@ object_apply_patch(struct object_file *o) + return -1; + } + +- if (kpatch_object_check_duplicate_id(o, (const char *)o->kpfile.patch->id)) { ++ applied_patch = kpatch_object_get_applied_patch_by_id(o, ++ (const char *)o->kpfile.patch->id); ++ if (applied_patch) { + kplogerror("A patch with patch-id(%s) is already applied by %s", + o->kpfile.patch->id, o->name); + return -1; +@@ -540,7 +546,7 @@ object_find_applied_patch_info(struct object_file *o) + else + return -1; + +- applied_patch = kpatch_object_find_applied_patch(o, patch_id); ++ applied_patch = kpatch_object_get_applied_patch_by_id(o, patch_id); + if (!applied_patch) { + fprintf(stderr, "Failed to find target applied patch!\n"); + return -1; +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index 4734930..a6fcd51 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.07 - kpatch_object: combine funcitons with similar function ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.07 - process: add some checks before patching + * Huawei Technologies Co., Ltd. + * +@@ -1153,17 +1156,18 @@ kpatch_process_get_obj_by_regex(kpatch_process_t *proc, const char *regex) + return found; + } + +-int +-kpatch_object_check_duplicate_id(struct object_file *o, const char *patch_id) ++struct object_file * ++kpatch_object_get_applied_patch_by_id(struct object_file *o, ++ const char *patch_id) + { + struct obj_applied_patch *applied_patch; + + list_for_each_entry(applied_patch, &o->applied_patch, list) { + if (!strcmp(patch_id, applied_patch->patch_file->kpfile.patch->id)) +- return 1; ++ return applied_patch->patch_file; + } + +- return 0; ++ return NULL; + } + + int +@@ -1177,7 +1181,7 @@ kpatch_object_add_applied_patch(struct object_file *o, struct object_file *new) + return -1; + + patch_id = new->kpfile.patch->id; +- if (kpatch_object_check_duplicate_id(o, patch_id)) { ++ if (kpatch_object_get_applied_patch_by_id(o, patch_id)) { + free(patch); + return 0; + } +@@ -1188,18 +1192,3 @@ kpatch_object_add_applied_patch(struct object_file *o, struct object_file *new) + + return 0; + } +- +-struct object_file * +-kpatch_object_find_applied_patch(struct object_file *o, const char *patch_id) +-{ +- struct obj_applied_patch *applied_patch; +- struct object_file *target = NULL; +- +- list_for_each_entry(applied_patch, &o->applied_patch, list) { +- target = applied_patch->patch_file; +- if (!strcmp(target->kpfile.patch->id, patch_id)) +- return target; +- } +- +- return NULL; +-} +-- +2.27.0 + diff --git a/0071-process_unpatch-adapt-return-value.patch b/0071-process_unpatch-adapt-return-value.patch new file mode 100644 index 0000000..7951517 --- /dev/null +++ b/0071-process_unpatch-adapt-return-value.patch @@ -0,0 +1,61 @@ +From 75a44219e086e31f1c8b05368b0a0d30c31e3bef Mon Sep 17 00:00:00 2001 +From: Bihong Yu +Date: Sat, 27 Feb 2021 11:13:56 +0800 +Subject: [PATCH 071/118] process_unpatch: adapt return value + +return 0 if unpatch patch(es) successfully or no releative patch +deactive; return negative value if unpatch failed. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_patch.c | 18 +++++++++++++----- + 1 file changed, 13 insertions(+), 5 deletions(-) + +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index f3e35e6..b286eef 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.08 - process_unpatch: adapt return value ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.07 - kpatch_object: combine funcitons with similar function + * Huawei Technologies Co., Ltd. + * +@@ -623,7 +626,10 @@ object_unapply_patch(struct object_file *o, int check_flag) + o->kpta, + o->kpfile.size); + +- return ret; ++ if (ret < 0) ++ return ret; ++ ++ return 1; + } + + static int +@@ -716,13 +722,15 @@ out: + frozen_time = GET_MICROSECONDS(end_tv, start_tv); + kpinfo("PID '%d' process unpatch frozen_time is %ld microsecond\n", pid, frozen_time); + +- if (ret < 0) ++ if (ret < 0) { + printf("Failed to cancel patches for %d\n", pid); +- else if (ret == 0) ++ return ret; ++ } else if (ret == 0) { + printf("No patch(es) cancellable from PID '%d' were found\n", pid); +- else ++ } else { + printf("%d patch hunk(s) were successfully cancelled from PID '%d'\n", ret, pid); ++ } + +- return ret; ++ return 0; + } + +-- +2.27.0 + diff --git a/0072-kpatch_elf-arch_elf-enhance-kpatch_elf-and-arch_elf-.patch b/0072-kpatch_elf-arch_elf-enhance-kpatch_elf-and-arch_elf-.patch new file mode 100644 index 0000000..7017d51 --- /dev/null +++ b/0072-kpatch_elf-arch_elf-enhance-kpatch_elf-and-arch_elf-.patch @@ -0,0 +1,269 @@ +From c1cf30cd1c1d6a03ad6e68d3811b6beeb9a68d5b Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Wed, 10 Mar 2021 14:52:36 +0800 +Subject: [PATCH 072/118] kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf + code + +1. it should be tell caller failure if symhdr could not found +2. do not do rude abort in ptrace, otherwise it could not deattach forever +3. fix unint codex warning + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/arch/aarch64/arch_elf.c | 22 ++++++++++++++++------ + src/arch/x86/arch_elf.c | 16 ++++++++++++++-- + src/kpatch_elf.c | 33 +++++++++++++++++++++++++-------- + src/kpatch_elf_objinfo.c | 7 +++++++ + src/kpatch_patch.c | 6 ++++++ + 5 files changed, 68 insertions(+), 16 deletions(-) + +diff --git a/src/arch/aarch64/arch_elf.c b/src/arch/aarch64/arch_elf.c +index 2a9b5dc..eccf0b6 100644 +--- a/src/arch/aarch64/arch_elf.c ++++ b/src/arch/aarch64/arch_elf.c +@@ -1,15 +1,18 @@ + /****************************************************************************** ++ * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.07 - aarch64/arch_elf: Add ldr and ldrb relocation for aarch64 +- * Huawei Technologies Co., Ltd. - 0.1.4-18 ++ * Huawei Technologies Co., Ltd. + * + * 2021.10.07 - aarch64/arch_elf: Add R_AARCH64_LDST32_ABS_LO12_NC relocation type for arm +- * Huawei Technologies Co., Ltd. - 0.1.4-16 ++ * Huawei Technologies Co., Ltd. + * + * 2021.09.23 - tls: add support for tls symbol +- * Huawei Technologies Co., Ltd. - 0.1.4-15 ++ * Huawei Technologies Co., Ltd. + * + * 2021.09.23 - arch/aarch64/arch_elf: Add LDR and B instruction relocation +- * Huawei Technologies Co., Ltd. - 0.1.4-13 ++ * Huawei Technologies Co., Ltd. + ******************************************************************************/ + + #include +@@ -167,7 +170,8 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) + { + struct kpatch_file *kp = o->kpfile.patch; + GElf_Ehdr *ehdr = (void *)kp + kp->kpatch_offset; +- GElf_Shdr *shdr = (void *)ehdr + ehdr->e_shoff, *symhdr; ++ GElf_Shdr *shdr = (void *)ehdr + ehdr->e_shoff; ++ GElf_Shdr *symhdr = NULL; + GElf_Rela *relocs = (void *)ehdr + relsec->sh_offset; + GElf_Shdr *tshdr = shdr + relsec->sh_info; + void *t = (void *)ehdr + shdr[relsec->sh_info].sh_offset; +@@ -180,6 +184,11 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) + symhdr = &shdr[i]; + } + ++ if (symhdr == NULL) { ++ kperr("symhdr is null, failed to do relocations.\n"); ++ return -1; ++ } ++ + scnname = secname(ehdr, shdr + relsec->sh_info); + kpdebug("applying relocations to '%s'\n", scnname); + is_kpatch_info = strcmp(scnname, ".kpatch.info") == 0; +@@ -190,10 +199,11 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) + unsigned long val; + void *loc, *loc2; + +- if (r->r_offset < 0 || r->r_offset >= tshdr->sh_size) ++ if (r->r_offset < 0 || r->r_offset >= tshdr->sh_size) { + kpfatalerror("Relocation offset for section '%s'" + " is at 0x%lx beyond the section size 0x%lx\n", + scnname, r->r_offset, tshdr->sh_size); ++ } + + /* Location in our address space */ + loc = t + r->r_offset; +diff --git a/src/arch/x86/arch_elf.c b/src/arch/x86/arch_elf.c +index 52de117..3e6f1ad 100644 +--- a/src/arch/x86/arch_elf.c ++++ b/src/arch/x86/arch_elf.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code ++ * Huawei Technologies Co., Ltd. ++ ******************************************************************************/ ++ + #include + #include + #include +@@ -19,8 +24,9 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) + { + struct kpatch_file *kp = o->kpfile.patch; + GElf_Ehdr *ehdr = (void *)kp + kp->kpatch_offset; +- GElf_Shdr *shdr = (void *)ehdr + ehdr->e_shoff, *symhdr; + GElf_Rela *relocs = (void *)ehdr + relsec->sh_offset; ++ GElf_Shdr *shdr = (void *)ehdr + ehdr->e_shoff; ++ GElf_Shdr *symhdr = NULL; + GElf_Shdr *tshdr = shdr + relsec->sh_info; + void *t = (void *)ehdr + shdr[relsec->sh_info].sh_offset; + void *tshdr2 = (void *)shdr[relsec->sh_info].sh_addr; +@@ -32,6 +38,11 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) + symhdr = &shdr[i]; + } + ++ if (symhdr == NULL) { ++ kperr("symhdr is null, failed to do relocations.\n"); ++ return -1; ++ } ++ + scnname = secname(ehdr, shdr + relsec->sh_info); + kpdebug("applying relocations to '%s'\n", scnname); + is_kpatch_info = strcmp(scnname, ".kpatch.info") == 0; +@@ -42,10 +53,11 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) + unsigned long val; + void *loc, *loc2; + +- if (r->r_offset < 0 || r->r_offset >= tshdr->sh_size) ++ if (r->r_offset < 0 || r->r_offset >= tshdr->sh_size) { + kpfatalerror("Relocation offset for section '%s'" + " is at 0x%lx beyond the section size 0x%lx\n", + scnname, r->r_offset, tshdr->sh_size); ++ } + + /* Location in our address space */ + loc = t + r->r_offset; +diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c +index d443001..219a5ef 100644 +--- a/src/kpatch_elf.c ++++ b/src/kpatch_elf.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code ++ * Huawei Technologies Co., Ltd. ++ ******************************************************************************/ ++ + #include + #include + #include +@@ -444,6 +449,10 @@ struct kpatch_jmp_table *kpatch_new_jmp_table(int entries) + size_t sz = sizeof(*jtbl) + entries * sizeof(struct kpatch_jmp_table_entry); + + jtbl = malloc(sz); ++ if (jtbl == NULL) { ++ kperr("Failed to malloc jump table !\n"); ++ return NULL; ++ } + memset(jtbl, 0, sz); + jtbl->size = sz; + jtbl->max_entry = entries; +@@ -520,13 +529,16 @@ sym_name_cmp(const void *a_, const void *b_, void *s_) + static int + elf_object_load_dynsym(struct object_file *o) + { +- int rv; ++ int rv = -1; ++ int ret = -1; + size_t i; + Elf64_Dyn *dynamics = NULL; + char *buffer = NULL; + Elf64_Phdr *phdr; +- unsigned long symtab_addr, strtab_addr; +- unsigned long symtab_sz, strtab_sz; ++ unsigned long symtab_addr = 0; ++ unsigned long strtab_addr = 0; ++ unsigned long symtab_sz = 0; ++ unsigned long strtab_sz = 0; + + if (o->dynsyms != NULL) + return 0; +@@ -578,11 +590,13 @@ elf_object_load_dynsym(struct object_file *o) + } + } + ++ /* Note strtab_addr, strtab_addr, strtab_sz should always have been assigned by curdyn */ + symtab_sz = (strtab_addr - symtab_addr); + + buffer = malloc(strtab_sz + symtab_sz); +- if (buffer == NULL) ++ if (buffer == NULL) { + goto out_free; ++ } + + rv = kpatch_process_mem_read(o->proc, + symtab_addr, +@@ -594,7 +608,9 @@ elf_object_load_dynsym(struct object_file *o) + o->dynsyms = (Elf64_Sym*) buffer; + o->ndynsyms = symtab_sz / sizeof(Elf64_Sym); + o->dynsymnames = malloc(sizeof(char *) * o->ndynsyms); +- ++ if (o->dynsymnames == NULL) { ++ goto out_free; ++ } + qsort_r((void *)o->dynsyms, o->ndynsyms, sizeof(Elf64_Sym), + sym_name_cmp, buffer + symtab_sz); + +@@ -604,14 +620,15 @@ elf_object_load_dynsym(struct object_file *o) + o->dynsymnames[i] = buffer + symtab_sz + o->dynsyms[i].st_name; + } + o->ndynsyms = i; +- ++ ret = 0; + + out_free: +- if (rv < 0) ++ if (rv < 0) { + free(buffer); ++ } + free(dynamics); + +- return rv; ++ return ret; + } + + /* TODO reuse kpatch_cc */ +diff --git a/src/kpatch_elf_objinfo.c b/src/kpatch_elf_objinfo.c +index c967c37..cadde4c 100644 +--- a/src/kpatch_elf_objinfo.c ++++ b/src/kpatch_elf_objinfo.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code ++ * Huawei Technologies Co., Ltd. ++ ******************************************************************************/ ++ + + #include + #include +@@ -49,6 +54,8 @@ int kpatch_objinfo_load(kpatch_objinfo *oi) + GElf_Shdr shdr; + Elf_Scn *scn = NULL; + ++ memset(&shdr, 0, sizeof(GElf_Shdr)); ++ + scn = kpatch_objinfo_getshdr(oi, i, &shdr); + if (scn == NULL) + return -1; +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index b286eef..8465162 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - process_unpatch: adapt return value + * Huawei Technologies Co., Ltd. + * +@@ -344,6 +347,9 @@ object_apply_patch(struct object_file *o) + undef = kpatch_count_undefined(o); + if (undef) { + o->jmp_table = kpatch_new_jmp_table(undef); ++ if (o->jmp_table == NULL) { ++ return -1; ++ } + kp->jmp_offset = sz; + kpinfo("Jump table %d bytes for %d syms at offset 0x%x\n", + o->jmp_table->size, undef, kp->jmp_offset); +-- +2.27.0 + diff --git a/0073-tls-prctl-remove-deprecated-code-for-tls-and-prctl.patch b/0073-tls-prctl-remove-deprecated-code-for-tls-and-prctl.patch new file mode 100644 index 0000000..95bbe46 --- /dev/null +++ b/0073-tls-prctl-remove-deprecated-code-for-tls-and-prctl.patch @@ -0,0 +1,300 @@ +From ea83bc4e3406c650aa45b3e3484c3e3cbb8efad9 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Thu, 11 Mar 2021 16:00:53 +0800 +Subject: [PATCH 073/118] tls/prctl: remove deprecated code for tls and prctl + +1. for now, we just suppport IE model for thread local storage +2. we do not use get_ptr_guard to obtain coro for ARM64 + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/arch/aarch64/arch_ptrace.c | 54 +-------- + src/kpatch_strip.c | 194 +-------------------------------- + 2 files changed, 8 insertions(+), 240 deletions(-) + +diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c +index 9f87d10..70ef683 100644 +--- a/src/arch/aarch64/arch_ptrace.c ++++ b/src/arch/aarch64/arch_ptrace.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.10.08 - remove deprecated code ++ * Huawei Technologies Co., Ltd. ++ ******************************************************************************/ ++ + #include + #include + #include +@@ -208,55 +213,6 @@ int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, + return ret; + } + +-int kpatch_arch_prctl_remote(struct kpatch_ptrace_ctx *pctx, int code, unsigned long *addr) +-{ +- struct user_regs_struct regs; +- struct iovec regs_iov; +- regs_iov.iov_base = ®s; +- regs_iov.iov_len = sizeof(regs); +- +- unsigned long res, sp; +- int ret; +- +- kpdebug("arch_prctl_remote: %d, %p\n", code, addr); +- ret = ptrace(PTRACE_GETREGSET, pctx->pid, (void*)NT_PRSTATUS, (void*)®s_iov); +- if (ret < 0) { +- kpdebug("FAIL. Can't get regs - %s\n", strerror(errno)); +- return -1; +- } +- ret = kpatch_process_mem_read(pctx->proc, +- regs.sp, +- &sp, +- sizeof(sp)); +- if (ret < 0) { +- kplogerror("can't peek original stack data\n"); +- return -1; +- } +- //ret = kpatch_arch_syscall_remote(pctx, __NR_arch_prctl, code, regs.sp, 0, 0, 0, 0, &res); +- if (ret < 0) +- goto poke; +- if (ret == 0 && res >= (unsigned long)-MAX_ERRNO) { +- errno = -(long)res; +- ret = -1; +- goto poke; +- } +- ret = kpatch_process_mem_read(pctx->proc, +- regs.sp, +- &res, +- sizeof(res)); +- if (ret < 0) +- kplogerror("can't peek new stack data\n"); +- +-poke: +- if (kpatch_process_mem_write(pctx->proc, +- &sp, +- regs.sp, +- sizeof(sp))) +- kplogerror("can't poke orig stack data\n"); +- *addr = res; +- return ret; +-} +- + int kpatch_arch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, + unsigned long *addr) + { +diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c +index bfc95a8..f32dddd 100644 +--- a/src/kpatch_strip.c ++++ b/src/kpatch_strip.c +@@ -1,6 +1,8 @@ + /****************************************************************************** ++ * 2021.10.08 - remove deprecated code ++ * Huawei Technologies Co., Ltd. + * 2021.09.23 - tls: add support for tls symbol +- * Huawei Technologies Co., Ltd. - 0.1.4-15 ++ * Huawei Technologies Co., Ltd. + ******************************************************************************/ + + #include +@@ -276,196 +278,6 @@ kpatch_get_local_symbol_loc(kpatch_objinfo *oi, + return SECTION_OFFSET_FOUND; + } + +-/* Find Global Offset Table entry with the address of the TLS-variable +- * specified by the `tls_offset`. Dynamic linker allocates Thread-Local storage +- * as described in ABI and places the correct offset at that address in GOT. We +- * then read this offset and use it in our jmp table. +- */ +-static unsigned long +-objinfo_find_tls_got_by_offset(kpatch_objinfo *oi, +- unsigned long tls_offset) +-{ +- Elf64_Rela *rela; +- size_t nrela; +- +- if (kpatch_objinfo_load_tls_reladyn(oi) < 0) +- kpfatalerror("kpatch_objinfo_load_tls_reladyn"); +- +- rela = oi->tlsreladyn; +- nrela = oi->ntlsreladyn; +- +- for (; nrela != 0; rela++, nrela--) { +- if (!kpatch_is_tls_rela(rela)) +- continue; +- +- if (ELF64_R_SYM(rela->r_info) == 0 && +- rela->r_addend == tls_offset) +- return rela->r_offset; +- } +- +- kpfatalerror("cannot find GOT entry for %lx\n", tls_offset); +- return 0; +-} +- +-static unsigned long +-objinfo_find_tls_got_by_symname(kpatch_objinfo *oi, +- const char *symname) +-{ +- Elf64_Rela *rela; +- size_t nrela; +- Elf64_Sym sym; +- +- if (kpatch_objinfo_load_tls_reladyn(oi) < 0) +- kpfatalerror("kpatch_objinfo_load_tls_reladyn"); +- +- rela = oi->tlsreladyn; +- nrela = oi->ntlsreladyn; +- +- for (; nrela != 0; rela++, nrela--) { +- const char *origname; +- +- if (!kpatch_is_tls_rela(rela)) +- continue; +- +- if (ELF64_R_SYM(rela->r_info) == 0 || +- rela->r_addend != 0) +- continue; +- +- if (!gelf_getsym(oi->dynsymtab, ELF64_R_SYM(rela->r_info), &sym)) +- kpfatalerror("gelf_getsym"); +- +- origname = kpatch_objinfo_strptr(oi, DYNAMIC_NAME, +- sym.st_name); +- +- if (strcmp(origname, symname) == 0 && +- rela->r_addend == 0) +- return rela->r_offset; +- } +- +- kpfatalerror("cannot find GOT entry for %s\n", symname); +- return 0; +-} +- +-static inline int +-update_reloc_with_tls_got_entry(kpatch_objinfo *origbin, +- kpatch_objinfo *patch, +- GElf_Rela *rela, +- GElf_Sym *sym) +-{ +- unsigned long got_offset; +- char *symname, *tmp; +- +- symname = (char *)kpatch_objinfo_strptr(patch, +- SYMBOL_NAME, sym->st_name); +- +- tmp = strchr(symname, '@'); +- if (tmp != NULL) +- *tmp = '\0'; +- +- if (GELF_ST_BIND(sym->st_info) == STB_LOCAL || +- sym->st_shndx != SHN_UNDEF) { +- /* This symbol should have a TPOFF64 entry in the GOT with +- * the offset of sym->st_value. Find GOT entry for this TLS +- * variable. Make st_value point to that GOT entry and mark it +- * with flag. +- */ +- +- got_offset = objinfo_find_tls_got_by_offset(origbin, +- sym->st_value); +- } else if (GELF_ST_BIND(sym->st_info) == STB_GLOBAL && +- sym->st_shndx == SHN_UNDEF) { +- /* This is a GLOBAL symbol we require from some other binary. +- * It has a GOT entry that is referenced by the symbol name, +- * not the offset. +- */ +- +- got_offset = objinfo_find_tls_got_by_symname(origbin, symname); +- } +- +- if (rela->r_addend != got_offset) { +- kpinfo("Changing GOTTPOFF symbol %s from %lx to %lx\n", +- symname, rela->r_addend, got_offset); +- rela->r_addend = got_offset; +- } +- return 0; +-} +- +-/* Update relocation against TLS symbol. +- * +- * Thread-Local Storage variables require special care because they are +- * referenced by the offset into Thread Local Storage allocated for each +- * thread. There are different models for TLS and we only support Initial-Exec. +- * +- * The following types of relocations are handled: +- * +- * - Relocs of type TPOFF32 targeting symbols in the original are changed +- * to reloc type NONE after the symbol is checked to be present at the +- * same place in the original binary. (TODO) +- * +- * *NOTE* the only way to support new variables allocated by patch is to use +- * dlopen-loaded patches. +- * - Relocs of type TPOFF64 are ignored. These are only used for long memory +- * model or as entries to GOT. +- * - Relocs of type GOTTPOFF are quite tricky. These usually point to a GOT +- * entry filled with TPOFF64 relocation. We can't do this relocation on our +- * own because it requires digging into glibc internels with a hack. +- * +- * Instead, we cheat here and find the appropriate TPOFF64 relocations IN +- * THE ORIGINAL object and make GOTTPOFF point there. This is different for +- * local/global symbols but is not very hard. +- * +- * Returns 1 when symbol must be updated, 0 when everything is OK, -1 on error. +- */ +-static inline int +-kpatch_fixup_rela_update_tls(kpatch_objinfo *origbin, +- kpatch_objinfo *patch, +- GElf_Rela *rela, +- GElf_Sym *sym) +-{ +- switch (GELF_R_TYPE(rela->r_info)) { +- case R_X86_64_TPOFF32: { +- const char *symname; +- int rv; +- unsigned long off; +- /* Leave the value as is, just check offset is the same. */ +- rela->r_info = GELF_R_INFO(0, R_X86_64_NONE); +- symname = kpatch_objinfo_strptr(patch, SYMBOL_NAME, +- sym->st_name); +- +- rv = kpatch_get_original_symbol_loc( +- origbin, symname, &off, NULL); +- if (rv == SECTION_NOT_FOUND) { +- kpfatalerror( +- "TLS symbol %s not found in original binary", +- symname); +- } +- +- if (off != sym->st_value) { +- kpfatalerror( +- "TLS symbol %s has different offset: %lx in origbinal binary, %lx in patch\n", +- symname, off, sym->st_value); +- } +- +- return 0; +- } +- +- case R_X86_64_GOTTPOFF: +- return update_reloc_with_tls_got_entry(origbin, patch, rela, sym); +- +- case R_X86_64_DTPOFF32: +- case R_X86_64_DTPOFF64: +- case R_X86_64_DTPMOD64: +- case R_X86_64_TLSGD: +- case R_X86_64_TLSLD: +- case R_X86_64_TPOFF64: +- default: +- kpfatalerror("non-supported TLS model\n"); +- return -1; +- } +- +- return 0; +-} +- + /* Redos one relocation with addend against symbol into relocation against + * section. + * +-- +2.27.0 + diff --git a/0074-kpatch_parse-fix-possible-Null-pointer-dereferences.patch b/0074-kpatch_parse-fix-possible-Null-pointer-dereferences.patch new file mode 100644 index 0000000..3ef78b5 --- /dev/null +++ b/0074-kpatch_parse-fix-possible-Null-pointer-dereferences.patch @@ -0,0 +1,93 @@ +From e8445c1e2cc185564ae76e01262813d2fab96c3c Mon Sep 17 00:00:00 2001 +From: Jin Yan +Date: Fri, 12 Mar 2021 16:45:12 +0800 +Subject: [PATCH 074/118] kpatch_parse: fix possible Null pointer dereferences + +Signed-off-by: Jin Yan +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_parse.c | 27 +++++++++++++++++++++++++++ + 1 file changed, 27 insertions(+) + +diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c +index 3df658d..2bf755e 100644 +--- a/src/kpatch_parse.c ++++ b/src/kpatch_parse.c +@@ -1,3 +1,8 @@ ++/******************************************************************************* ++ * 2021.10.08 - kpatch_parse: fix possible Null pointer dereferences ++ * Huawei Technologies Co., Ltd. ++*******************************************************************************/ ++ + #include + + #include "include/kpatch_log.h" +@@ -141,6 +146,10 @@ void init_ctypes(struct kp_file *f) + int i; + + f->ctype = malloc(f->nr_lines * sizeof(f->ctype[0])); ++ if (!f->ctype) { ++ kpfatal("Failed to allocate ctype for kp_file\n"); ++ } ++ + for (i = 0; i < f->nr_lines; i++) { + f->ctype[i] = parse_ctype(cline(f, i), true); + } +@@ -204,6 +213,9 @@ static void cblock_make_human_name(kpstr_t *hnm, kpstr_t *nm) + struct cblock * cblock_add(struct kp_file *f, int s, int e, kpstr_t *nm, int type, int globl) + { + struct cblock *blk = malloc(sizeof(*blk)); ++ if (!blk) { ++ kpfatal("Failed to allocate cblock\n"); ++ } + + if (nm->l && cblock_find_by_name(f, nm)) + kpfatal("duplicate cblock name '%.*s'", nm->l, nm->s); +@@ -365,6 +377,9 @@ static void init_attr_block(struct kp_file *f, int *i) + void cblock_split(struct cblock *b, int len) + { + struct cblock *blk = malloc(sizeof(*blk)); ++ if (!blk) { ++ kpfatal("Failed to allocate cblock when splitting it\n"); ++ } + + memset(blk, 0, sizeof(*blk)); + blk->start = b->start + len; +@@ -509,6 +524,10 @@ struct section_desc *find_section(char *name) + static struct section_desc *dup_section(struct section_desc *sect) + { + struct section_desc *s = malloc(sizeof(*s)); ++ if (!s) { ++ kpfatal("Failed to allocate duplicate section\n"); ++ } ++ + *s = *sect; + s->prev = NULL; + memset(&s->rbnm, 0, sizeof(s->rbnm)); +@@ -559,6 +578,10 @@ static struct section_desc *__parse_section(char *s) + } + + sect = malloc(sizeof(*sect)); ++ if (!sect) { ++ kpfatal("Failed to allocate section\n"); ++ } ++ + memset(sect, 0, sizeof(*sect)); + sect->name = sname; + +@@ -612,6 +635,10 @@ void init_sections(struct kp_file *f) + rb_insert_node(§ions_rbroot_byname, &predefined_sections[i].rbnm, section_name_cmp, (unsigned long)predefined_sections[i].name); + + f->section = malloc(f->nr_lines * sizeof(void *)); ++ if (!f->section) { ++ kpfatal("Failed to allocate section for kp_file\n"); ++ } ++ + f->section[0] = find_section(".text"); /* code can start w/o sectiong directive */ + for (i = 1; i < f->nr_lines; i++) { + sect = parse_section(f, i); +-- +2.27.0 + diff --git a/0075-gensrc-cc-elf-optimize-libcare-code-to-make-checker-.patch b/0075-gensrc-cc-elf-optimize-libcare-code-to-make-checker-.patch new file mode 100644 index 0000000..28bfd52 --- /dev/null +++ b/0075-gensrc-cc-elf-optimize-libcare-code-to-make-checker-.patch @@ -0,0 +1,489 @@ +From 2ce1f513affaa705d781275d8923bc165454e258 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Thu, 11 Mar 2021 22:53:14 +0800 +Subject: [PATCH 075/118] gensrc/cc/elf: optimize libcare code to make checker + happy + +i. Checker warning happens for these files, optimize it; +ii. Change filter function to make it simplier; + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/arch/aarch64/arch_parse.c | 9 +++++++-- + src/arch/aarch64/arch_ptrace.c | 12 +++++++---- + src/arch/x86/arch_parse.c | 7 +++++++ + src/arch/x86/arch_ptrace.c | 13 +++++++++--- + src/kpatch_cc.c | 33 +++++++++++++++--------------- + src/kpatch_elf.c | 11 +++++++++- + src/kpatch_gensrc.c | 37 +++++++++++++++++++++++++++------- + src/kpatch_parse.c | 7 +++++-- + 8 files changed, 94 insertions(+), 35 deletions(-) + +diff --git a/src/arch/aarch64/arch_parse.c b/src/arch/aarch64/arch_parse.c +index 84caf82..f91ef0c 100644 +--- a/src/arch/aarch64/arch_parse.c ++++ b/src/arch/aarch64/arch_parse.c +@@ -1,9 +1,12 @@ + /****************************************************************************** ++ * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.09.23 - arch/aarch64/arch_parse: improve VAR_CBLOCK start indentify +- * Huawei Technologies Co., Ltd. - 0.1.4-14 ++ * Huawei Technologies Co., Ltd. + * + * 2021.09.23 - arch/aarch64/arch_parse: modify is_variable_start function for gensrc in arm +- * Huawei Technologies Co., Ltd. - 0.1.4-10 ++ * Huawei Technologies Co., Ltd. + ******************************************************************************/ + + #include +@@ -19,6 +22,7 @@ int is_function_start(struct kp_file *f, int l, kpstr_t *nm) + int l0 = l, func = 0; + + kpstrset(nm, "", 0); ++ kpstrset(&attr, "", 0); + for (; l < f->nr_lines; l++) { + if (l != l0 && cline(f, l)[0] == '\0') + continue; +@@ -116,6 +120,7 @@ int is_variable_start(struct kp_file *f, int l, int *e, int *pglobl, kpstr_t *nm + nm2.s = NULL; + + kpstrset(nm, "", 0); ++ kpstrset(&attr, "", 0); + for ( ; cline(f, l); l++) { + + /* first verify that all the commands we met has the same symbol name... just to be safe! */ +diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c +index 70ef683..d4f6991 100644 +--- a/src/arch/aarch64/arch_ptrace.c ++++ b/src/arch/aarch64/arch_ptrace.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - remove deprecated code + * Huawei Technologies Co., Ltd. + ******************************************************************************/ +@@ -37,7 +40,8 @@ + int + kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) + { +- int ret, pid = 0; ++ int ret = 0; ++ int pid = 0; + struct kpatch_ptrace_ctx *pctx, *ptmp, *execve_pctx = NULL; + long rv; + +@@ -61,7 +65,7 @@ kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) + /* Send a message to our `execve` wrapper so it will continue + * execution + */ +- ret = send(proc->send_fd, &ret, sizeof(ret), 0); ++ ret = send(proc->send_fd, &ret, sizeof(int), 0); + if (ret < 0) { + kplogerror("send failed\n"); + return ret; +@@ -190,7 +194,6 @@ int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, + unsigned long *res) + { + struct user_regs_struct regs; +- + unsigned char syscall[] = { + 0x01, 0x00, 0x00, 0xd4, //0xd4000001 svc #0 = syscall + 0xa0, 0x00, 0x20, 0xd4, //0xd42000a0 brk #5 = int3 +@@ -217,13 +220,14 @@ int kpatch_arch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, + unsigned long *addr) + { + struct user_regs_struct regs; +- + unsigned char callrax[] = { + 0x00, 0x01, 0x3f, 0xd6, // blr x8 + 0xa0, 0x00, 0x20, 0xd4, // brk #5 + }; + int ret; ++ + kpdebug("Executing callrax %lx (pid %d)\n", *addr, pctx->pid); ++ memset(®s, 0, sizeof(struct user_regs_struct)); + regs.regs[8] = *addr; + + ret = kpatch_execute_remote(pctx, callrax, sizeof(callrax), ®s); +diff --git a/src/arch/x86/arch_parse.c b/src/arch/x86/arch_parse.c +index c51c49b..15cf9fe 100644 +--- a/src/arch/x86/arch_parse.c ++++ b/src/arch/x86/arch_parse.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code ++ * Huawei Technologies Co., Ltd. ++ ******************************************************************************/ ++ + #include + + #include "include/kpatch_log.h" +@@ -11,6 +16,7 @@ int is_function_start(struct kp_file *f, int l, kpstr_t *nm) + int l0 = l, func = 0; + + kpstrset(nm, "", 0); ++ kpstrset(&attr, "", 0); + for (; l < f->nr_lines; l++) { + if (l != l0 && cline(f, l)[0] == '\0') + continue; +@@ -77,6 +83,7 @@ int is_variable_start(struct kp_file *f, int l, int *e, int *pglobl, kpstr_t *nm + kpstr_t nm2, attr; + + kpstrset(nm, "", 0); ++ kpstrset(&attr, "", 0); + for ( ; cline(f, l); l++) { + + /* first verify that all the commands we met has the same symbol name... just to be safe! */ +diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c +index ef0f460..e9d4530 100644 +--- a/src/arch/x86/arch_ptrace.c ++++ b/src/arch/x86/arch_ptrace.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code ++ * Huawei Technologies Co., Ltd. ++ ******************************************************************************/ ++ + #include + #include + #include +@@ -32,7 +37,8 @@ + int + kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) + { +- int ret, pid = 0; ++ int ret = 0; ++ int pid = 0; + struct kpatch_ptrace_ctx *pctx, *ptmp, *execve_pctx = NULL; + long rv; + +@@ -56,7 +62,7 @@ kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) + /* Send a message to our `execve` wrapper so it will continue + * execution + */ +- ret = send(proc->send_fd, &ret, sizeof(ret), 0); ++ ret = send(proc->send_fd, &ret, sizeof(int), 0); + if (ret < 0) { + kplogerror("send failed\n"); + return ret; +@@ -192,6 +198,7 @@ int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, + }; + int ret; + ++ memset(®s, 0, sizeof(struct user_regs_struct)); + kpdebug("Executing syscall %d (pid %d)...\n", nr, pctx->pid); + regs.rax = (unsigned long)nr; + regs.rdi = arg1; +@@ -257,7 +264,6 @@ int kpatch_arch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, + unsigned long *addr) + { + struct user_regs_struct regs; +- + unsigned char callrax[] = { + 0xff, 0xd0, /* call *%rax */ + 0xcc, /* int3 */ +@@ -265,6 +271,7 @@ int kpatch_arch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, + int ret; + + kpdebug("Executing callrax %lx (pid %d)\n", *addr, pctx->pid); ++ memset(®s, 0, sizeof(struct user_regs_struct)); + regs.rax = *addr; + + ret = kpatch_execute_remote(pctx, callrax, sizeof(callrax), ®s); +diff --git a/src/kpatch_cc.c b/src/kpatch_cc.c +index 312c9e5..672038f 100644 +--- a/src/kpatch_cc.c ++++ b/src/kpatch_cc.c +@@ -1,3 +1,7 @@ ++/****************************************************************************** ++ * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code ++ * Huawei Technologies Co., Ltd. ++******************************************************************************/ + + #include + #include +@@ -247,7 +251,6 @@ static void init(int argc_, const char **argv_) + char *args; + int ninput = 0, i; + const char *realgccenv = "KPCCREAL"; +- static char pathbuf[PATH_MAX]; + + prog_name = argv_[0]; + +@@ -261,17 +264,7 @@ static void init(int argc_, const char **argv_) + + kpatch_path = getenv("KPATCH_PATH"); + if (kpatch_path == NULL) { +- strcpy(pathbuf, argv_[0]); +- dirname(pathbuf); +- strcat(pathbuf, "/kpatch_gensrc"); +- if (access(pathbuf, X_OK) != 0) { +- kpccfatal("can't find kpatch_gensrc at %s, define KPATCH_PATH\n", +- pathbuf); +- } +- +- dirname(pathbuf); +- +- kpatch_path = pathbuf; ++ kpccfatal("KPATCH_PATH is undefined\n"); + } + + kpatch_stage = getenv("KPATCH_STAGE"); +@@ -309,7 +302,7 @@ static void init(int argc_, const char **argv_) + if (args != NULL) { + nremove_args = split_args(remove_args, args); + +- qsort(remove_args, nremove_args, sizeof(*remove_args), ++ qsort(remove_args, nremove_args, sizeof(char *), + (int (*)(const void *, const void *))strcmp); + } + +@@ -440,6 +433,11 @@ static void init(int argc_, const char **argv_) + if ((action == COMPILE_SINGLE || action == GENERATE_ASSEMBLY_SINGLE) + && output_file == NULL && input[idxinput_file] != stdin_path) { + char *ofile = (char *)basename((char *)argv[idxinput_file]); ++ ++ if (ofile == NULL) { ++ fprintf(stderr, "ofile is null!\n"); ++ exit(EXIT_FAILURE); ++ } + ofile = strdup(ofile); + CHECK_ALLOC(ofile); + +@@ -545,6 +543,7 @@ static void fini(void) + + if (argv_allocated) { + free(argv); ++ argv = NULL; + argv_allocated = 1; + } + +@@ -573,7 +572,7 @@ static int modify_args(void) + continue; + + found = bsearch(argv[i], remove_args, nremove_args, +- sizeof (*remove_args), ++ sizeof (char *), + bsearch_strcmp); + + if (found != NULL) +@@ -916,8 +915,10 @@ passthrough_file: + + out: + for (j = 1; j < i; j++) { +- if (input_files[j]) ++ if (input_files[j]) { + free((void *)input_files[j]); ++ input_files[j] = NULL; ++ } + } + + return rv; +@@ -1092,7 +1093,7 @@ static int get_assembler_filename(char *aspath, const char *srcorobjpath) + rv = snprintf(aspath, PATH_MAX, "%s%s/%s%s.%s.s", + kpatch_asm_dir ?: "", + dname, kpatch_prefix, bname, kpatch_stage); +- if (rv == PATH_MAX) ++ if (rv >= PATH_MAX) + kpccfatal("%s: buffer overflow\n", __func__); + + if (kpatch_asm_dir != NULL) { +diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c +index 219a5ef..8447356 100644 +--- a/src/kpatch_elf.c ++++ b/src/kpatch_elf.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code + * Huawei Technologies Co., Ltd. + ******************************************************************************/ +@@ -776,7 +779,9 @@ int kpatch_resolve(struct object_file *o) + GElf_Ehdr *ehdr; + GElf_Shdr *shdr; + GElf_Sym *sym; +- int i, symidx, rv; ++ int i; ++ int rv; ++ int symidx = -1; + char *strsym; + + ehdr = (void *)o->kpfile.patch + o->kpfile.patch->kpatch_offset; +@@ -807,6 +812,10 @@ int kpatch_resolve(struct object_file *o) + kpdebug("section '%s' = 0x%lx\n", secname(ehdr, s), s->sh_addr); + } + ++ if (symidx == -1) { ++ kperr("Unexpected symidx!\n"); ++ return -1; ++ } + kpdebug("Resolving symbols for '%s'\n", o->name); + sym = (void *)ehdr + shdr[symidx].sh_offset; + strsym = (void *)ehdr + shdr[shdr[symidx].sh_link].sh_offset; +diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c +index 36ff24f..35e067e 100644 +--- a/src/kpatch_gensrc.c ++++ b/src/kpatch_gensrc.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.09.23 - kpatch_gensrc.c: support ignoring functions which we don't need + * Huawei Technologies Co., Ltd. + ******************************************************************************/ +@@ -43,7 +46,7 @@ static int nr_must_adapt_syms; + static int force_gotpcrel; + static int force_global; + +-static char* patch_func_file_name = "/etc/libcare/patch_func_names.conf"; ++static char* patch_func_file_name = "/etc/libcare.conf"; + + static int is_func_in_patch_func_file(FILE *fp, kpstr_t *sym) + { +@@ -64,7 +67,9 @@ static int is_func_in_patch_func_file(FILE *fp, kpstr_t *sym) + return 0; + } + +-static inline int in_syms_list(char *filename, kpstr_t *sym, const struct sym_desc *sym_arr, int nr_syms, int cblock_type) ++static inline int in_syms_list(const char *filename, kpstr_t *sym, ++ const struct sym_desc *sym_arr, ++ int nr_syms, int cblock_type) + { + int i, len, rv; + +@@ -145,11 +150,15 @@ void rename_add(struct kp_file *f, kpstr_t *src, kpstr_t *dst) + + if ((r2 = rename_find(f, src))) { + if (kpstrcmp(&r2->dst, dst)) +- kpfatal("Rename conflict %.*s -> %.*s and -> %.*s\n", src->l, src->s, r2->dst.l, r2->dst.s, dst->l, dst->s); ++ kpfatal("Rename conflict %.*s -> %.*s and -> %.*s\n", ++ src->l, src->s, r2->dst.l, r2->dst.s, dst->l, dst->s); + return; + } + + r = malloc(sizeof(*r)); ++ if (r == NULL) { ++ kpfatal("Failed to malloc rbtree!\n"); ++ } + r->src = *src; + r->dst = *dst; + rb_insert_node(&f->renames, &r->rb, rename_cmp, (unsigned long)src); +@@ -395,6 +404,10 @@ static void change_section(struct kp_file *fout, struct section_desc *sect, int + { + char *s; + ++ if (sect == NULL) { ++ kpfatal("Section description is NULL!\n"); ++ } ++ + if (sect->outname) + s = sect->outname; + else if (sect->type & SECTION_EXECUTABLE) +@@ -492,7 +505,8 @@ static inline int get_mov_const_reg(const char *s, char *regname) + static int get_possible_lineno_funcs(const char *s0, const char *s1) + { + int i, try = 0; +- char regname0[32], regname1[32]; ++ char regname0[32] = {0}; ++ char regname1[32] = {0}; + + if (ARRAY_SIZE(lineno_functions) > sizeof(try) * 8) + kpfatal("get_possible_lineno_funcs return value overflow"); +@@ -622,7 +636,7 @@ static int match_build_path(struct cblock *b0, int *p0, struct cblock *b1, int * + } + + /* this is a minor improvement to avoid function patching just because of code line numbers are screwed, but real function hasn't changed */ +-static int match_var_descriptor(struct cblock *b0, int *p0, struct cblock *b1, int *p1) ++static int match_var_descriptor(struct cblock *b0, int *p0, struct cblock *b1, const int *p1) + { + char *s0, *s1; + kpstr_t t0, t1; +@@ -677,7 +691,7 @@ static int match_var_datetime(struct cblock *b0, int *p0, struct cblock *b1, int + } + + /* this is a minor improvement to avoid function patching just because of code line numbers are screwed, but real function hasn't changed */ +-static int match_bug_on(struct cblock *b0, int *p0, struct cblock *b1, int *p1) ++static int match_bug_on(struct cblock *b0, int *p0, struct cblock *b1, const int *p1) + { + char *s0, *s1; + kpstr_t t00, t01, t10, t11, t20, t21, t30, t31, t40, t41, t50, t51, t60, t61; +@@ -715,6 +729,9 @@ static int match_bug_on(struct cblock *b0, int *p0, struct cblock *b1, int *p1) + * .popsection + */ + s0 = cline(b0->f, *p0); s1 = cline(b1->f, *p1); ++ if (csect(b0->f, *p0) == NULL || csect(b1->f, *p1) == NULL) { ++ kpfatal("Could not find vaild section!\n"); ++ } + if (strcmp(csect(b0->f, *p0)->name, "__bug_table") || strcmp(csect(b1->f, *p1)->name, "__bug_table")) + return 0; + if (!strncmp(s0, "2:\t.long 1b - 2b, ", 18) && !strncmp(s1, "2:\t.long 1b - 2b, ", 18)) +@@ -916,6 +933,9 @@ static void __name_add_kpatch_suffix(struct kp_file *f, kpstr_t *t, kpstr_t *bas + /* rename name to name.kpatch */ + tnew.l = basename->l + strlen(suffix) + 1; + tnew.s = malloc(tnew.l); ++ if (tnew.s == NULL) { ++ kpfatal("Failed to alloc tnew!\n"); ++ } + snprintf(tnew.s, tnew.l, "%.*s%s", basename->l, basename->s, suffix); + rename_add(f, t, &tnew); + kplog(LOG_DEBUG, "RENAME[%d]: %.*s -> %.*s\n", f->id, t->l, t->s, tnew.l, tnew.s); +@@ -1597,6 +1617,8 @@ int main(int argc, char **argv) + int err, ch, k = 0, dbgfilter = 0, dbgfilter_options = 0; + struct kp_file infile[2], outfile; + ++ memset(&outfile, 0, sizeof(struct kp_file)); ++ outfile.f = NULL; + while ((ch = getopt_long(argc, argv, "d:O:i:o:a:f", long_opts, 0)) != -1) { + switch (ch) { + case 'd': +@@ -1656,8 +1678,9 @@ int main(int argc, char **argv) + usage(); + } + } +- if (optind != argc) ++ if (optind != argc || outfile.f == NULL) { + usage(); ++ } + + if (dbgfilter) { + if (k < 1) +diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c +index 2bf755e..2f6fd7a 100644 +--- a/src/kpatch_parse.c ++++ b/src/kpatch_parse.c +@@ -1,4 +1,7 @@ + /******************************************************************************* ++ * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - kpatch_parse: fix possible Null pointer dereferences + * Huawei Technologies Co., Ltd. + *******************************************************************************/ +@@ -547,12 +550,12 @@ struct section_desc *csect(struct kp_file *f, int l) + + int is_data_sect(struct section_desc *sect) + { +- return !(sect->type & SECTION_EXECUTABLE); ++ return (sect == NULL) ? 1 : !(sect->type & SECTION_EXECUTABLE); + } + + int is_code_sect(struct section_desc *sect) + { +- return (sect->type & SECTION_EXECUTABLE); ++ return (sect == NULL) ? 0 : (sect->type & SECTION_EXECUTABLE); + } + + static struct section_desc *__parse_section(char *s) +-- +2.27.0 + diff --git a/0076-kpatch_parse-fix-wrong-return-in-is_data_sect.patch b/0076-kpatch_parse-fix-wrong-return-in-is_data_sect.patch new file mode 100644 index 0000000..3d2eed2 --- /dev/null +++ b/0076-kpatch_parse-fix-wrong-return-in-is_data_sect.patch @@ -0,0 +1,39 @@ +From a7819ceb9ff090411e47bd15afdc860bf5b3cc48 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Mon, 15 Mar 2021 09:21:55 +0800 +Subject: [PATCH 076/118] kpatch_parse: fix wrong return in is_data_sect + +It should return false/0 when the sect is NULL, Fix it. + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_parse.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c +index 2f6fd7a..8208642 100644 +--- a/src/kpatch_parse.c ++++ b/src/kpatch_parse.c +@@ -1,4 +1,7 @@ + /******************************************************************************* ++ * 2021.10.08 - kpatch_parse: fix wrong return in is_data_sec() ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code + * Huawei Technologies Co., Ltd. + * +@@ -550,7 +553,7 @@ struct section_desc *csect(struct kp_file *f, int l) + + int is_data_sect(struct section_desc *sect) + { +- return (sect == NULL) ? 1 : !(sect->type & SECTION_EXECUTABLE); ++ return (sect == NULL) ? 0 : !(sect->type & SECTION_EXECUTABLE); + } + + int is_code_sect(struct section_desc *sect) +-- +2.27.0 + diff --git a/0077-libcare-patch-make-export-libcare-env-variables.patch b/0077-libcare-patch-make-export-libcare-env-variables.patch new file mode 100644 index 0000000..d6c80a0 --- /dev/null +++ b/0077-libcare-patch-make-export-libcare-env-variables.patch @@ -0,0 +1,34 @@ +From ece0bca07ca10c1fb7fc78b24e0d200fa54e5e66 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Mon, 15 Mar 2021 14:34:42 +0800 +Subject: [PATCH 077/118] libcare-patch-make: export libcare env variables + +Export libcare env variables to make patch-make simpler. +Now we can just use one command to make a patch like this: +'libcare-patch-make --clean xxx.patch -i 0001' + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/libcare-patch-make | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/libcare-patch-make b/src/libcare-patch-make +index 3b757aa..3e5c7c6 100755 +--- a/src/libcare-patch-make ++++ b/src/libcare-patch-make +@@ -31,6 +31,9 @@ EOF + + prepare_env() { + KPATCH_PATH=$(dirname $0) ++ export KP_EXECVE_DEBUG=1; ++ export KPCC_DEBUG=1; ++ export KPATCH_PATH=$(dirname $0) + + if test ! -x "$KPATCH_PATH/kpatch_gensrc"; then + echo "kpatch tools are missing" >&2 +-- +2.27.0 + diff --git a/0078-storage-strip-fix-some-bad-code-problem.patch b/0078-storage-strip-fix-some-bad-code-problem.patch new file mode 100644 index 0000000..7f99570 --- /dev/null +++ b/0078-storage-strip-fix-some-bad-code-problem.patch @@ -0,0 +1,162 @@ +From 90831300bb25959ec8e1c1bbecd07d81486c40db Mon Sep 17 00:00:00 2001 +From: Bihong Yu +Date: Tue, 16 Mar 2021 16:21:51 +0800 +Subject: [PATCH 078/118] storage/strip: fix some bad code problem + +kpatch_storage.c/kpatch_strip.c: fix some bad code problem found by codedex. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_storage.c | 34 +++++++++++++++++++++++++--------- + src/kpatch_strip.c | 18 ++++++++++++++++-- + 2 files changed, 41 insertions(+), 11 deletions(-) + +diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c +index 9165cbf..45caa90 100644 +--- a/src/kpatch_storage.c ++++ b/src/kpatch_storage.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.10.08 - storage/strip: fix some bad code problem ++ * Huawei Technologies Co., Ltd. ++ ******************************************************************************/ ++ + #include + #include + #include +@@ -60,15 +65,18 @@ int storage_init(kpatch_storage_t *storage, + int patch_fd = -1; + struct stat stat = { .st_mode = 0 }; + +- if (fname != NULL) { +- patch_fd = open(fname, O_RDONLY | O_CLOEXEC); +- if (patch_fd < 0) +- goto out_err; +- +- if (fstat(patch_fd, &stat) < 0) +- goto out_close; ++ if (fname == NULL) { ++ kperr("storage path is not configured\n"); ++ return -1; + } + ++ patch_fd = open(fname, O_RDONLY | O_CLOEXEC); ++ if (patch_fd < 0) ++ goto out_err; ++ ++ if (fstat(patch_fd, &stat) < 0) ++ goto out_close; ++ + storage->patch_fd = patch_fd; + storage->is_patch_dir = S_ISDIR(stat.st_mode); + storage->path = NULL; +@@ -119,6 +127,7 @@ void storage_free(kpatch_storage_t *storage) + if (storage->is_patch_dir) + rb_destroy(&storage->tree, free_storage_patch_cb); + free(storage->path); ++ storage->path = NULL; + } + + static int +@@ -166,7 +175,8 @@ storage_open_patch(kpatch_storage_t *storage, + struct kpatch_storage_patch* patch) + { + char fname[96]; +- int i, rv; ++ int rv = PATCH_NOT_FOUND; ++ int i; + + for (i = 0; i < ARRAY_SIZE(pathtemplates); i++) { + sprintf(fname, pathtemplates[i], buildid); +@@ -206,7 +216,8 @@ storage_stat_patch(kpatch_storage_t *storage, + { + char fname[96]; + struct stat buf; +- int i, rv; ++ int rv = PATCH_NOT_FOUND; ++ int i; + + for (i = 0; i < ARRAY_SIZE(pathtemplates); i++) { + sprintf(fname, pathtemplates[i], buildid); +@@ -362,6 +373,11 @@ char *storage_get_description(kpatch_storage_t *storage, + + desc = malloc(alloc); + ++ if (desc == NULL) { ++ kperr("failed to malloc memory for desc\n"); ++ goto err_free; ++ } ++ + if (olddesc != NULL) { + memcpy(desc, olddesc, sz); + free(olddesc); +diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c +index f32dddd..9812d6e 100644 +--- a/src/kpatch_strip.c ++++ b/src/kpatch_strip.c +@@ -1,6 +1,10 @@ + /****************************************************************************** ++ * 2021.10.08 - storage/strip: fix some bad code problem ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - remove deprecated code + * Huawei Technologies Co., Ltd. ++ * + * 2021.09.23 - tls: add support for tls symbol + * Huawei Technologies Co., Ltd. + ******************************************************************************/ +@@ -31,7 +35,7 @@ + #define MODE_REL_FIXUP 4 + #define MODE_UNDO_LINK 5 + +-int need_section(char *name) ++int need_section(const char *name) + { + if (strstr(name, "kpatch")) + return 1; +@@ -44,7 +48,7 @@ int need_section(char *name) + return 0; + } + +-Elf *kpatch_open_elf(char *file, int create) ++Elf *kpatch_open_elf(const char *file, int create) + { + int fd; + Elf *elf; +@@ -53,8 +57,10 @@ Elf *kpatch_open_elf(char *file, int create) + if (fd == -1) + kpfatalerror("open"); + elf = elf_begin(fd, (create ? ELF_C_WRITE : ELF_C_RDWR), NULL); ++ close(fd); + if (!elf) + kpfatalerror("elf_begin"); ++ + return elf; + } + +@@ -140,6 +146,9 @@ static int kpatch_strip(Elf *elfin, Elf *elfout) + if (!gelf_getshdr(scnin, &shin)) + kpfatalerror("gelf_getshdr in"); + scnname = elf_strptr(elfin, shstridx, shin.sh_name); ++ if (!scnname) { ++ kpfatalerror("elf_strptr"); ++ } + shout = shin; + + if (off != -1ull) { +@@ -167,6 +176,11 @@ static int kpatch_strip(Elf *elfin, Elf *elfout) + if (!elf_flagscn(scnout, ELF_C_SET, ELF_F_DIRTY)) + kpfatalerror("elf_flagscn"); + } ++ ++ if (off == -1ull) { ++ kpfatalerror("off is equal to -1"); ++ } ++ + off = ALIGN(off, 8); + ehout.e_shoff = off; + +-- +2.27.0 + diff --git a/0079-ptrace-process-patch-fix-some-bad-code-problem.patch b/0079-ptrace-process-patch-fix-some-bad-code-problem.patch new file mode 100644 index 0000000..741a057 --- /dev/null +++ b/0079-ptrace-process-patch-fix-some-bad-code-problem.patch @@ -0,0 +1,269 @@ +From b61370de8022f4a82cda64ce09d2b4a46cd164d2 Mon Sep 17 00:00:00 2001 +From: Bihong Yu +Date: Wed, 17 Mar 2021 15:00:23 +0800 +Subject: [PATCH 079/118] ptrace/process/patch: fix some bad code problem + +kpatch_ptrace.c/kpatch_process.c/kpatch_patch.c: fix some bad code +problem found by code checker. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/arch/aarch64/arch_patch.c | 4 ++-- + src/arch/aarch64/arch_ptrace.c | 6 ++++-- + src/arch/x86/arch_patch.c | 9 +++++++-- + src/arch/x86/arch_ptrace.c | 6 ++++-- + src/include/kpatch_ptrace.h | 12 ++++++++---- + src/kpatch_patch.c | 12 ++++++++++++ + src/kpatch_process.c | 13 ++++++++----- + src/kpatch_ptrace.c | 9 +++++++-- + 8 files changed, 52 insertions(+), 19 deletions(-) + +diff --git a/src/arch/aarch64/arch_patch.c b/src/arch/aarch64/arch_patch.c +index 9102621..461e28c 100644 +--- a/src/arch/aarch64/arch_patch.c ++++ b/src/arch/aarch64/arch_patch.c +@@ -27,8 +27,8 @@ + * This flag is local, i.e. it is never stored to the + * patch applied to patient's memory. + */ +-int PATCH_APPLIED = (1 << 31); +-int HUNK_SIZE = 4; ++unsigned int PATCH_APPLIED = (1 << 31); ++unsigned int HUNK_SIZE = 4; + + int patch_apply_hunk(struct object_file *o, size_t nhunk) + { +diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c +index d4f6991..df89b7d 100644 +--- a/src/arch/aarch64/arch_ptrace.c ++++ b/src/arch/aarch64/arch_ptrace.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.08 - ptrace/process/patch: fix some bad code problem ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code + * Huawei Technologies Co., Ltd. + * +@@ -242,8 +245,7 @@ kpatch_arch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, + const unsigned char *code, + size_t codelen, + struct user_regs_struct *pregs, +- int (*func)(struct kpatch_ptrace_ctx *pctx, +- void *data), ++ int (*func)(struct kpatch_ptrace_ctx *pctx, const void *data), + void *data) + { + struct user_regs_struct orig_regs, regs; +diff --git a/src/arch/x86/arch_patch.c b/src/arch/x86/arch_patch.c +index a6e794d..91e041b 100644 +--- a/src/arch/x86/arch_patch.c ++++ b/src/arch/x86/arch_patch.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.10.08 - ptrace/process/patch: fix some bad code problem ++ * Huawei Technologies Co., Ltd. ++ ******************************************************************************/ ++ + #include + #include + #include +@@ -28,8 +33,8 @@ + * This flag is local, i.e. it is never stored to the + * patch applied to patient's memory. + */ +-int PATCH_APPLIED = (1 << 31); +-int HUNK_SIZE = 5; ++unsigned int PATCH_APPLIED = (1 << 31); ++unsigned int HUNK_SIZE = 5; + + int patch_apply_hunk(struct object_file *o, size_t nhunk) + { +diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c +index e9d4530..d8bb1f3 100644 +--- a/src/arch/x86/arch_ptrace.c ++++ b/src/arch/x86/arch_ptrace.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.08 - ptrace/process/patch: fix some bad code problem ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code + * Huawei Technologies Co., Ltd. + ******************************************************************************/ +@@ -286,8 +289,7 @@ kpatch_arch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, + const unsigned char *code, + size_t codelen, + struct user_regs_struct *pregs, +- int (*func)(struct kpatch_ptrace_ctx *pctx, +- void *data), ++ int (*func)(struct kpatch_ptrace_ctx *pctx, const void *data), + void *data) + { + struct user_regs_struct orig_regs, regs; +diff --git a/src/include/kpatch_ptrace.h b/src/include/kpatch_ptrace.h +index f0e83c0..003a4fa 100644 +--- a/src/include/kpatch_ptrace.h ++++ b/src/include/kpatch_ptrace.h +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.10.08 - ptrace/process/patch: fix some bad code problem ++ * Huawei Technologies Co., Ltd. ++ ******************************************************************************/ ++ + #ifndef __KPATCH_PTRACE_H__ + #define __KPATCH_PTRACE_H__ + +@@ -56,7 +61,7 @@ int kpatch_ptrace_handle_ld_linux(kpatch_process_t *proc, + unsigned long *pentry_point); + + +-int wait_for_stop(struct kpatch_ptrace_ctx *pctx, void *data); ++int wait_for_stop(struct kpatch_ptrace_ctx *pctx, const void *data); + int get_threadgroup_id(int tid); + int kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc); + int kpatch_ptrace_get_entry_point(struct kpatch_ptrace_ctx *pctx, +@@ -66,7 +71,7 @@ int kpatch_ptrace_get_entry_point(struct kpatch_ptrace_ctx *pctx, + having non-zero execute_until */ + int kpatch_ptrace_execute_until(kpatch_process_t *proc, + int timeout_msec, +- int flags); ++ unsigned int flags); + + int kpatch_execute_remote(struct kpatch_ptrace_ctx *pctx, + const unsigned char *code, +@@ -135,8 +140,7 @@ kpatch_arch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, + const unsigned char *code, + size_t codelen, + struct user_regs_struct *pregs, +- int (*func)(struct kpatch_ptrace_ctx *pctx, +- void *data), ++ int (*func)(struct kpatch_ptrace_ctx *pctx, const void *data), + void *data); + + int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index 8465162..0b25bcb 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.08 - ptrace/process/patch: fix some bad code problem ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code + * Huawei Technologies Co., Ltd. + * +@@ -577,6 +580,12 @@ object_find_applied_patch_info(struct object_file *o) + if (o->ninfo == nalloc) { + nalloc += 16; + o->info = realloc(o->info, nalloc * sizeof(tmpinfo)); ++ if (o->info == NULL) { ++ kperr("Failed to realloc o->info!\n"); ++ o->ninfo = 0; ++ ret = -1; ++ goto err; ++ } + } + + o->info[o->ninfo] = tmpinfo; +@@ -650,6 +659,9 @@ kpatch_should_unapply_patch(struct object_file *o, + return 1; + + bid = kpatch_get_buildid(o); ++ if (bid == NULL) { ++ return 0; ++ } + + for (i = 0; i < nbuildids; i++) { + if (!strcmp(bid, buildids[i]) || +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index a6fcd51..b248d03 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.08 - ptrace/process/patch: fix some bad code problem ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.07 - kpatch_object: combine funcitons with similar function + * Huawei Technologies Co., Ltd. + * +@@ -364,7 +367,7 @@ kpatch_object_dump(struct object_file *o) + } + + static unsigned int +-perms2prot(char *perms) ++perms2prot(const char *perms) + { + unsigned int prot = 0; + +@@ -739,8 +742,6 @@ kpatch_process_attach(kpatch_process_t *proc) + kpinfo(", %d", pids[i]); + kpinfo("\n"); + +- free(pids); +- + if (proc->ptrace.unwd == NULL) { + proc->ptrace.unwd = unw_create_addr_space(&_UPT_accessors, + __LITTLE_ENDIAN); +@@ -750,6 +751,7 @@ kpatch_process_attach(kpatch_process_t *proc) + } + } + ++ free(pids); + return 0; + + detach: +@@ -866,13 +868,14 @@ process_get_comm(kpatch_process_t *proc) + ret = readlink(path, realpath, sizeof(realpath)); + if (ret < 0) + return -1; +- realpath[ret] = '\0'; ++ realpath[ret - 1] = '\0'; + bn = basename(realpath); + strncpy(path, bn, sizeof(path)); + if ((c = strstr(path, " (deleted)"))) + *c = '\0'; +- strncpy(proc->comm, path, sizeof(proc->comm)); + ++ proc->comm[sizeof(proc->comm) - 1] = '\0'; ++ strncpy(proc->comm, path, sizeof(proc->comm) - 1); + if (!strncmp(proc->comm, "ld", 2)) { + proc->is_ld_linux = 1; + return process_get_comm_ld_linux(proc); +diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c +index d0bfbdd..2a1b8aa 100644 +--- a/src/kpatch_ptrace.c ++++ b/src/kpatch_ptrace.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.10.08 - ptrace/process/patch: fix some bad code problem ++ * Huawei Technologies Co., Ltd. ++ ******************************************************************************/ ++ + #include + #include + #include +@@ -215,7 +220,7 @@ struct breakpoint { + int + kpatch_ptrace_execute_until(kpatch_process_t *proc, + int timeout_msec, +- int flags) ++ unsigned int flags) + { + int ret = 0, errno_save; + char break_code[] = BREAK_INSN; +@@ -415,7 +420,7 @@ poke_back: + + int + wait_for_stop(struct kpatch_ptrace_ctx *pctx, +- void *data) ++ const void *data) + { + int ret, status = 0, pid = (int)(uintptr_t)data ?: pctx->pid; + kpdebug("wait_for_stop(pctx->pid=%d, pid=%d)\n", pctx->pid, pid); +-- +2.27.0 + diff --git a/0080-kpatch-rename-uname-to-buildid.patch b/0080-kpatch-rename-uname-to-buildid.patch new file mode 100644 index 0000000..988fdf0 --- /dev/null +++ b/0080-kpatch-rename-uname-to-buildid.patch @@ -0,0 +1,168 @@ +From b99f1f1bc7ee003e60da3ce364eed22d3287cecc Mon Sep 17 00:00:00 2001 +From: Bihong Yu +Date: Tue, 16 Mar 2021 16:52:29 +0800 +Subject: [PATCH 080/118] kpatch: rename uname to buildid + +The member of uname of struct kpatch_file and struct kpatch_query_info +is used as buildid, rename uname to buildid for easy understanding. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/include/kpatch_file.h | 12 ++++++++---- + src/include/kpatch_process.h | 5 ++++- + src/kpatch_make.c | 9 ++++++++- + src/kpatch_process.c | 7 +++++-- + src/kpatch_storage.c | 5 ++++- + 5 files changed, 29 insertions(+), 9 deletions(-) + +diff --git a/src/include/kpatch_file.h b/src/include/kpatch_file.h +index e307d0c..963d06d 100644 +--- a/src/include/kpatch_file.h ++++ b/src/include/kpatch_file.h +@@ -1,6 +1,9 @@ + /****************************************************************************** ++ * 2021.10.11 - kpatch: rename uname to buildid ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.09.23 - libcare-ctl: introduce patch-id +- * Huawei Technologies Co., Ltd. - 0.1.4-12 ++ * Huawei Technologies Co., Ltd. + ******************************************************************************/ + + #ifndef __KPATCH_FILE_H__ +@@ -97,7 +100,7 @@ typedef int (*kpatch_undo_patch)(struct kpatch_data *); + + #define KPATCH_FILE_MAGIC1 "KPATCH1" + #define KPATCH_MAX_NR_ENTRIES 16 +-#define KPATCH_UNAME_LEN 256 ++#define KPATCH_BUILDID_LEN 40 + + #define KPATCH_DEBUG_FLAG 0 + #define KPATCH_NOFREEZE_FLAG 1 /* this flag is ignored, use safety method insted */ +@@ -123,7 +126,8 @@ struct kpatch_file { + unsigned char safety_method; + char pad[6]; + char modulename[64]; /* "vmlinux" or module name */ +- char uname[KPATCH_UNAME_LEN]; /* /proc/version of the kernel */ ++ char buildid[KPATCH_BUILDID_LEN + 1]; /* patch buildid */ ++ char pad1[23]; + + uint64_t build_time; /* build time */ + uint32_t csum; /* checksum of the whole kpatch */ +@@ -221,7 +225,7 @@ struct kpatch_query_info { + #define KPATCH_STATE_APPLIED 1 /* Patch is applied */ + uint32_t state; + +- char uname[KPATCH_UNAME_LEN]; ++ char buildid[KPATCH_BUILDID_LEN + 1]; /* patch build id */ + char description[512]; + + uint64_t build_time; +diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h +index ea5aa27..2c75102 100644 +--- a/src/include/kpatch_process.h ++++ b/src/include/kpatch_process.h +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - kpatch: rename uname to buildid ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.07 - kpatch_object: combine funcitons with similar function + * Huawei Technologies Co., Ltd. + * +@@ -80,7 +83,7 @@ struct object_file { + struct list_head vma; + + /* Object's Build-ID */ +- char buildid[41]; ++ char buildid[KPATCH_BUILDID_LEN + 1]; + + /* Patch information */ + struct kpatch_info *info; +diff --git a/src/kpatch_make.c b/src/kpatch_make.c +index ceadd1c..044dee7 100644 +--- a/src/kpatch_make.c ++++ b/src/kpatch_make.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - kpatch: rename uname to buildid ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.07 - process: add some checks before patching + * Huawei Technologies Co., Ltd. + * +@@ -43,7 +46,7 @@ int make_file(int fdo, void *buf1, off_t size, const char *buildid, const char * + + memcpy(khdr.magic, KPATCH_FILE_MAGIC1, sizeof(khdr.magic)); + strncpy(khdr.id, patch_id, sizeof(khdr.id)); +- strncpy(khdr.uname, buildid, sizeof(khdr.uname)); ++ strncpy(khdr.buildid, buildid, sizeof(khdr.buildid)); + khdr.build_time = (uint64_t)time(NULL); + khdr.csum = 0; /* FIXME */ + khdr.nr_reloc = 0; +@@ -105,6 +108,10 @@ int main(int argc, char **argv) + if (buildid == NULL || patch_id == NULL || *patch_id == '\0') + usage(); + ++ if (strlen(buildid) != KPATCH_BUILDID_LEN) { ++ xerror("Invalid build id: %s", buildid); ++ } ++ + fd1 = open(argv[optind], O_RDONLY); + if (fd1 == -1) + xerror("Can't open 1st input file '%s'", argv[optind]); +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index b248d03..1b9107d 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - kpatch: rename uname to buildid ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - ptrace/process/patch: fix some bad code problem + * Huawei Technologies Co., Ltd. + * +@@ -196,7 +199,7 @@ process_get_object_type(kpatch_process_t *proc, + struct kpatch_file *pkpfile = (struct kpatch_file *)buf; + + if (!strcmp(pkpfile->magic, KPATCH_FILE_MAGIC1)) { +- sprintf(name, "[kpatch-%s]", pkpfile->uname); ++ sprintf(name, "[kpatch-%s]", pkpfile->buildid); + return type; + } + } +@@ -418,7 +421,7 @@ kpatch_process_associate_patches(kpatch_process_t *proc, const char *patch_id) + + bid = kpatch_get_buildid(o); + if (bid == NULL || +- strcmp(bid, objpatch->kpfile.patch->uname)) ++ strcmp(bid, objpatch->kpfile.patch->buildid)) + continue; + + if (kpatch_object_add_applied_patch(o, objpatch) < 0) +diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c +index 45caa90..7a3a3ed 100644 +--- a/src/kpatch_storage.c ++++ b/src/kpatch_storage.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - kpatch: rename uname to buildid ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - storage/strip: fix some bad code problem + * Huawei Technologies Co., Ltd. + ******************************************************************************/ +@@ -95,7 +98,7 @@ int storage_init(kpatch_storage_t *storage, + kpatch_close_file(&storage->patch.kpfile); + goto out_close; + } +- strcpy(storage->patch.buildid, storage->patch.kpfile.patch->uname); ++ strcpy(storage->patch.buildid, storage->patch.kpfile.patch->buildid); + } + + storage->path = strdup(fname); +-- +2.27.0 + diff --git a/0081-kpatch-clear-code-checker-warnings.patch b/0081-kpatch-clear-code-checker-warnings.patch new file mode 100644 index 0000000..71e64cb --- /dev/null +++ b/0081-kpatch-clear-code-checker-warnings.patch @@ -0,0 +1,268 @@ +From 0da7eb8f2c96653ad3290c481f76d6218ab66bbb Mon Sep 17 00:00:00 2001 +From: Hao Wang +Date: Thu, 18 Mar 2021 19:40:37 +0800 +Subject: [PATCH 081/118] kpatch: clear code checker warnings + +clear code checker warnings for: + src/kpatch_make.c + src/kpatch_io.c + src/include/kpatch_io.h + +Signed-off-by: Hao Wang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/Makefile | 2 +- + src/include/kpatch_io.h | 9 ++++- + src/kpatch_io.c | 9 ++++- + src/kpatch_make.c | 88 +++++++++++++++++++++++++++-------------- + 4 files changed, 73 insertions(+), 35 deletions(-) + +diff --git a/src/Makefile b/src/Makefile +index 9071be4..464874f 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -40,7 +40,7 @@ all: $(TARGETS) + .SUFFIXES: + + kpatch_gensrc: kpatch_gensrc.o kpatch_dbgfilter.o kpatch_parse.o kpatch_io.o rbtree.o kpatch_log.o arch_parse.o +-kpatch_make: kpatch_make.o ++kpatch_make: kpatch_make.o kpatch_log.o + + LIBUNWIND_LIBS := $(shell pkg-config --libs libunwind libunwind-ptrace) + +diff --git a/src/include/kpatch_io.h b/src/include/kpatch_io.h +index 6d06fb3..7936c89 100644 +--- a/src/include/kpatch_io.h ++++ b/src/include/kpatch_io.h +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.10.11 - kpatch: clear code checker warnings ++ * Huawei Technologies Co., Ltd. ++ ******************************************************************************/ ++ + #ifndef __KP_IO_H__ + #define __KP_IO_H__ + +@@ -26,8 +31,8 @@ struct kp_file { + struct rb_root renames; + }; + +-int read_file(struct kp_file *f, char *fname); +-int create_file(struct kp_file *f, char *fname); ++int read_file(struct kp_file *f, const char *fname); ++int create_file(struct kp_file *f, const char *fname); + void close_file(struct kp_file *f); + void *kp_realloc(void *p, int oldsz, int newsz); + +diff --git a/src/kpatch_io.c b/src/kpatch_io.c +index 7bdc298..66d1fcf 100644 +--- a/src/kpatch_io.c ++++ b/src/kpatch_io.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.10.11 - kpatch: clear code checker warnings ++ * Huawei Technologies Co., Ltd. ++ ******************************************************************************/ ++ + #include + #include + #include +@@ -25,7 +30,7 @@ void *kp_realloc(void *p, int oldsz, int newsz) + return p2; + } + +-int read_file(struct kp_file *file, char *fname) ++int read_file(struct kp_file *file, const char *fname) + { + int sz = 64; + char buf[BUFSIZE]; +@@ -65,7 +70,7 @@ int read_file(struct kp_file *file, char *fname) + return 0; + } + +-int create_file(struct kp_file *file, char *fname) ++int create_file(struct kp_file *file, const char *fname) + { + if (!strcmp(fname, "-")) { + file->f = stdout; +diff --git a/src/kpatch_make.c b/src/kpatch_make.c +index 044dee7..348e979 100644 +--- a/src/kpatch_make.c ++++ b/src/kpatch_make.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - kpatch: clear code checker warnings ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.11 - kpatch: rename uname to buildid + * Huawei Technologies Co., Ltd. + * +@@ -20,24 +23,15 @@ + #include + #include + ++#include "include/kpatch_log.h" + #include "include/kpatch_file.h" + + #define ALIGN(x, align) ((x + align - 1) & (~(align - 1))) + + static int verbose; + +-static void xerror(const char *fmt, ...) +-{ +- va_list va; +- +- va_start(va, fmt); +- vfprintf(stderr, fmt, va); +- va_end(va); +- +- exit(1); +-} +- +-int make_file(int fdo, void *buf1, off_t size, const char *buildid, const char *patch_id) ++int make_file(int fdo, const void *buf, off_t size, ++ const char *buildid, const char *patch_id) + { + int res; + struct kpatch_file khdr; +@@ -45,10 +39,10 @@ int make_file(int fdo, void *buf1, off_t size, const char *buildid, const char * + memset(&khdr, 0, sizeof(khdr)); + + memcpy(khdr.magic, KPATCH_FILE_MAGIC1, sizeof(khdr.magic)); +- strncpy(khdr.id, patch_id, sizeof(khdr.id)); +- strncpy(khdr.buildid, buildid, sizeof(khdr.buildid)); ++ strncpy(khdr.id, patch_id, sizeof(khdr.id) - 1); ++ strncpy(khdr.buildid, buildid, sizeof(khdr.buildid) - 1); + khdr.build_time = (uint64_t)time(NULL); +- khdr.csum = 0; /* FIXME */ ++ khdr.csum = 0; + khdr.nr_reloc = 0; + + khdr.rel_offset = sizeof(khdr); +@@ -57,17 +51,20 @@ int make_file(int fdo, void *buf1, off_t size, const char *buildid, const char * + khdr.total_size = khdr.kpatch_offset + size; + + res = write(fdo, &khdr, sizeof(khdr)); +- res += write(fdo, buf1, size); ++ res += write(fdo, buf, size); + +- if (res != sizeof(khdr) + size) +- xerror("write error"); ++ if (res != sizeof(khdr) + size) { ++ kplogerror("write error\n"); ++ return -1; ++ } + + return 0; + } + + static void usage(void) + { +- printf("Usage: kpatch_make [-d] -n [-v ] -e [-o ] -i [input2]\n"); ++ printf("Usage: kpatch_make [-d] -n [-v ] -e " ++ "[-o ] -i [input2]\n"); + printf(" -b buildid = target buildid for patch\n"); + printf(" -d debug (verbose)\n"); + printf(" -i unique patch id\n"); +@@ -80,11 +77,15 @@ static void usage(void) + + int main(int argc, char **argv) + { ++ int ret = -1; + int opt; +- int fd1, fdo; ++ int fd1; ++ int fdo = 1; + void *buf; + struct stat st; +- char *buildid = NULL, *outputname = NULL, *patch_id = NULL; ++ const char *buildid = NULL; ++ const char *outputname = NULL; ++ const char *patch_id = NULL; + + while ((opt = getopt(argc, argv, "db:o:i:v:s:")) != -1) { + switch (opt) { +@@ -92,12 +93,24 @@ int main(int argc, char **argv) + verbose = 1; + break; + case 'b': ++ if (buildid) { ++ kplogerror("duplicate inputted buildid\n"); ++ return -1; ++ } + buildid = strdup(optarg); + break; + case 'o': ++ if (outputname) { ++ kplogerror("duplicate inputted outputname\n"); ++ return -1; ++ } + outputname = strdup(optarg); + break; + case 'i': ++ if (patch_id) { ++ kplogerror("duplicate inputted patch_id\n"); ++ return -1; ++ } + patch_id = strdup(optarg); + break; + default: /* '?' */ +@@ -105,29 +118,44 @@ int main(int argc, char **argv) + } + } + ++ if (verbose) ++ log_level = LOG_DEBUG; ++ + if (buildid == NULL || patch_id == NULL || *patch_id == '\0') + usage(); + + if (strlen(buildid) != KPATCH_BUILDID_LEN) { +- xerror("Invalid build id: %s", buildid); ++ kplogerror("Invalid build id: %s", buildid); + } + + fd1 = open(argv[optind], O_RDONLY); +- if (fd1 == -1) +- xerror("Can't open 1st input file '%s'", argv[optind]); +- if (fstat(fd1, &st) == -1) +- xerror("Can't stat file1"); ++ if (fd1 == -1) { ++ kplogerror("Can't open 1st input file '%s'\n", argv[optind]); ++ goto cleanup; ++ } ++ ++ if (fstat(fd1, &st) == -1) { ++ kplogerror("Can't stat file1\n"); ++ goto cleanup; ++ } + buf = mmap(NULL, st.st_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd1, 0); + if (buf == MAP_FAILED) +- xerror("mmap error %d", errno); ++ kplogerror("mmap error %d", errno); + close(fd1); + + fdo = 1; + if (outputname) { + fdo = open(outputname, O_CREAT | O_TRUNC | O_WRONLY, 0660); +- if (fdo == -1) +- xerror("Can't open output file '%s'", outputname); ++ if (fdo == -1) { ++ kplogerror("Can't open output file '%s'\n", outputname); ++ goto cleanup; ++ } + } ++ ret = make_file(fdo, buf, st.st_size, buildid, patch_id); + +- return make_file(fdo, buf, st.st_size, buildid, patch_id); ++cleanup: ++ close(fdo); ++ munmap(buf, st.st_size); ++ close(fd1); ++ return ret; + } +-- +2.27.0 + diff --git a/0082-kpatch_strip-revert-close-fd-in-kpatch_open_elf.patch b/0082-kpatch_strip-revert-close-fd-in-kpatch_open_elf.patch new file mode 100644 index 0000000..c15a89d --- /dev/null +++ b/0082-kpatch_strip-revert-close-fd-in-kpatch_open_elf.patch @@ -0,0 +1,40 @@ +From f7ff401e8e9722384329e099b134449f74909406 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Fri, 19 Mar 2021 16:08:10 +0800 +Subject: [PATCH 082/118] kpatch_strip: revert close fd in kpatch_open_elf + +We should not close fd until we finish elf reading which +results in patch making failure. +Just revert that patch to fix that. + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_strip.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c +index 9812d6e..a8adea8 100644 +--- a/src/kpatch_strip.c ++++ b/src/kpatch_strip.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - kpatch_strip: revert close fd ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - storage/strip: fix some bad code problem + * Huawei Technologies Co., Ltd. + * +@@ -57,7 +60,6 @@ Elf *kpatch_open_elf(const char *file, int create) + if (fd == -1) + kpfatalerror("open"); + elf = elf_begin(fd, (create ? ELF_C_WRITE : ELF_C_RDWR), NULL); +- close(fd); + if (!elf) + kpfatalerror("elf_begin"); + +-- +2.27.0 + diff --git a/0083-kpatch-fix-code-checker-warning.patch b/0083-kpatch-fix-code-checker-warning.patch new file mode 100644 index 0000000..f703ea3 --- /dev/null +++ b/0083-kpatch-fix-code-checker-warning.patch @@ -0,0 +1,222 @@ +From 550370c4c0316c2ef0a5fc977999f58e830fef9f Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Fri, 19 Mar 2021 17:36:14 +0800 +Subject: [PATCH 083/118] kpatch: fix code checker warning + +clear code checker warning for: + src/arch/x86/arch_ptrace.c + src/include/kpatch_process.h + src/kpatch_cc.c + src/kpatch_elf.c + src/kpatch_gensrc.c + src/kpatch_parse.c + src/kpatch_process.c + src/kpatch_storage.c + src/kpatch_strip.c + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/arch/x86/arch_ptrace.c | 5 ++++- + src/include/kpatch_process.h | 4 +++- + src/kpatch_cc.c | 4 ++++ + src/kpatch_gensrc.c | 7 +++++-- + src/kpatch_parse.c | 9 ++++++--- + src/kpatch_process.c | 10 +++------- + src/kpatch_storage.c | 4 ++++ + src/kpatch_strip.c | 4 ++++ + 8 files changed, 33 insertions(+), 14 deletions(-) + +diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c +index d8bb1f3..b8e761f 100644 +--- a/src/arch/x86/arch_ptrace.c ++++ b/src/arch/x86/arch_ptrace.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - kpatch: fix code checker warning ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - ptrace/process/patch: fix some bad code problem + * Huawei Technologies Co., Ltd. + * +@@ -290,7 +293,7 @@ kpatch_arch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, + size_t codelen, + struct user_regs_struct *pregs, + int (*func)(struct kpatch_ptrace_ctx *pctx, const void *data), +- void *data) ++ const void *data) + { + struct user_regs_struct orig_regs, regs; + unsigned char orig_code[codelen]; +diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h +index 2c75102..7193430 100644 +--- a/src/include/kpatch_process.h ++++ b/src/include/kpatch_process.h +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - kpatch: fix code checker warning ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.11 - kpatch: rename uname to buildid + * Huawei Technologies Co., Ltd. + * +@@ -236,7 +239,6 @@ struct vm_hole *next_hole(struct vm_hole *hole, struct list_head *head); + struct vm_hole *prev_hole(struct vm_hole *hole, struct list_head *head); + unsigned long hole_size(struct vm_hole *hole); + +-unsigned long random_from_range(unsigned long min, unsigned long max); + unsigned long object_find_patch_region(struct object_file *obj, + size_t memsize, + struct vm_hole **hole); +diff --git a/src/kpatch_cc.c b/src/kpatch_cc.c +index 672038f..7db8a36 100644 +--- a/src/kpatch_cc.c ++++ b/src/kpatch_cc.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - kpatch: fix code checker warning ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code + * Huawei Technologies Co., Ltd. + ******************************************************************************/ +@@ -549,6 +552,7 @@ static void fini(void) + + if (output_file_allocated) { + free((void *)output_file); ++ output_file = NULL; + output_file_allocated = 0; + } + } +diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c +index 35e067e..cdee133 100644 +--- a/src/kpatch_gensrc.c ++++ b/src/kpatch_gensrc.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - kpatch: fix code checker warning ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code + * Huawei Technologies Co., Ltd. + * +@@ -636,7 +639,7 @@ static int match_build_path(struct cblock *b0, int *p0, struct cblock *b1, int * + } + + /* this is a minor improvement to avoid function patching just because of code line numbers are screwed, but real function hasn't changed */ +-static int match_var_descriptor(struct cblock *b0, int *p0, struct cblock *b1, const int *p1) ++static int match_var_descriptor(struct cblock *b0, const int *p0, struct cblock *b1, const int *p1) + { + char *s0, *s1; + kpstr_t t0, t1; +@@ -691,7 +694,7 @@ static int match_var_datetime(struct cblock *b0, int *p0, struct cblock *b1, int + } + + /* this is a minor improvement to avoid function patching just because of code line numbers are screwed, but real function hasn't changed */ +-static int match_bug_on(struct cblock *b0, int *p0, struct cblock *b1, const int *p1) ++static int match_bug_on(struct cblock *b0, const int *p0, struct cblock *b1, const int *p1) + { + char *s0, *s1; + kpstr_t t00, t01, t10, t11, t20, t21, t30, t31, t40, t41, t50, t51, t60, t61; +diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c +index 8208642..023246f 100644 +--- a/src/kpatch_parse.c ++++ b/src/kpatch_parse.c +@@ -1,4 +1,7 @@ +-/******************************************************************************* ++/****************************************************************************** ++ * 2021.10.11 - kpatch: fix code checker warning ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - kpatch_parse: fix wrong return in is_data_sec() + * Huawei Technologies Co., Ltd. + * +@@ -7,7 +10,7 @@ + * + * 2021.10.08 - kpatch_parse: fix possible Null pointer dereferences + * Huawei Technologies Co., Ltd. +-*******************************************************************************/ ++******************************************************************************/ + + #include + +@@ -530,7 +533,7 @@ struct section_desc *find_section(char *name) + static struct section_desc *dup_section(struct section_desc *sect) + { + struct section_desc *s = malloc(sizeof(*s)); +- if (!s) { ++ if (!s || !sect) { + kpfatal("Failed to allocate duplicate section\n"); + } + +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index 1b9107d..64d9f38 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - kpatch: fix code checker warning ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.11 - kpatch: rename uname to buildid + * Huawei Technologies Co., Ltd. + * +@@ -1028,13 +1031,6 @@ hole_size(struct vm_hole *hole) + return hole->end - hole->start; + } + +-unsigned long +-random_from_range(unsigned long min, unsigned long max) +-{ +- /* TODO this is not uniform nor safe */ +- return min + random() % (max - min); +-} +- + int + kpatch_object_allocate_patch(struct object_file *o, + size_t sz) +diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c +index 7a3a3ed..f66c723 100644 +--- a/src/kpatch_storage.c ++++ b/src/kpatch_storage.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - kpatch: fix code checker warning ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.11 - kpatch: rename uname to buildid + * Huawei Technologies Co., Ltd. + * +@@ -378,6 +381,7 @@ char *storage_get_description(kpatch_storage_t *storage, + + if (desc == NULL) { + kperr("failed to malloc memory for desc\n"); ++ free(olddesc); + goto err_free; + } + +diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c +index a8adea8..e59ce7d 100644 +--- a/src/kpatch_strip.c ++++ b/src/kpatch_strip.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - kpatch: fix code checker warning ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.11 - kpatch_strip: revert close fd + * Huawei Technologies Co., Ltd. + * +@@ -541,6 +544,7 @@ kpatch_rel_offset_to_relative(kpatch_objinfo *patch, + GElf_Shdr sh_patch; + int i; + ++ memset(&sh_patch, 0, sizeof(GElf_Shdr)); + kpatch_objinfo_getshdr(patch, sh_rel->sh_info, + &sh_patch); + +-- +2.27.0 + diff --git a/0084-kpatch_ptrace-fix-x86-compile-failure.patch b/0084-kpatch_ptrace-fix-x86-compile-failure.patch new file mode 100644 index 0000000..a84e9cc --- /dev/null +++ b/0084-kpatch_ptrace-fix-x86-compile-failure.patch @@ -0,0 +1,61 @@ +From f2747f6fd9ae8b9ff21d9b41645f294be87e3972 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Mon, 22 Mar 2021 10:15:17 +0800 +Subject: [PATCH 084/118] kpatch_ptrace: fix x86 compile failure + +Commit(38c0b14df1023cb19) introduce compile failure in x86, fix it. + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/arch/aarch64/arch_ptrace.c | 5 ++++- + src/include/kpatch_ptrace.h | 5 ++++- + 2 files changed, 8 insertions(+), 2 deletions(-) + +diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c +index df89b7d..3ff5794 100644 +--- a/src/arch/aarch64/arch_ptrace.c ++++ b/src/arch/aarch64/arch_ptrace.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - kpatch_ptrace: fix x86 compile warning ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - ptrace/process/patch: fix some bad code problem + * Huawei Technologies Co., Ltd. + * +@@ -246,7 +249,7 @@ kpatch_arch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, + size_t codelen, + struct user_regs_struct *pregs, + int (*func)(struct kpatch_ptrace_ctx *pctx, const void *data), +- void *data) ++ const void *data) + { + struct user_regs_struct orig_regs, regs; + struct iovec orig_regs_iov, regs_iov; +diff --git a/src/include/kpatch_ptrace.h b/src/include/kpatch_ptrace.h +index 003a4fa..fbd9ce5 100644 +--- a/src/include/kpatch_ptrace.h ++++ b/src/include/kpatch_ptrace.h +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - kpatch_ptrace: fix x86 compile warning ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - ptrace/process/patch: fix some bad code problem + * Huawei Technologies Co., Ltd. + ******************************************************************************/ +@@ -141,7 +144,7 @@ kpatch_arch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, + size_t codelen, + struct user_regs_struct *pregs, + int (*func)(struct kpatch_ptrace_ctx *pctx, const void *data), +- void *data); ++ const void *data); + + int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, + unsigned long arg1, unsigned long arg2, unsigned long arg3, +-- +2.27.0 + diff --git a/0085-return-make-every-return-properly-other-than-direct-.patch b/0085-return-make-every-return-properly-other-than-direct-.patch new file mode 100644 index 0000000..a9233ce --- /dev/null +++ b/0085-return-make-every-return-properly-other-than-direct-.patch @@ -0,0 +1,1111 @@ +From 5ddf4e9c9caff0746ae9ee76722d1b007b3ce270 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Mon, 22 Mar 2021 12:05:24 +0800 +Subject: [PATCH 085/118] return: make every return properly other than + direct-exit + +i. kpfatalerror will exit(FAILURE) directly which breaks the workflow, +we should take every return properly and deprecate it and take +kperr() instead. +ii. throw fd out from kpatch_open_elf in order to fd resource cleanup + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/arch/aarch64/arch_elf.c | 12 +- + src/arch/aarch64/arch_strip.c | 2 +- + src/arch/x86/arch_elf.c | 12 +- + src/arch/x86/arch_strip.c | 20 +- + src/kpatch_elf.c | 23 +- + src/kpatch_elf_objinfo.c | 7 +- + src/kpatch_strip.c | 520 ++++++++++++++++++++++------------ + 7 files changed, 394 insertions(+), 202 deletions(-) + +diff --git a/src/arch/aarch64/arch_elf.c b/src/arch/aarch64/arch_elf.c +index eccf0b6..73d0232 100644 +--- a/src/arch/aarch64/arch_elf.c ++++ b/src/arch/aarch64/arch_elf.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - return: make every return properly other than direct-exit ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code + * Huawei Technologies Co., Ltd. + * +@@ -200,9 +203,10 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) + void *loc, *loc2; + + if (r->r_offset < 0 || r->r_offset >= tshdr->sh_size) { +- kpfatalerror("Relocation offset for section '%s'" +- " is at 0x%lx beyond the section size 0x%lx\n", +- scnname, r->r_offset, tshdr->sh_size); ++ kperr("Relocation offset for section '%s'" ++ " is at 0x%lx beyond the section size 0x%lx\n", ++ scnname, r->r_offset, tshdr->sh_size); ++ return -1; + } + + /* Location in our address space */ +@@ -243,7 +247,7 @@ unsigned long kpatch_arch_add_jmp_entry(struct object_file *o, unsigned long add + int e; + + if (o->jmp_table == NULL) { +- kpfatalerror("JMP TABLE not found\n"); ++ kperr("JMP TABLE not found\n"); + return 0; + } + +diff --git a/src/arch/aarch64/arch_strip.c b/src/arch/aarch64/arch_strip.c +index 5ec317d..561dd45 100644 +--- a/src/arch/aarch64/arch_strip.c ++++ b/src/arch/aarch64/arch_strip.c +@@ -101,7 +101,7 @@ kpatch_arch_fixup_rela_update_tls(kpatch_objinfo *origbin, + case R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC: + break; + default: +- kpfatalerror("non-supported TLS model\n"); ++ kperr("non-supported TLS model\n"); + return -1; + } + +diff --git a/src/arch/x86/arch_elf.c b/src/arch/x86/arch_elf.c +index 3e6f1ad..265fd37 100644 +--- a/src/arch/x86/arch_elf.c ++++ b/src/arch/x86/arch_elf.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - return: make every return properly other than direct-exit ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code + * Huawei Technologies Co., Ltd. + ******************************************************************************/ +@@ -54,9 +57,10 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) + void *loc, *loc2; + + if (r->r_offset < 0 || r->r_offset >= tshdr->sh_size) { +- kpfatalerror("Relocation offset for section '%s'" +- " is at 0x%lx beyond the section size 0x%lx\n", +- scnname, r->r_offset, tshdr->sh_size); ++ kperr("Relocation offset for section '%s'" ++ " is at 0x%lx beyond the section size 0x%lx\n", ++ scnname, r->r_offset, tshdr->sh_size); ++ return -1; + } + + /* Location in our address space */ +@@ -123,7 +127,7 @@ unsigned long kpatch_arch_add_jmp_entry(struct object_file *o, unsigned long add + int e; + + if (o->jmp_table == NULL) { +- kpfatalerror("JMP TABLE not found\n"); ++ kperr("JMP TABLE not found\n"); + return 0; + } + +diff --git a/src/arch/x86/arch_strip.c b/src/arch/x86/arch_strip.c +index ff1e212..3c0bbf5 100644 +--- a/src/arch/x86/arch_strip.c ++++ b/src/arch/x86/arch_strip.c +@@ -62,11 +62,11 @@ + */ + int + kpatch_arch_fixup_rela_update_tls(kpatch_objinfo *origbin, +- kpatch_objinfo *patch, +- GElf_Rela *rela, +- GElf_Sym *sym, +- GElf_Shdr *sh_text, +- unsigned char *text) ++ kpatch_objinfo *patch, ++ GElf_Rela *rela, ++ GElf_Sym *sym, ++ GElf_Shdr *sh_text, ++ unsigned char *text) + { + switch (GELF_R_TYPE(rela->r_info)) { + case R_X86_64_GOTTPOFF: +@@ -82,15 +82,15 @@ kpatch_arch_fixup_rela_update_tls(kpatch_objinfo *origbin, + rv = kpatch_get_original_symbol_loc( + origbin, symname, &off, NULL); + if (rv == SECTION_NOT_FOUND) { +- kpfatalerror( +- "TLS symbol %s not found in original binary", +- symname); ++ kperr("TLS symbol %s not found in original binary", symname); ++ return -1; + } + + kpinfo("Compare TLS symbol %s offset: %lx in origbinal binary, %lx in patch\n", + symname, off, sym->st_value); + if (off != sym->st_value) { +- kpfatalerror("TLS symbol %s has different offset!\n", symname); ++ kperr("TLS symbol %s has different offset!\n", symname); ++ return -1; + } + + return 0; +@@ -103,7 +103,7 @@ kpatch_arch_fixup_rela_update_tls(kpatch_objinfo *origbin, + case R_X86_64_TLSLD: + case R_X86_64_TPOFF64: + default: +- kpfatalerror("non-supported TLS model\n"); ++ kperr("non-supported TLS model\n"); + return -1; + } + +diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c +index 8447356..7914298 100644 +--- a/src/kpatch_elf.c ++++ b/src/kpatch_elf.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - return: make every return properly other than direct-exit ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code + * Huawei Technologies Co., Ltd. + * +@@ -696,9 +699,12 @@ kpatch_resolve_undefined(struct object_file *obj, + + addr = vaddr2addr(o, addr); + +- if (type == STT_GNU_IFUNC) +- if (kpatch_arch_ptrace_resolve_ifunc(proc2pctx(obj->proc), &addr) < 0) +- kpfatalerror("kpatch_arch_ptrace_resolve_ifunc failed\n"); ++ if (type == STT_GNU_IFUNC) { ++ if (kpatch_arch_ptrace_resolve_ifunc(proc2pctx(obj->proc), &addr) < 0) { ++ kperr("kpatch_arch_ptrace_resolve_ifunc failed\n"); ++ return 0; ++ } ++ } + + break; + } +@@ -713,6 +719,7 @@ symbol_resolve(struct object_file *o, + char *symname) + { + unsigned long uaddr; ++ unsigned long st_value; + + switch(GELF_ST_TYPE(s->st_info)) { + case STT_SECTION: +@@ -722,7 +729,7 @@ symbol_resolve(struct object_file *o, + case STT_FUNC: + case STT_OBJECT: + +- /* TODO(pboldin) this breaks rule for overriding ++ /* this breaks rule for overriding + * symbols via dynamic libraries. Fix it. */ + if (s->st_shndx == SHN_UNDEF && + GELF_ST_BIND(s->st_info) == STB_GLOBAL) { +@@ -738,8 +745,12 @@ symbol_resolve(struct object_file *o, + } + /* OK, we overuse st_size to store original offset */ + s->st_size = uaddr; +- s->st_value = kpatch_arch_add_jmp_entry(o, uaddr); +- ++ st_value = kpatch_arch_add_jmp_entry(o, uaddr); ++ if (!st_value) { ++ kperr("Failed to add jmp entry"); ++ return -1; ++ } ++ s->st_value = st_value; + kpdebug("symbol '%s' = 0x%lx\n", + symname, uaddr); + kpdebug("jmptable '%s' = 0x%lx\n", +diff --git a/src/kpatch_elf_objinfo.c b/src/kpatch_elf_objinfo.c +index cadde4c..8ab6dd3 100644 +--- a/src/kpatch_elf_objinfo.c ++++ b/src/kpatch_elf_objinfo.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - return: make every return properly other than direct-exit ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code + * Huawei Technologies Co., Ltd. + ******************************************************************************/ +@@ -167,13 +170,13 @@ kpatch_objinfo_load_tls_reladyn(kpatch_objinfo *oi) + + scn_rela_dyn = kpatch_objinfo_find_scn_by_name(oi, ".rela.dyn", NULL); + if (scn_rela_dyn == NULL) { +- kpfatalerror("unable to find .rela.dyn"); ++ kperr("unable to find .rela.dyn"); + return -1; + } + + data_rela_dyn = elf_getdata(scn_rela_dyn, NULL); + if (data_rela_dyn == NULL || data_rela_dyn->d_buf == NULL) { +- kpfatalerror("no data for .rela.dyn"); ++ kperr("no data for .rela.dyn"); + return -1; + } + +diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c +index e59ce7d..4296954 100644 +--- a/src/kpatch_strip.c ++++ b/src/kpatch_strip.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.11 - return: make every return properly other than direct-exit ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.11 - kpatch: fix code checker warning + * Huawei Technologies Co., Ltd. + * +@@ -54,18 +57,22 @@ int need_section(const char *name) + return 0; + } + +-Elf *kpatch_open_elf(const char *file, int create) ++static Elf *kpatch_open_elf(const char *file, int create, int *elfd) + { ++ Elf *elf = NULL; + int fd; +- Elf *elf; + + fd = open(file, O_RDWR | (create ? O_CREAT : 0), 0660); +- if (fd == -1) +- kpfatalerror("open"); ++ if (fd == -1) { ++ kperr("Failed to open elf"); ++ return NULL; ++ } + elf = elf_begin(fd, (create ? ELF_C_WRITE : ELF_C_RDWR), NULL); +- if (!elf) +- kpfatalerror("elf_begin"); ++ if (!elf) { ++ kperr("Failed to do elf_begin"); ++ } + ++ *elfd = fd; + return elf; + } + +@@ -74,8 +81,9 @@ static int check_info_len(struct kpatch_info *info, size_t scnsize) + int ret = 0, i = 0; + + for (; id_buf, prev->d_size/sizeof(struct kpatch_info))) +- kpfatalerror("functions_too_small_to_patch"); ++ if (!prev) { ++ kperr("Failed to get prev"); ++ return -1; ++ } ++ if (!data) { ++ kperr("Failed to get newdata"); ++ return -1; ++ } ++ if (check_info_len((void*)prev->d_buf, ++ prev->d_size/sizeof(struct kpatch_info))) { ++ kperr("Functions is too small to patch"); ++ return -1; ++ } + data->d_align = 1; + data->d_buf = info_term; + data->d_off = prev->d_size; +@@ -123,14 +137,20 @@ static int kpatch_strip(Elf *elfin, Elf *elfout) + Elf64_Off off = -1ull; + size_t shstridx; + char *scnname; ++ int offset; + +- if (!gelf_newehdr(elfout, gelf_getclass(elfin))) +- kpfatalerror("gelf_newhdr"); +- if (!gelf_getehdr(elfout, &ehout)) +- kpfatalerror("gelf_getehdr out"); +- if (!gelf_getehdr(elfin, &ehin)) +- kpfatalerror("gelf_getehdr in"); +- ++ if (!gelf_newehdr(elfout, gelf_getclass(elfin))) { ++ kperr("Failed to do gelf_newhdr"); ++ return -1; ++ } ++ if (!gelf_getehdr(elfout, &ehout)) { ++ kperr("Failed to do gelf_getehdr out"); ++ return -1; ++ } ++ if (!gelf_getehdr(elfin, &ehin)) { ++ kperr("Failed to do gelf_getehdr in"); ++ return -1; ++ } + memset(&ehout, 0, sizeof(ehout)); + ehout.e_ident[EI_DATA] = ehin.e_ident[EI_DATA]; + ehout.e_machine = ehin.e_machine; +@@ -140,19 +160,28 @@ static int kpatch_strip(Elf *elfin, Elf *elfout) + ehout.e_shentsize = ehin.e_shentsize; + ehout.e_phoff = 0; + +- if (_elf_getshdrstrndx(elfin, &shstridx)) +- kpfatalerror("elf_getshdrstrndx"); ++ if (_elf_getshdrstrndx(elfin, &shstridx)) { ++ kperr("Failed to do elf_getshdrstrndx"); ++ return -1; ++ } + while ((scnin = elf_nextscn(elfin, scnin)) != NULL) { + scnout = elf_newscn(elfout); +- if (!scnout) +- kpfatalerror("elf_newscn"); +- if (!gelf_getshdr(scnout, &shout)) +- kpfatalerror("gelf_getshdr out"); +- if (!gelf_getshdr(scnin, &shin)) +- kpfatalerror("gelf_getshdr in"); ++ if (!scnout) { ++ kperr("Failed to get elf_newscn"); ++ return -1; ++ } ++ if (!gelf_getshdr(scnout, &shout)) { ++ kperr("Failed to do gelf_getshdr out"); ++ return -1; ++ } ++ if (!gelf_getshdr(scnin, &shin)) { ++ kperr("Failed to do gelf_getshdr in"); ++ return -1; ++ } + scnname = elf_strptr(elfin, shstridx, shin.sh_name); + if (!scnname) { +- kpfatalerror("elf_strptr"); ++ kperr("Faild to do elf_strptr"); ++ return -1; + } + shout = shin; + +@@ -166,37 +195,58 @@ static int kpatch_strip(Elf *elfin, Elf *elfout) + if (need_section(scnname)) { + kpinfo("need it\n"); + dataout = elf_newdata(scnout); +- if (!dataout) +- kpfatalerror("elf_newdata"); ++ if (!dataout) { ++ kperr("Failed to do elf_newdata"); ++ return -1; ++ } + *dataout = *elf_getdata(scnin, NULL); + off += shin.sh_size; +- if (!strcmp(scnname, ".kpatch.info")) +- off += process_kpatch_info(scnout, &shout); ++ if (!strcmp(scnname, ".kpatch.info")) { ++ offset = process_kpatch_info(scnout, &shout); ++ if (offset < 0) { ++ kperr("Failed to process kpatch info"); ++ return -1; ++ } ++ off += (size_t)offset; ++ } + } else { + kpinfo("don't need it\n"); + shout.sh_type = SHT_NOBITS; + } +- if (!gelf_update_shdr(scnout, &shout)) +- kpfatalerror("gelf_update_shdr need"); +- if (!elf_flagscn(scnout, ELF_C_SET, ELF_F_DIRTY)) +- kpfatalerror("elf_flagscn"); ++ if (!gelf_update_shdr(scnout, &shout)) { ++ kperr("Failed to do gelf_update_shdr need"); ++ return -1; ++ } ++ if (!elf_flagscn(scnout, ELF_C_SET, ELF_F_DIRTY)) { ++ kperr("Failed to do elf_flagscn"); ++ return -1; ++ } + } + + if (off == -1ull) { +- kpfatalerror("off is equal to -1"); ++ kperr("off is equal to -1"); ++ return -1; + } + + off = ALIGN(off, 8); + ehout.e_shoff = off; + +- if (!gelf_update_ehdr(elfout, &ehout)) +- kpfatalerror("gelf_update_ehdr"); +- if (!elf_flagelf(elfout, ELF_C_SET, ELF_F_LAYOUT)) +- kpfatalerror("elf_flagelf"); +- if (elf_update(elfout, ELF_C_WRITE) < 0) +- kpfatalerror("elf_update"); +- if (elf_end(elfout)) +- kpfatalerror("elf_end"); ++ if (!gelf_update_ehdr(elfout, &ehout)) { ++ kperr("Failed to do gelf_update_ehdr"); ++ return -1; ++ } ++ if (!elf_flagelf(elfout, ELF_C_SET, ELF_F_LAYOUT)) { ++ kperr("Failed to do elf_flagelf"); ++ return -1; ++ } ++ if (elf_update(elfout, ELF_C_WRITE) < 0) { ++ kperr("Failed to do elf_update"); ++ return -1; ++ } ++ if (elf_end(elfout)) { ++ kperr("Failed to do elf_end"); ++ return -1; ++ } + return 0; + } + +@@ -220,14 +270,20 @@ kpatch_get_symbol_offset_rel_section(kpatch_objinfo *oi, + return 0; + } + +- if (!(scn = elf_getscn(oi->elf, sym->st_shndx))) +- kpfatalerror("elf_getscn origbin"); +- if (!gelf_getshdr(scn, &shdr)) +- kpfatalerror("gelf_getshdr origbin"); ++ if (!(scn = elf_getscn(oi->elf, sym->st_shndx))) { ++ kperr("Failed to get elf_getscn origbin"); ++ return -1; ++ } + +- if (shdr.sh_addr > sym->st_value) +- kpfatalerror("TODO: shared libraries???\n"); ++ if (!gelf_getshdr(scn, &shdr)) { ++ kperr("Failed to get gelf_getshdr origbin"); ++ return -1; ++ } + ++ if (shdr.sh_addr > sym->st_value) { ++ kperr("Shared libraries is not support"); ++ return -1; ++ } + *symoff = sym->st_value - shdr.sh_addr; + t = kpatch_objinfo_strptr(oi, SECTION_NAME, shdr.sh_name); + if (t == NULL) +@@ -248,12 +304,16 @@ kpatch_get_original_symbol_loc(kpatch_objinfo *origbin, + size_t i; + const char *tmp; + +- if (kpatch_objinfo_load(origbin) < 0) +- kpfatalerror("kpatch_load_object_info"); ++ if (kpatch_objinfo_load(origbin) < 0) { ++ kperr("Failed to do kpatch_load_object_info"); ++ return SECTION_NOT_FOUND; ++ } + + for (i = 0; i < origbin->nsym; i++) { +- if (!gelf_getsym(origbin->symtab, i, &s)) +- kpfatalerror("gelf_getsym origbin\n"); ++ if (!gelf_getsym(origbin->symtab, i, &s)) { ++ kperr("Failed to do gelf_getsym origbin\n"); ++ return SECTION_NOT_FOUND; ++ } + tmp = kpatch_objinfo_strptr(origbin, SYMBOL_NAME, s.st_name); + if (tmp != NULL && !strcmp(tmp, symname)) { + sym = &s; +@@ -266,7 +326,7 @@ kpatch_get_original_symbol_loc(kpatch_objinfo *origbin, + if (kpatch_get_symbol_offset_rel_section(origbin, sym, symoff, secname) == 0) + return SECTION_OFFSET_FOUND; + +- return -1; ++ return SECTION_NOT_FOUND; + } + + static int +@@ -280,8 +340,10 @@ kpatch_get_local_symbol_loc(kpatch_objinfo *oi, + size_t i; + + for (i = 0; i < oi->nsym; i++) { +- if (!gelf_getsym(oi->symtab, i, §ionsym)) +- kpfatalerror("gelf_getsym\n"); ++ if (!gelf_getsym(oi->symtab, i, §ionsym)) { ++ kperr("Failed to do gelf_getsym\n"); ++ return SECTION_NOT_FOUND; ++ } + if (GELF_ST_TYPE(sectionsym.st_info) != STT_SECTION) + continue; + if (sectionsym.st_shndx == sym->st_shndx) +@@ -290,10 +352,11 @@ kpatch_get_local_symbol_loc(kpatch_objinfo *oi, + if (i == oi->nsym) + return SECTION_NOT_FOUND; + +- if (kpatch_get_symbol_offset_rel_section(oi, sym, symoff, secname)) +- return -1; ++ if (kpatch_get_symbol_offset_rel_section(oi, sym, symoff, secname) < 0) ++ return SECTION_NOT_FOUND; + + *section_symn = i; ++ + return SECTION_OFFSET_FOUND; + } + +@@ -337,9 +400,9 @@ kpatch_fixup_rela_one(kpatch_objinfo *origbin, + + if (GELF_ST_TYPE(sym->st_info) == STT_TLS) { + rv = kpatch_arch_fixup_rela_update_tls(origbin, patch, rel, +- sym, sh_text, text); ++ sym, sh_text, text); + if (rv < 0) +- kpfatalerror("kpatch_fixup_rela_update_tls"); ++ kperr("Faileed to do kpatch_fixup_rela_update_tls"); + + return rv; + } +@@ -371,9 +434,10 @@ kpatch_fixup_rela_one(kpatch_objinfo *origbin, + status = kpatch_get_local_symbol_loc(patch, + sym, &offset, &secname, §ion_symn); + +- if (status == SECTION_NOT_FOUND) +- kpfatalerror("unable to find local sym's section"); +- ++ if (status == SECTION_NOT_FOUND) { ++ kperr("Unable to find local sym's section"); ++ return -1; ++ } + rel->r_info = GELF_R_INFO( + section_symn, + GELF_R_TYPE(rel->r_info)); +@@ -404,7 +468,6 @@ kpatch_fixup_rela_one(kpatch_objinfo *origbin, + off = rel->r_offset - sh_text->sh_addr - 2; + + if (text[off] == MOV_INSN) { +- //kpdebug("changing mov to lea at %lx\n", off); + kpinfo("changing mov to lea at %lx\n", off); + text[off] = LEA_INSN; + } +@@ -442,26 +505,36 @@ kpatch_fixup_rela(kpatch_objinfo *origbin, + + nrel = sh_rel->sh_size / sh_rel->sh_entsize; + relatab = elf_getdata(scn_rel, NULL); +- if (relatab == NULL) +- kpfatalerror("elf_getdata(relatab)"); ++ if (relatab == NULL) { ++ kperr("Failed to do get relatab"); ++ return -1; ++ } + + scn_text = kpatch_objinfo_getshdr(patch, sh_rel->sh_info, &sh_text); +- if (scn_text == NULL) +- kpfatalerror("kpatch_objinfo_getshdr(scn_text)"); ++ if (scn_text == NULL) { ++ kperr("Failed to get scn_text"); ++ return -1; ++ } + + data_text = elf_getdata(scn_text, NULL); +- if (data_text == NULL) +- kpfatalerror("data_text == NULL"); ++ if (data_text == NULL) { ++ kperr("Failed to get data_text"); ++ return -1; ++ } + + for (i = 0; i < nrel; i++) { + GElf_Rela rel; + GElf_Sym sym; + +- if (!gelf_getrela(relatab, i, &rel)) +- kpfatalerror("gelf_getrela"); ++ if (!gelf_getrela(relatab, i, &rel)) { ++ kperr("Failed to do gelf_getrela"); ++ return -1; ++ } + +- if (!gelf_getsym(symtab, GELF_R_SYM(rel.r_info), &sym)) +- kpfatalerror("gelf_getsym"); ++ if (!gelf_getsym(symtab, GELF_R_SYM(rel.r_info), &sym)) { ++ kperr("Failed to do gelf_getsym"); ++ return -1; ++ } + + rv = kpatch_fixup_rela_one(origbin, patch, &rel, &sym, + &sh_text, data_text->d_buf); +@@ -469,12 +542,16 @@ kpatch_fixup_rela(kpatch_objinfo *origbin, + if (rv < 0) + return rv; + +- if (!gelf_update_rela(relatab, i, &rel)) +- kpfatalerror("gelf_update_rela"); ++ if (!gelf_update_rela(relatab, i, &rel)) { ++ kperr("Failed to do gelf_update_rela"); ++ return -1; ++ } + + if (rv && +- !gelf_update_sym(symtab, GELF_R_SYM(rel.r_info), &sym)) +- kpfatalerror("gelf_update_sym"); ++ !gelf_update_sym(symtab, GELF_R_SYM(rel.r_info), &sym)) { ++ kperr("Failed to do gelf_update_sym"); ++ return -1; ++ } + } + + elf_flagdata(data_text, ELF_C_SET, ELF_F_DIRTY); +@@ -491,10 +568,15 @@ static int kpatch_rel_fixup(Elf *elf_origbin, Elf *elf_patch) + kpatch_objinfo patch = OBJINFO_INIT(elf_patch); + + +- if (kpatch_objinfo_load(&origbin)) +- kpfatalerror("kpatch_load_object_info"); +- if (kpatch_objinfo_load(&patch)) +- kpfatalerror("kpatch_load_object_info"); ++ if (kpatch_objinfo_load(&origbin)) { ++ kperr("Failed to do kpatch_load_object_info"); ++ return -1; ++ } ++ ++ if (kpatch_objinfo_load(&patch)) { ++ kperr("Failed to do kpatch_load_object_info"); ++ return -1; ++ } + + /* + * We redo relocations that are made against local machine-generated +@@ -510,24 +592,36 @@ static int kpatch_rel_fixup(Elf *elf_origbin, Elf *elf_patch) + scn_patch = kpatch_objinfo_getshdr(&patch, i, &sh_patch); + + if (sh_patch.sh_type == SHT_RELA) +- if (kpatch_fixup_rela(&origbin, &patch, scn_patch, &sh_patch)) +- kpfatalerror("kpatch_fixup_rela"); ++ if (kpatch_fixup_rela(&origbin, &patch, scn_patch, &sh_patch) < 0) { ++ kperr("Failed to do kpatch_fixup_rela"); ++ return -1; ++ } + +- if (sh_patch.sh_type == SHT_REL) +- kpfatalerror("TODO: handle SHT_REL\n"); ++ if (sh_patch.sh_type == SHT_REL) { ++ kperr("Unable to handle SHT_REL\n"); ++ return -1; ++ } + + /* We had to update section headers otherwise updating a symbol + causes libelf to erase them completely, possibly a bug */ +- if (!gelf_update_shdr(scn_patch, &sh_patch)) +- kpfatalerror("gelf_update_shdr"); ++ if (!gelf_update_shdr(scn_patch, &sh_patch)) { ++ kperr("Failed to do gelf_update_shdr"); ++ return -1; ++ } + } + +- if (!elf_flagelf(elf_patch, ELF_C_SET, ELF_F_LAYOUT)) +- kpfatalerror("elf_flagelf"); +- if (elf_update(elf_patch, ELF_C_WRITE) < 0) +- kpfatalerror("elf_update"); +- if (elf_end(elf_patch)) +- kpfatalerror("elf_end"); ++ if (!elf_flagelf(elf_patch, ELF_C_SET, ELF_F_LAYOUT)) { ++ kperr("Failed to do elf_flagelf"); ++ return -1; ++ } ++ if (elf_update(elf_patch, ELF_C_WRITE) < 0) { ++ kperr("Failed to do elf_update"); ++ return -1; ++ } ++ if (elf_end(elf_patch)) { ++ kperr("Failed to do elf_end"); ++ return -1; ++ } + return 0; + } + +@@ -549,19 +643,24 @@ kpatch_rel_offset_to_relative(kpatch_objinfo *patch, + &sh_patch); + + if (sh_patch.sh_addr == 0) +- return 1; ++ return 0; + + for (i = 0; i < nrel; i++) { + GElf_Rela rel; + +- if (!gelf_getrela(data, i, &rel)) +- kpfatalerror("gelf_getrela"); ++ if (!gelf_getrela(data, i, &rel)) { ++ kperr("Failed to do gelf_getrela"); ++ return -1; ++ } + + rel.r_offset -= sh_patch.sh_addr; +- if (!gelf_update_rela(data, i, &rel)) +- kpfatalerror("gelf_update_rela"); ++ if (!gelf_update_rela(data, i, &rel)) { ++ kperr("Failed to do gelf_update_rela"); ++ return -1; ++ } + } +- return 1; ++ ++ return 0; + } + + /* Undo symbol values from absolute binary offset back to relative +@@ -572,15 +671,15 @@ kpatch_rel_symbols_to_relative(kpatch_objinfo *patch) + { + GElf_Shdr shdr; + Elf_Scn *scn; +- + size_t i, shndx = SHN_UNDEF; + + for (i = 0; i < patch->nsym; i++) { + GElf_Sym s; + +- if (!gelf_getsym(patch->symtab, i, &s)) +- kpfatalerror("gelf_getsym"); +- ++ if (!gelf_getsym(patch->symtab, i, &s)) { ++ kperr("Failed to do gelf_getsym"); ++ return -1; ++ } + if (s.st_shndx == SHN_UNDEF || + s.st_shndx >= SHN_LORESERVE || + GELF_ST_TYPE(s.st_info) == STT_TLS || +@@ -590,8 +689,10 @@ kpatch_rel_symbols_to_relative(kpatch_objinfo *patch) + if (shndx != s.st_shndx) { + scn = kpatch_objinfo_getshdr(patch, s.st_shndx, + &shdr); +- if (scn == NULL) +- kpfatalerror("kpatch_objinfo_getshdr"); ++ if (scn == NULL) { ++ kperr("Failed to get scn"); ++ return -1; ++ } + shndx = s.st_shndx; + } + +@@ -599,11 +700,13 @@ kpatch_rel_symbols_to_relative(kpatch_objinfo *patch) + continue; + + s.st_value -= shdr.sh_addr; +- if (!gelf_update_sym(patch->symtab, i, &s)) +- kpfatalerror("gelf_update_sym"); ++ if (!gelf_update_sym(patch->symtab, i, &s)) { ++ kperr("Failed to update sym"); ++ return -1; ++ } + } + +- return 1; ++ return 0; + } + + static int * +@@ -611,7 +714,8 @@ map_patch_to_orig_sections(kpatch_objinfo *origbin, + kpatch_objinfo *patch) + { + const char *patch_scnname, *orig_scnname; +- int *scn_mapping, *reverse_mapping; ++ int *scn_mapping = NULL; ++ int *reverse_mapping = NULL; + size_t iorig, ipatch; + GElf_Shdr sh_orig, sh_patch; + +@@ -619,17 +723,23 @@ map_patch_to_orig_sections(kpatch_objinfo *origbin, + if (scn_mapping == NULL) + return NULL; + +- if (kpatch_objinfo_load(origbin) < 0) +- kpfatalerror("kpatch_load_object_info"); ++ if (kpatch_objinfo_load(origbin) < 0) { ++ kperr("Failed to do kpatch_load_object_info"); ++ goto cleanup; ++ } + +- if (kpatch_objinfo_load(patch) < 0) +- kpfatalerror("kpatch_load_object_info"); ++ if (kpatch_objinfo_load(patch) < 0) { ++ kperr("Failed to do kpatch_load_object_info"); ++ goto cleanup; ++ } + + for (iorig = 1, ipatch = 1; iorig < origbin->shnum; iorig++) { +- if (kpatch_objinfo_getshdr(origbin, iorig, &sh_orig) == NULL) +- kpfatalerror("kpatch_objinfo_getshdr"); ++ if (kpatch_objinfo_getshdr(origbin, iorig, &sh_orig) == NULL) { ++ kperr("Failed to do kpatch_objinfo_getshdr"); ++ goto cleanup; ++ } + +- if (0 == (sh_orig.sh_flags & SHF_ALLOC)) ++ if ((sh_orig.sh_flags & SHF_ALLOC) == 0) + continue; + + orig_scnname = kpatch_objinfo_strptr(origbin, +@@ -637,8 +747,10 @@ map_patch_to_orig_sections(kpatch_objinfo *origbin, + sh_orig.sh_name); + + do { +- if (kpatch_objinfo_getshdr(patch, ipatch, &sh_patch) == NULL) +- kpfatalerror("kpatch_objinfo_getshdr"); ++ if (kpatch_objinfo_getshdr(patch, ipatch, &sh_patch) == NULL) { ++ kperr("Failed to do kpatch_objinfo_getshdr"); ++ goto cleanup; ++ } + patch_scnname = kpatch_objinfo_strptr(patch, SECTION_NAME, sh_patch.sh_name); + kpdebug("%s %s", orig_scnname, patch_scnname); + } while (strcmp(orig_scnname, patch_scnname) != 0 && +@@ -659,8 +771,7 @@ map_patch_to_orig_sections(kpatch_objinfo *origbin, + + reverse_mapping = calloc(patch->shnum, sizeof(*reverse_mapping)); + if (reverse_mapping == NULL) { +- free(scn_mapping); +- return NULL; ++ goto cleanup; + } + + for (iorig = 1; iorig < origbin->shnum; iorig++) { +@@ -669,8 +780,8 @@ map_patch_to_orig_sections(kpatch_objinfo *origbin, + reverse_mapping[scn_mapping[iorig]] = iorig; + } + ++cleanup: + free(scn_mapping); +- + return reverse_mapping; + } + +@@ -681,33 +792,44 @@ kpatch_rel_copy_sections_addr(kpatch_objinfo *origbin, kpatch_objinfo *patch) + int *scn_mapping; + Elf_Scn *scn_patch, *scn_orig; + GElf_Shdr sh_patch, sh_orig; ++ int ret = -1; + + scn_mapping = map_patch_to_orig_sections(origbin, patch); +- if (scn_mapping == NULL) +- kpfatalerror("map_patch_to_orig_sections"); ++ if (scn_mapping == NULL) { ++ kperr("Failed to do map_patch_to_orig_sections"); ++ return -1; ++ } + + for (i = 1; i < patch->shnum; i++) { + if (scn_mapping[i] == 0) + continue; + + scn_patch = kpatch_objinfo_getshdr(patch, i, &sh_patch); +- if (scn_patch == NULL) +- kpfatalerror("kpatch_objinfo_getshdr"); ++ if (scn_patch == NULL) { ++ kperr("Failed to get scn_patch"); ++ goto cleanup; ++ } + + scn_orig = kpatch_objinfo_getshdr(origbin, scn_mapping[i], + &sh_orig); +- if (scn_orig == NULL) +- kpfatalerror("kpatch_objinfo_getshdr"); ++ if (scn_orig == NULL) { ++ kperr("Failed to get scn_orig"); ++ goto cleanup; ++ } + + sh_patch.sh_addr = sh_orig.sh_addr; + +- if (!gelf_update_shdr(scn_patch, &sh_patch)) +- kpfatalerror("gelf_update_shdr"); ++ if (!gelf_update_shdr(scn_patch, &sh_patch)) { ++ kperr("Fail to update shdr"); ++ goto cleanup; ++ } + } + +- free(scn_mapping); ++ ret = 0; + +- return 1; ++cleanup: ++ free(scn_mapping); ++ return ret; + } + + static int +@@ -719,48 +841,73 @@ kpatch_undo_link(Elf *elf_origbin, Elf *elf_patch) + kpatch_objinfo origbin = OBJINFO_INIT(elf_origbin); + kpatch_objinfo patch = OBJINFO_INIT(elf_patch); + +- if (kpatch_objinfo_load(&origbin) < 0) +- kpfatalerror("kpatch_objinfo_load"); ++ if (kpatch_objinfo_load(&origbin) < 0) { ++ kperr("Failed to load origbin"); ++ return -1; ++ } + +- if (kpatch_objinfo_load(&patch) < 0) +- kpfatalerror("kpatch_objinfo_load"); ++ if (kpatch_objinfo_load(&patch) < 0) { ++ kperr("Failed to load patch"); ++ return -1; ++ } + + /* Reset relocations offets and find symbol section */ + for (i = 1; i < patch.shnum; i++) { + scn_rel = kpatch_objinfo_getshdr(&patch, i, &sh_rel); +- if (scn_rel == NULL) +- kpfatalerror("kpatch_objinfo_getshdr"); ++ if (scn_rel == NULL) { ++ kperr("Failed to get scn_rel"); ++ return -1; ++ } + + if (sh_rel.sh_type == SHT_RELA) { +- if (!kpatch_rel_offset_to_relative(&patch, scn_rel, +- &sh_rel)) +- kpfatalerror("kpatch_rel_undo_offset_rela"); ++ if (kpatch_rel_offset_to_relative(&patch, scn_rel, ++ &sh_rel) < 0) { ++ kperr("Failed to do kpatch_rel_undo_offset_rela"); ++ return -1; ++ } ++ } ++ if (sh_rel.sh_type == SHT_REL) { ++ kperr("SHT_REL is not support"); ++ return -1; + } +- if (sh_rel.sh_type == SHT_REL) +- kpfatalerror("TODO: handle SHT_REL"); + } + + /* Redo symbols' values to section-relative */ +- if (!kpatch_rel_symbols_to_relative(&patch)) +- kpfatalerror("kpatch_rel_symbol_to_relative"); ++ if (kpatch_rel_symbols_to_relative(&patch) < 0) { ++ kperr("Failed to do kpatch_rel_symbol_to_relative"); ++ return -1; ++ } + + /* Copy section `sh_addr'eses */ +- if (!kpatch_rel_copy_sections_addr(&origbin, &patch)) +- kpfatalerror("kpatch_rel_copy_sections_addr"); ++ if (kpatch_rel_copy_sections_addr(&origbin, &patch) < 0) { ++ kperr("Failed to do kpatch_rel_copy_sections_addr"); ++ return -1; ++ } + + /* Update object type */ + patch.ehdr.e_type = ET_REL; + patch.ehdr.e_phoff = 0; + patch.ehdr.e_phnum = 0; +- if (!gelf_update_ehdr(patch.elf, &patch.ehdr)) +- kpfatalerror("gelf_update_ehdr"); +- +- if (!elf_flagelf(patch.elf, ELF_C_SET, ELF_F_LAYOUT)) +- kpfatalerror("elf_flagelf"); +- if (elf_update(patch.elf, ELF_C_WRITE) < 0) +- kpfatalerror("elf_update"); +- if (elf_end(patch.elf)) +- kpfatalerror("elf_end"); ++ if (!gelf_update_ehdr(patch.elf, &patch.ehdr)) { ++ kperr("Failed to update ehdr"); ++ return -1; ++ } ++ ++ if (!elf_flagelf(patch.elf, ELF_C_SET, ELF_F_LAYOUT)) { ++ kperr("Failed to do elf_flagelf"); ++ return -1; ++ } ++ ++ if (elf_update(patch.elf, ELF_C_WRITE) < 0) { ++ kperr("Failed to update elf"); ++ return -1; ++ } ++ ++ if (elf_end(patch.elf)) { ++ kperr("Failed to do elf_end"); ++ return -1; ++ } ++ + return 0; + } + +@@ -796,6 +943,9 @@ int main(int argc, char *argv[]) + { + Elf *elf1 = NULL, *elf2 = NULL; + int ch, mode = 0; ++ int fd1 = -1; ++ int fd2 = -1; ++ int ret = -1; + + while ((ch = getopt_long(argc, argv, "+o:sru", long_opts, 0)) != -1) { + switch (ch) { +@@ -812,8 +962,10 @@ int main(int argc, char *argv[]) + return usage(); + } + } +- if (!mode) ++ ++ if (!mode) { + return usage(); ++ } + + argc -= optind; + argv += optind; +@@ -832,17 +984,35 @@ int main(int argc, char *argv[]) + + elf_version(EV_CURRENT); + +- elf1 = kpatch_open_elf(argv[0], 0); +- if (argc == 2) +- elf2 = kpatch_open_elf(argv[1], (mode == MODE_STRIP)); +- +- if (mode == MODE_STRIP) +- return kpatch_strip(elf1, elf2); +- if (mode == MODE_REL_FIXUP) +- return kpatch_rel_fixup(elf1, elf2); +- if (mode == MODE_UNDO_LINK) +- return kpatch_undo_link(elf1, elf2); +-/* +-*/ +- return 0; ++ elf1 = kpatch_open_elf(argv[0], 0, &fd1); ++ if (elf1 == NULL) { ++ goto cleanup; ++ } ++ ++ if (argc == 2) { ++ elf2 = kpatch_open_elf(argv[1], (mode == MODE_STRIP), &fd2); ++ if (elf2 == NULL) { ++ goto cleanup; ++ } ++ } ++ ++ switch (mode) { ++ case MODE_STRIP: ++ ret = kpatch_strip(elf1, elf2); ++ break; ++ case MODE_REL_FIXUP: ++ ret = kpatch_rel_fixup(elf1, elf2); ++ break; ++ case MODE_UNDO_LINK: ++ ret = kpatch_undo_link(elf1, elf2); ++ break; ++ default: ++ break; ++ } ++ ++cleanup: ++ close(fd1); ++ close(fd2); ++ ++ return ret; + } +-- +2.27.0 + diff --git a/0086-libcare-patch-make-check-return-for-each-patch-make-.patch b/0086-libcare-patch-make-check-return-for-each-patch-make-.patch new file mode 100644 index 0000000..bbf254e --- /dev/null +++ b/0086-libcare-patch-make-check-return-for-each-patch-make-.patch @@ -0,0 +1,59 @@ +From 24688dafde238672bfd765faaf0fe7b65fd5cec6 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Mon, 22 Mar 2021 20:10:37 +0800 +Subject: [PATCH 086/118] libcare-patch-make: check return for each patch-make + stage + +We should check return for each patch-make stage other than +going next with errors. + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/libcare-patch-make | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +diff --git a/src/libcare-patch-make b/src/libcare-patch-make +index 3e5c7c6..aab6845 100755 +--- a/src/libcare-patch-make ++++ b/src/libcare-patch-make +@@ -1,4 +1,4 @@ +-#!/bin/sh -e ++#!/bin/sh + + usage() { + cat<<'EOF' +@@ -152,12 +152,28 @@ build_kpatches() { + chmod u+w "${origexec}" "${patchedexec}" + $KPATCH_PATH/kpatch_strip --strip "${patchedexec}" \ + "${patchedexec}.stripped" >/dev/null ++ if [ $? -ne 0 ];then ++ echo "Failed to do stripped." ++ exit 1 ++ fi + $KPATCH_PATH/kpatch_strip --rel-fixup "$origexec" \ + "${patchedexec}.stripped" || continue ++ if [ $? -ne 0 ];then ++ echo "Failed to do relocation fixup." ++ exit 1 ++ fi + /usr/bin/strip --strip-unneeded "${patchedexec}.stripped" ++ if [ $? -ne 0 ];then ++ echo "Failed to do stripped unneeded section." ++ exit 1 ++ fi + $KPATCH_PATH/kpatch_strip --undo-link "$origexec" "${patchedexec}.stripped" + $KPATCH_PATH/kpatch_make -b "$buildid" -i "$patch_id" \ + "${patchedexec}.stripped" -o "${patchedexec}.kpatch" ++ if [ $? -ne 0 ];then ++ echo "Failed to make patch." ++ exit 1 ++ fi + cp "${patchedexec}.kpatch" "${LPMAKE_PATCHROOT}"/${buildid}.kpatch + echo "patch for ${origexec} is in ${LPMAKE_PATCHROOT}/${buildid}.kpatch" + done +-- +2.27.0 + diff --git a/0087-kpatch-clear-code-checker-warnings.patch b/0087-kpatch-clear-code-checker-warnings.patch new file mode 100644 index 0000000..8667624 --- /dev/null +++ b/0087-kpatch-clear-code-checker-warnings.patch @@ -0,0 +1,125 @@ +From e09d09ceaec64187ad5cab455284dc8cdc89044a Mon Sep 17 00:00:00 2001 +From: Hao Wang +Date: Mon, 22 Mar 2021 21:52:37 +0800 +Subject: [PATCH 087/118] kpatch: clear code checker warnings + +clear code checker warnings for: + src/kpatch_make.c + src/kpatch_process.c + +Signed-off-by: Hao Wang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_make.c | 28 ++++++++++++++++++---------- + src/kpatch_process.c | 5 ++++- + 2 files changed, 22 insertions(+), 11 deletions(-) + +diff --git a/src/kpatch_make.c b/src/kpatch_make.c +index 348e979..1185300 100644 +--- a/src/kpatch_make.c ++++ b/src/kpatch_make.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.12 - kpatch: clear code checker warnings ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.11 - kpatch: clear code checker warnings + * Huawei Technologies Co., Ltd. + * +@@ -83,9 +86,9 @@ int main(int argc, char **argv) + int fdo = 1; + void *buf; + struct stat st; +- const char *buildid = NULL; +- const char *outputname = NULL; +- const char *patch_id = NULL; ++ char *buildid = NULL; ++ char *outputname = NULL; ++ char *patch_id = NULL; + + while ((opt = getopt(argc, argv, "db:o:i:v:s:")) != -1) { + switch (opt) { +@@ -95,21 +98,21 @@ int main(int argc, char **argv) + case 'b': + if (buildid) { + kplogerror("duplicate inputted buildid\n"); +- return -1; ++ goto cleanup; + } + buildid = strdup(optarg); + break; + case 'o': + if (outputname) { + kplogerror("duplicate inputted outputname\n"); +- return -1; ++ goto cleanup; + } + outputname = strdup(optarg); + break; + case 'i': + if (patch_id) { + kplogerror("duplicate inputted patch_id\n"); +- return -1; ++ goto cleanup; + } + patch_id = strdup(optarg); + break; +@@ -139,23 +142,28 @@ int main(int argc, char **argv) + goto cleanup; + } + buf = mmap(NULL, st.st_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd1, 0); +- if (buf == MAP_FAILED) ++ if (buf == MAP_FAILED) { + kplogerror("mmap error %d", errno); +- close(fd1); ++ goto cleanup; ++ } + + fdo = 1; + if (outputname) { + fdo = open(outputname, O_CREAT | O_TRUNC | O_WRONLY, 0660); + if (fdo == -1) { + kplogerror("Can't open output file '%s'\n", outputname); +- goto cleanup; ++ goto unmap; + } + } + ret = make_file(fdo, buf, st.st_size, buildid, patch_id); ++unmap: ++ munmap(buf, st.st_size); + + cleanup: + close(fdo); +- munmap(buf, st.st_size); + close(fd1); ++ free(buildid); ++ free(outputname); ++ free(patch_id); + return ret; + } +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index 64d9f38..f87003f 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.12 - kpatch: clear code checker warnings ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.11 - kpatch: fix code checker warning + * Huawei Technologies Co., Ltd. + * +@@ -876,7 +879,7 @@ process_get_comm(kpatch_process_t *proc) + return -1; + realpath[ret - 1] = '\0'; + bn = basename(realpath); +- strncpy(path, bn, sizeof(path)); ++ strncpy(path, bn, sizeof(path) - 1); + if ((c = strstr(path, " (deleted)"))) + *c = '\0'; + +-- +2.27.0 + diff --git a/0088-kpatch_make-initialize-fd-to-avoid-unexpected-close.patch b/0088-kpatch_make-initialize-fd-to-avoid-unexpected-close.patch new file mode 100644 index 0000000..792e3cb --- /dev/null +++ b/0088-kpatch_make-initialize-fd-to-avoid-unexpected-close.patch @@ -0,0 +1,39 @@ +From 12ddea7af86cb37cdc7de2cf51840ff13ac03a6e Mon Sep 17 00:00:00 2001 +From: Hao Wang +Date: Tue, 23 Mar 2021 14:03:57 +0800 +Subject: [PATCH 088/118] kpatch_make: initialize fd to avoid unexpected close + +Signed-off-by: Hao Wang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_make.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/kpatch_make.c b/src/kpatch_make.c +index 1185300..e2564ce 100644 +--- a/src/kpatch_make.c ++++ b/src/kpatch_make.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.12 - kpatch_make: initialize fd to avoid unexpected close ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.12 - kpatch: clear code checker warnings + * Huawei Technologies Co., Ltd. + * +@@ -82,8 +85,8 @@ int main(int argc, char **argv) + { + int ret = -1; + int opt; +- int fd1; +- int fdo = 1; ++ int fd1 = -1; ++ int fdo = -1; + void *buf; + struct stat st; + char *buildid = NULL; +-- +2.27.0 + diff --git a/0089-kpatch_cc-Optimize-build_multiple-a-little-bit.patch b/0089-kpatch_cc-Optimize-build_multiple-a-little-bit.patch new file mode 100644 index 0000000..de81699 --- /dev/null +++ b/0089-kpatch_cc-Optimize-build_multiple-a-little-bit.patch @@ -0,0 +1,83 @@ +From 172bc9e8501b28e4ef35c7dc413c89fdc9870501 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Thu, 25 Mar 2021 16:43:03 +0800 +Subject: [PATCH 089/118] kpatch_cc: Optimize build_multiple() a little bit + +build_multiple() reuses newargc which makes code confused. +add another variable to represent the accumulated count. + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_cc.c | 23 ++++++++++++++++------- + 1 file changed, 16 insertions(+), 7 deletions(-) + +diff --git a/src/kpatch_cc.c b/src/kpatch_cc.c +index 7db8a36..da9b6c7 100644 +--- a/src/kpatch_cc.c ++++ b/src/kpatch_cc.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.12 - kpatch_cc: Optimize build_multiple() a little bit ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.11 - kpatch: fix code checker warning + * Huawei Technologies Co., Ltd. + * +@@ -844,6 +847,7 @@ static int build_multiple(void) + char aspath[PATH_MAX]; + int i, j, rv; + int newargc = argc - ninput_files + 1 + 2 + 1 + 1; ++ int argnum; + const char *newargv[newargc]; + + i = j = 0; +@@ -855,17 +859,22 @@ static int build_multiple(void) + + newargv[i++] = argv[j++]; + } +- newargc = i; +- newargv[newargc + 4] = NULL; + +- newargv[newargc + 2] = "-o"; +- newargv[newargc + 3] = aspath; ++ argnum = i; ++ if (argnum + 4 > newargc) { ++ kpccfatal("Failed to build multiple due to buffer overflow.\n"); ++ } ++ ++ newargv[argnum + 4] = NULL; ++ ++ newargv[argnum + 2] = "-o"; ++ newargv[argnum + 3] = aspath; + + for (i = 1; i < argc; i++) { + if (input_files[i] == NULL) + continue; + +- newargv[newargc + 1] = input_files[i]; ++ newargv[argnum + 1] = input_files[i]; + (void) get_assembler_filename(aspath, input_files[i]); + + switch (get_file_type(input_files[i])) { +@@ -883,13 +892,13 @@ passthrough_file: + if (!kpatch_gensrc_asm) + goto passthrough_file; + +- newargv[newargc + 0] = "-E"; ++ newargv[argnum + 0] = "-E"; + rv = run_cmd(newargv, NULL); + if (rv) + goto out; + break; + case SRC_FILE: +- newargv[newargc + 0] = "-S"; ++ newargv[argnum + 0] = "-S"; + rv = run_cmd(newargv, NULL); + if (rv) + goto out; +-- +2.27.0 + diff --git a/0090-patch-correct-time-comsume-print.patch b/0090-patch-correct-time-comsume-print.patch new file mode 100644 index 0000000..cc125a8 --- /dev/null +++ b/0090-patch-correct-time-comsume-print.patch @@ -0,0 +1,128 @@ +From 320b00ca36b68c06ed6cdd865788ba6c6b48c49b Mon Sep 17 00:00:00 2001 +From: Bihong Yu +Date: Mon, 12 Apr 2021 20:42:57 +0800 +Subject: [PATCH 090/118] patch: correct time comsume print + +In process_patch(), there is a case where the start_tv is not assigned +and it goes to the out_free branch which cause the wrong printing of the +frozen time. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_patch.c | 40 +++++++++++++++++++++++++++------------- + 1 file changed, 27 insertions(+), 13 deletions(-) + +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index 0b25bcb..20a158b 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.12 - patch: correct time comsume print ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - ptrace/process/patch: fix some bad code problem + * Huawei Technologies Co., Ltd. + * +@@ -22,6 +25,7 @@ + ******************************************************************************/ + + #include ++#include + #include + #include + #include +@@ -442,6 +446,7 @@ unpatch: + int process_patch(int pid, void *_data) + { + int ret; ++ bool is_calc_time = false; + kpatch_process_t _proc, *proc = &_proc; + struct patch_data *data = _data; + struct timeval start_tv, end_tv; +@@ -495,6 +500,7 @@ int process_patch(int pid, void *_data) + if (ret <= 0) + goto out_free; + ++ is_calc_time = true; + gettimeofday(&start_tv, NULL); + /* Finally, attach to process */ + ret = kpatch_process_attach(proc); +@@ -514,12 +520,13 @@ int process_patch(int pid, void *_data) + if (storage_execute_after_script(storage, proc) < 0) + kperr("after script failed\n"); + +- + out_free: + kpatch_process_free(proc); +- gettimeofday(&end_tv, NULL); +- frozen_time = GET_MICROSECONDS(end_tv, start_tv); +- kpinfo("PID '%d' process patch frozen_time is %ld microsecond\n", pid, frozen_time); ++ if (is_calc_time) { ++ gettimeofday(&end_tv, NULL); ++ frozen_time = GET_MICROSECONDS(end_tv, start_tv); ++ kpinfo("PID '%d' process patch frozen_time is %ld microsecond\n", pid, frozen_time); ++ } + + out: + if (ret < 0) { +@@ -705,6 +712,7 @@ kpatch_unapply_patches(kpatch_process_t *proc, + int process_unpatch(int pid, void *_data) + { + int ret; ++ bool is_calc_time = 0; + kpatch_process_t _proc, *proc = &_proc; + struct unpatch_data *data = _data; + char **buildids = data->buildids; +@@ -714,32 +722,38 @@ int process_unpatch(int pid, void *_data) + unsigned long frozen_time; + + ret = kpatch_process_init(proc, pid, /* start */ 0, /* send_fd */ -1); +- if (ret < 0) +- return -1; ++ if (ret < 0) { ++ kperr("cannot init process %d\n", pid); ++ goto out; ++ } + + kpatch_process_print_short(proc); + ++ is_calc_time = 1; + gettimeofday(&start_tv, NULL); + ret = kpatch_process_attach(proc); + if (ret < 0) +- goto out; ++ goto out_free; + + ret = kpatch_process_map_object_files(proc, patch_id); + if (ret < 0) +- goto out; ++ goto out_free; + + ret = kpatch_coroutines_find(proc); + if (ret < 0) +- goto out; ++ goto out_free; + + ret = kpatch_unapply_patches(proc, buildids, nbuildids, patch_id); + +-out: ++out_free: + kpatch_process_free(proc); +- gettimeofday(&end_tv, NULL); +- frozen_time = GET_MICROSECONDS(end_tv, start_tv); +- kpinfo("PID '%d' process unpatch frozen_time is %ld microsecond\n", pid, frozen_time); ++ if (is_calc_time) { ++ gettimeofday(&end_tv, NULL); ++ frozen_time = GET_MICROSECONDS(end_tv, start_tv); ++ kpinfo("PID '%d' process unpatch frozen_time is %ld microsecond\n", pid, frozen_time); ++ } + ++out: + if (ret < 0) { + printf("Failed to cancel patches for %d\n", pid); + return ret; +-- +2.27.0 + diff --git a/0091-tests-fix-tests-some-executing-problem.patch b/0091-tests-fix-tests-some-executing-problem.patch new file mode 100644 index 0000000..5ddf8d8 --- /dev/null +++ b/0091-tests-fix-tests-some-executing-problem.patch @@ -0,0 +1,65 @@ +From b8cfcc8cce22f7fa74b542532e4e819b204374fb Mon Sep 17 00:00:00 2001 +From: Bihong Yu +Date: Thu, 15 Apr 2021 21:34:51 +0800 +Subject: [PATCH 091/118] tests: fix tests some executing problem + +optimize libcare-server code and adapt run_tests.sh scripts. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + tests/makefile-patch-link.inc | 2 +- + tests/makefile-patch.inc | 2 +- + tests/run_tests.sh | 3 ++- + 3 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/tests/makefile-patch-link.inc b/tests/makefile-patch-link.inc +index 0a78dd9..5de8e3a 100644 +--- a/tests/makefile-patch-link.inc ++++ b/tests/makefile-patch-link.inc +@@ -10,7 +10,7 @@ $(TGT).kpatch: $(OBJ).o $(TGT) + # build kpatch + buildid=$(call get_buildid,$(TGT)); \ + $(KPATCH_MAKE) $(TGT).stripped -o $@ \ +- -b $${buildid}; \ ++ -b $${buildid} -i 0001; \ + cp -fs $@ $(OBJDIR)/$${buildid}.kpatch + + clean:: +diff --git a/tests/makefile-patch.inc b/tests/makefile-patch.inc +index 6da19eb..39ae0d7 100644 +--- a/tests/makefile-patch.inc ++++ b/tests/makefile-patch.inc +@@ -18,7 +18,7 @@ + + %.kpatch: %.undo-link % + buildid=$(call get_buildid,$(word 2,$^)) && \ +- $(KPATCH_MAKE) -b $${buildid} $< -o $@ && \ ++ $(KPATCH_MAKE) -b $${buildid} -i 0001 $< -o $@ && \ + cp -fs $@ $(OBJDIR)/$${buildid}.kpatch + + $(OBJDIR)/%.o: $(OBJDIR)/%.s +diff --git a/tests/run_tests.sh b/tests/run_tests.sh +index 2bdd303..ca65f9d 100755 +--- a/tests/run_tests.sh ++++ b/tests/run_tests.sh +@@ -83,7 +83,7 @@ grep_tail() { + libcare_server_init() { + SOCKPATH=$(mktemp --tmpdir -d)/test.sock + SERVER_LOG=$(mktemp --tmpdir) +- stdbuf -o 0 $LIBCARE_CTL -v server $SOCKPATH \ ++ stdbuf -o 0 $LIBCARE_SERVER -v $SOCKPATH \ + >$SERVER_LOG 2>&1 +Date: Sat, 17 Apr 2021 17:44:31 +0800 +Subject: [PATCH 092/118] gensrc: add test-mode and check whether the conf file + is empty + +The patch does the following things: + 1. add test-mode to remove the dependence on the environment + (/etc/libcare.conf) while runnig test cases; + 2. Check whether the conf file(/etc/libcare.conf) is empty during + make patch; + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_gensrc.c | 27 ++++++++++++++++++++++----- + tests/makefile-patch.inc | 6 +++--- + 2 files changed, 25 insertions(+), 8 deletions(-) + +diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c +index cdee133..602db3a 100644 +--- a/src/kpatch_gensrc.c ++++ b/src/kpatch_gensrc.c +@@ -49,7 +49,7 @@ static int nr_must_adapt_syms; + static int force_gotpcrel; + static int force_global; + +-static char* patch_func_file_name = "/etc/libcare.conf"; ++static char* func_filter_config_file = "/etc/libcare.conf"; + + static int is_func_in_patch_func_file(FILE *fp, kpstr_t *sym) + { +@@ -74,24 +74,31 @@ static inline int in_syms_list(const char *filename, kpstr_t *sym, + const struct sym_desc *sym_arr, + int nr_syms, int cblock_type) + { +- int i, len, rv; ++ int i, c, len, rv; + + /* + * Since we need to ignore some unwanted function being patched, +- * so we will first check if there is a file called "patch_func_name". ++ * so we will first check if there is a file called "libcare.conf". + * If there isn't, we will continue as usual. + * If there is, we will ignore those function which is not in the file. + */ + if (cblock_type == CBLOCK_FUNC && sym_arr == ignore_syms) { +- FILE *fp = fopen(patch_func_file_name, "r"); ++ FILE *fp = fopen(func_filter_config_file, "r"); + if (fp == NULL) { + goto no_conf; + } + ++ c = fgetc(fp); ++ /* If file is empty or first line is '\n' or ' ', we think the file ++ * is not configured */ ++ if (c == EOF || c == '\n' || c == ' ') { ++ goto no_conf; ++ } ++ + rv = is_func_in_patch_func_file(fp, sym); + + if (fclose(fp) != 0) { +- kpfatal("Error in closing file %s\n", patch_func_file_name); ++ kpfatal("Error in closing file %s\n", func_filter_config_file); + } + + /* +@@ -1579,6 +1586,7 @@ static void usage(void) + kplog(LOG_ERR, " at a random 32-bit offset. Used in user-space patching."); + kplog(LOG_ERR, " --force-global - marks all function used in patch as global so the compiler will generate correct relocation"); + kplog(LOG_ERR, " for .kpatch.info section. Used in user-space patching."); ++ kplog(LOG_ERR, " --test-mode - currently running in a test environment, using test mode."); + kplog(LOG_ERR, "FLIST format:"); + kplog(LOG_ERR, " FLIST is comma separated list of function names which can be prepanded with filename where this function defined."); + exit(1); +@@ -1602,6 +1610,7 @@ struct option long_opts[] = { + {"arch", 1, 0, 'a'}, + {"input", 1, 0, 'i'}, + {"ouput", 1, 0, 'o'}, ++ {"test-mode", 0, 0, 't'}, + {"dbg-filter", 0, 0, 'f'}, + {"dbg-filter-eh-frame", 0, 0, DBG_FILTER_EH_FRAME}, + {"dbg-filter-gcc-except-table", 0, 0, DBG_FILTER_GCC_EXCEPTION_TABLE}, +@@ -1618,6 +1627,7 @@ struct option long_opts[] = { + int main(int argc, char **argv) + { + int err, ch, k = 0, dbgfilter = 0, dbgfilter_options = 0; ++ int test_mode = 0; + struct kp_file infile[2], outfile; + + memset(&outfile, 0, sizeof(struct kp_file)); +@@ -1647,6 +1657,9 @@ int main(int argc, char **argv) + if (!strcmp(optarg, "i686")) {arch = ARCH_X86_32; arch_bits = 32;} + if (!strcmp(optarg, "x86_64")) {arch = ARCH_X86_64; arch_bits = 64;} + break; ++ case 't': ++ test_mode = 1; ++ break; + case 'f': + dbgfilter = 1; + break; +@@ -1685,6 +1698,10 @@ int main(int argc, char **argv) + usage(); + } + ++ if (test_mode) { ++ func_filter_config_file = NULL; ++ } ++ + if (dbgfilter) { + if (k < 1) + kpfatal("input file must be specified\n"); +diff --git a/tests/makefile-patch.inc b/tests/makefile-patch.inc +index 39ae0d7..e3be242 100644 +--- a/tests/makefile-patch.inc ++++ b/tests/makefile-patch.inc +@@ -26,18 +26,18 @@ $(OBJDIR)/%.o: $(OBJDIR)/%.s + + $(OBJDIR)/%.orig.s: %.c + $(CC) $< -S -o - $(CFLAGS) | \ +- $(KPATCH_GENSRC) --dbg-filter --os=rhel6 -i - -o $@ ++ $(KPATCH_GENSRC) --dbg-filter --test-mode --os=rhel6 -i - -o $@ + + DIFFEXT ?= diff + + $(OBJDIR)/%.patched.s: %.c %.$(DIFFEXT) + patch -b -p1 < $(word 2,$^) + $(CC) $< -S -o - $(CFLAGS) | \ +- $(KPATCH_GENSRC) --dbg-filter --os=rhel6 -i - -o $@ ++ $(KPATCH_GENSRC) --dbg-filter --test-mode --os=rhel6 -i - -o $@ + mv $<.orig $< + + $(OBJDIR)/%.s: $(OBJDIR)/%.orig.s $(OBJDIR)/%.patched.s +- $(KPATCH_GENSRC) --os=rhel6 -i $< -i $(word 2,$^) --force-global \ ++ $(KPATCH_GENSRC) --os=rhel6 --test-mode -i $< -i $(word 2,$^) --force-global \ + --force-gotpcrel -o $@ + + lib%.patched: LDFLAGS += -shared +-- +2.27.0 + diff --git a/0093-libcare-dump-add-libcare-dump-auxiliary-tools.patch b/0093-libcare-dump-add-libcare-dump-auxiliary-tools.patch new file mode 100644 index 0000000..5124428 --- /dev/null +++ b/0093-libcare-dump-add-libcare-dump-auxiliary-tools.patch @@ -0,0 +1,207 @@ +From eaa2f62ea98865bec127eb97c80563b600229b42 Mon Sep 17 00:00:00 2001 +From: Bihong Yu +Date: Tue, 20 Apr 2021 14:44:13 +0800 +Subject: [PATCH 093/118] libcare-dump: add libcare-dump auxiliary tools + +Sometimes we need a auxiliary tools to get kpatch information for +analysis, such as: whether the assembly code of the kpatch meets our +expectiations, what sysmbols are included by the kpatch, why the kpatch +did not take effect and so on. + +So we provide a libcare-dump tools to help analyze the content of the +kpatch, it can provide the following functions: + 1. convert kpatch file to elf file, so we can use readelf and + objdump tools to analyze it; + 2. print the kpatch header related information(to be realized); + +The libcare-dump tools use like this: + 1. libcare-dump -c -i -o ; + +For detailed usage, please using: libcare-dump --help. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/Makefile | 3 + + src/libcare-dump.c | 142 +++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 145 insertions(+) + create mode 100644 src/libcare-dump.c + +diff --git a/src/Makefile b/src/Makefile +index 464874f..102461b 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -4,6 +4,7 @@ TARGETS = kpatch_gensrc \ + libcare-cc \ + libcare-client \ + libcare-ctl \ ++ libcare-dump \ + libcare-stresstest + DEBUG = yes # comment out this line if not debug + +@@ -59,6 +60,7 @@ kpatch_strip: kpatch_strip.o kpatch_elf_objinfo.o kpatch_log.o arch_strip.o + kpatch_strip: LDLIBS = -lelf + + libcare-cc: kpatch_cc.o ++libcare-dump: libcare-dump.o + + $(TARGETS): %: + $(CC) -o $(@) $(^) $(STATIC_OPTS) $(LDLIBS) +@@ -118,5 +120,6 @@ install: all + $(INSTALL) -m 0500 kpatch_gensrc $(DESTDIR)/$(bindir)/kpatch_gensrc + $(INSTALL) -m 0500 kpatch_make $(DESTDIR)/$(bindir)/kpatch_make + $(INSTALL) -m 0500 kpatch_strip $(DESTDIR)/$(bindir)/kpatch_strip ++ $(INSTALL) -m 0500 libcare-dump $(DESTDIR)/$(bindir)/libcare-dump + + .PHONY: all clean test tests tests-gensrc tests-strip +diff --git a/src/libcare-dump.c b/src/libcare-dump.c +new file mode 100644 +index 0000000..4b9fa91 +--- /dev/null ++++ b/src/libcare-dump.c +@@ -0,0 +1,142 @@ ++/****************************************************************************** ++ * Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 and ++ * only version 2 as published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * Description: This is source file of libcare-dump tools. ++ * The libcare-dump tools use like this: ++ * 1. libcare-dump -c -i -o ; ++ * ++ * For detailed usage, please using: libcare-dump --help. ++ ******************************************************************************/ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "include/kpatch_file.h" ++ ++#define ELFMAG "\177ELF" ++#define SELFMAG 4 ++ ++void usage() ++{ ++ printf("Usage: libcare-dump -c -i -o \n"); ++ printf(" -c convert kpatch to elf\n"); ++ printf("\n"); ++ printf(" libcare-dump provide some auxiliary tools for help.\n"); ++ exit(EXIT_FAILURE); ++} ++ ++int kpatch_convert_to_elf(const char *input_file, const char *output_file) ++{ ++ int fdi = -1; ++ int fdo = -1; ++ int ret = -1; ++ int elf_size; ++ struct stat st; ++ void *buf = NULL; ++ ++ fdi = open(input_file, O_RDONLY); ++ if (fdi == -1) { ++ printf("Can't open kpatch file '%s'\n", input_file); ++ return -1; ++ } ++ if (fstat(fdi, &st) == -1) { ++ printf("Can't stat kpatch file\n"); ++ goto cleanup; ++ } ++ /* input kpatch file must bigger than sizeof(struct kpatch_file) */ ++ elf_size = st.st_size - sizeof(struct kpatch_file); ++ if (elf_size <= 0) { ++ printf("Invalid kpatch file '%s'\n", input_file); ++ goto cleanup; ++ } ++ ++ buf = mmap(NULL, st.st_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fdi, 0); ++ if (buf == MAP_FAILED) { ++ printf("Can't map kpatch file\n"); ++ goto cleanup; ++ } ++ ++ /* check elf format */ ++ if (memcmp((void *)(buf + sizeof(struct kpatch_file)), ++ ELFMAG, SELFMAG) != 0) { ++ printf("check elf format failed\n"); ++ goto unmap; ++ } ++ ++ fdo = open(output_file, O_CREAT | O_TRUNC | O_WRONLY, 0550); ++ if (fdo == -1) { ++ printf("Can't create output file '%s'\n", output_file); ++ goto unmap; ++ } ++ ++ /* write elf to output file */ ++ if (write(fdo, buf + sizeof(struct kpatch_file), elf_size) != elf_size) { ++ printf("Write error\n"); ++ goto unmap; ++ } ++ ret = 0; ++ ++ unmap: ++ munmap(buf, st.st_size); ++ ++ cleanup: ++ close(fdi); ++ close(fdo); ++ return ret; ++} ++ ++int main(int argc, char **argv) ++{ ++ int opt; ++ int ret = -1; ++ int convert_to_elf = 0; ++ char *input_file = NULL; ++ char *output_file = NULL; ++ ++ if (argc < 6) { ++ usage(); ++ } ++ ++ while ((opt = getopt(argc, argv, "i:o:c::")) != -1) { ++ switch (opt) { ++ case 'i': ++ input_file = strdup(optarg); ++ break; ++ case 'o': ++ output_file = strdup(optarg); ++ break; ++ case 'c': ++ convert_to_elf = 1; ++ break; ++ default: ++ usage(); ++ } ++ } ++ ++ if (input_file == NULL || output_file == NULL) { ++ usage(); ++ } ++ ++ if (convert_to_elf) { ++ ret = kpatch_convert_to_elf(input_file, output_file); ++ } ++ ++ free(input_file); ++ free(output_file); ++ return ret; ++} ++ +-- +2.27.0 + diff --git a/0094-process-add-a-flag-to-mark-unpatch-target-elf.patch b/0094-process-add-a-flag-to-mark-unpatch-target-elf.patch new file mode 100644 index 0000000..dd20d57 --- /dev/null +++ b/0094-process-add-a-flag-to-mark-unpatch-target-elf.patch @@ -0,0 +1,103 @@ +From 3fa9ceb911064a86d6e9d1b11bf735d95aac7486 Mon Sep 17 00:00:00 2001 +From: Bihong Yu +Date: Fri, 23 Apr 2021 14:45:46 +0800 +Subject: [PATCH 094/118] process: add a flag to mark unpatch target elf + +When we unpatch a process that multiple object has been patched, libcare +will try to unpatch all patch in function kpatch_unapply_patches() which +is not what we expected. In order to slove the problem, we add the +is_unpatch_target_elf flag to mark the unpatch target elf object, and +check the flags before unpatch for object who have been patched. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/include/kpatch_process.h | 3 +++ + src/kpatch_patch.c | 10 +++++----- + src/kpatch_process.c | 8 +++++--- + 3 files changed, 13 insertions(+), 8 deletions(-) + +diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h +index 7193430..56b4be1 100644 +--- a/src/include/kpatch_process.h ++++ b/src/include/kpatch_process.h +@@ -133,6 +133,9 @@ struct object_file { + + /* Is it an ELF or a mmap'ed regular file? */ + unsigned int is_elf:1; ++ ++ /* Is it an unpatch target */ ++ unsigned int is_unpatch_target_elf:1; + }; + + struct kpatch_process { +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index 20a158b..0f01663 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.12 - process: add a flag to mark unpatch target elf ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.12 - patch: correct time comsume print + * Huawei Technologies Co., Ltd. + * +@@ -689,12 +692,9 @@ kpatch_unapply_patches(kpatch_process_t *proc, + int ret; + size_t unapplied = 0; + +- ret = kpatch_process_associate_patches(proc, patch_id); +- if (ret < 0) +- return ret; +- + list_for_each_entry(o, &proc->objs, list) { +- if (o->is_patch || o->num_applied_patch == 0) ++ if (o->is_patch || o->num_applied_patch == 0 || ++ !o->is_unpatch_target_elf) + continue; + + if (!kpatch_should_unapply_patch(o, buildids, nbuildids)) +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index f87003f..837cadf 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -159,6 +159,7 @@ process_new_object(kpatch_process_t *proc, + memset(&o->ehdr, 0, sizeof(o->ehdr)); + o->phdr = NULL; + o->is_elf = 0; ++ o->is_unpatch_target_elf = 0; + o->dynsyms = NULL; + o->ndynsyms = 0; + o->dynsymnames = NULL; +@@ -414,7 +415,7 @@ kpatch_process_associate_patches(kpatch_process_t *proc, const char *patch_id) + { + struct object_file *o, *objpatch; + size_t found = 0; +- size_t found_target = 0; ++ size_t unpatch_target_elf_num = 0; + + list_for_each_entry(objpatch, &proc->objs, list) { + +@@ -439,7 +440,8 @@ kpatch_process_associate_patches(kpatch_process_t *proc, const char *patch_id) + list); + o->kpta = patchvma->inmem.start; + o->kpfile = objpatch->kpfile; +- found_target = 1; ++ o->is_unpatch_target_elf = 1; ++ unpatch_target_elf_num++; + } + + found++; +@@ -447,7 +449,7 @@ kpatch_process_associate_patches(kpatch_process_t *proc, const char *patch_id) + } + } + +- if (patch_id && !found_target) { ++ if (patch_id && !unpatch_target_elf_num) { + fprintf(stderr, "Failed to find target patch with patch_id=%s!\n", patch_id); + return -1; + } +-- +2.27.0 + diff --git a/0095-strip-settle-libcare-dump-output-elf-file-can-not-be.patch b/0095-strip-settle-libcare-dump-output-elf-file-can-not-be.patch new file mode 100644 index 0000000..756d4e5 --- /dev/null +++ b/0095-strip-settle-libcare-dump-output-elf-file-can-not-be.patch @@ -0,0 +1,49 @@ +From 8b57818a8888c0975dbb68fcf2c5145784a29450 Mon Sep 17 00:00:00 2001 +From: Bihong Yu +Date: Mon, 26 Apr 2021 14:59:03 +0800 +Subject: [PATCH 095/118] strip: settle libcare-dump output elf file can not be + objdump bug + +Fix the problem that the output elf file of the libcare-dump can't be +objdump. + +Objdump's bfd_check_format_matches() call bfd_elf64_object_p() to check +elf format, it will check whether the sh_link and the sh_info papameter +is legal. We only change the sh_type to SHT_NOBITS of elf section +header(GElf_Shdr), if the section we don't need. Then we use +/usr/bin/strip to strip unneed section, this will no change the section +of sh_type=SHT_NOBITS, resulting in wrong sh_link and sh_info value. + +To fix this problem, we change the sh_link and the sh_info to 0 together +if the section we don't need. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_strip.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c +index 4296954..98b7f1d 100644 +--- a/src/kpatch_strip.c ++++ b/src/kpatch_strip.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.12 - strip: settle libcare-dump output elf file can't be objdump bug ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.11 - return: make every return properly other than direct-exit + * Huawei Technologies Co., Ltd. + * +@@ -212,6 +215,8 @@ static int kpatch_strip(Elf *elfin, Elf *elfout) + } else { + kpinfo("don't need it\n"); + shout.sh_type = SHT_NOBITS; ++ shout.sh_link = 0; ++ shout.sh_info = 0; + } + if (!gelf_update_shdr(scnout, &shout)) { + kperr("Failed to do gelf_update_shdr need"); +-- +2.27.0 + diff --git a/0096-kpatch_user-remove-stresstest-mode.patch b/0096-kpatch_user-remove-stresstest-mode.patch new file mode 100644 index 0000000..b97be79 --- /dev/null +++ b/0096-kpatch_user-remove-stresstest-mode.patch @@ -0,0 +1,198 @@ +From 70c12d1e41f46b2a7edbababb096aefa3c87e39e Mon Sep 17 00:00:00 2001 +From: Bihong Yu +Date: Wed, 17 Nov 2021 22:23:08 -0500 +Subject: [PATCH 096/118] kpatch_user: remove stresstest mode + +Currently we do not need stresstest mode, remove it. + +Signed-off-by: Bihong Yu +--- + src/Makefile | 10 +---- + src/kpatch_user.c | 102 ---------------------------------------------- + 2 files changed, 1 insertion(+), 111 deletions(-) + +diff --git a/src/Makefile b/src/Makefile +index 102461b..cdba73c 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -4,8 +4,7 @@ TARGETS = kpatch_gensrc \ + libcare-cc \ + libcare-client \ + libcare-ctl \ +- libcare-dump \ +- libcare-stresstest ++ libcare-dump + DEBUG = yes # comment out this line if not debug + + SRC_PATH := $(shell pwd) +@@ -50,10 +49,6 @@ libcare-ctl: kpatch_user.o kpatch_storage.o kpatch_patch.o kpatch_elf.o kpatch_p + libcare-ctl: kpatch_process.o kpatch_common.o rbtree.o kpatch_log.o arch_process.o + libcare-ctl: LDLIBS += -lelf -lrt $(LIBUNWIND_LIBS) + +-libcare-stresstest: kpatch_user-stresstest.o kpatch_storage.o kpatch_patch.o kpatch_elf.o kpatch_ptrace.o kpatch_coro.o arch_patch.o arch_elf.o arch_ptrace.o arch_coro.o +-libcare-stresstest: kpatch_process.o kpatch_common.o rbtree.o kpatch_log.o arch_process.o +-libcare-stresstest: LDLIBS += -lelf -lrt $(LIBUNWIND_LIBS) +- + libcare-client: libcare-client.o + + kpatch_strip: kpatch_strip.o kpatch_elf_objinfo.o kpatch_log.o arch_strip.o +@@ -77,9 +72,6 @@ endif + %.o: %.c deps/%.d + $(CC) $(CFLAGS) $(CFLAGS_$(*)) -o $(@) -c $(<) + +-%-stresstest.o: %.c +- $(CC) -DSTRESS_TEST=1 $(CFLAGS) $(CFLAGS_$(*)) -o $(@) -c $(<) +- + clean: + rm -rf *.o core.* deps/*.d $(TARGETS) + for f in tests/gensrc/*.s; do \ +diff --git a/src/kpatch_user.c b/src/kpatch_user.c +index 8eaec58..7a3547a 100644 +--- a/src/kpatch_user.c ++++ b/src/kpatch_user.c +@@ -399,88 +399,6 @@ cmd_update(int argc, char *argv[]) + /* send_fd */ -1); + } + +-#ifdef STRESS_TEST +- +-struct test_data { +- int option_period; +- int stat_cycle_num; +-} test_info = { .option_period = 0, .stat_cycle_num = 0 }; +- +-static int +-server_wait(int pid, int period) +-{ +- struct timespec req, rem; +- int i; +- req.tv_sec = 0; +- req.tv_nsec = 1000*1000; +- for (i=0; i 0) +- close(fd); +- fd = -1; +- if (test_info.option_period == 0) +- return 0; +- delay = rand() % test_info.option_period; +- if (server_wait(pid, delay) < 0) +- return 0; +- +- while (processes_unpatch(pid, 0, 0, NULL) < 0) +- if (server_wait(pid, 1) < 0) +- return 0; +- test_info.stat_cycle_num++; +- +- delay = rand() % test_info.option_period; +- if (server_wait(pid, delay) < 0) +- return 0; +- } +- +- return 0; +-} +- +-static int cmd_stress_test(int fd, int argc, char *argv[]) +-{ +- int child = fork(); +- if (child == 0) { +- int rv = server_stress_test(fd, argc, argv); +- exit(rv); +- } +- close(fd); +- return 0; +-} +- +-static int usage_stresstest() +-{ +- fprintf(stderr, "usage: libcare-stresstest PERIOD(ms, 0 - only patch) [STORAGE ROOT]\n"); +- return -1; +-} +- +-#endif +- + static int + server_execute_cmd(int fd, int argc, char *argv[]) + { +@@ -491,11 +409,7 @@ server_execute_cmd(int fd, int argc, char *argv[]) + if (!strcmp(cmd, "execve")) + return cmd_execve_startup(fd, argc, argv, 1); + if (!strcmp(cmd, "startup")) { +-#ifdef STRESS_TEST +- return cmd_stress_test(fd, argc, argv); +-#else + return cmd_execve_startup(fd, argc, argv, 0); +-#endif + } + if (!strcmp(cmd, "update")) + return cmd_update(argc, argv); +@@ -662,12 +576,6 @@ cmd_server(int argc, char *argv[]) + return -1; + } + +-#ifdef STRESS_TEST +- if (sscanf(argv[0], "%d", &test_info.option_period) != 1) { +- kplogerror("Can't parse period from %s\n", argv[0]); +- } +-#endif +- + sfd = server_bind_socket(argv[1]); + if (sfd < 0) + return sfd; +@@ -753,9 +661,6 @@ static int usage(const char *err) + { + if (err) + fprintf(stderr, "err: %s\n", err); +-#ifdef STRESS_TEST +- return usage_stresstest(); +-#endif + fprintf(stderr, "usage: libcare-ctl [options] [args]\n"); + fprintf(stderr, "\nOptions:\n"); + fprintf(stderr, " -v - verbose mode\n"); +@@ -804,12 +709,6 @@ int main(int argc, char *argv[]) + argc -= optind; + argv += optind; + +-#ifdef STRESS_TEST +- if (argc < 3) +- return usage("not enough arguments."); +- signal(SIGCHLD, SIG_IGN); +- return cmd_server(argc, argv); +-#else + if (argc < 1) + return usage("not enough arguments."); + +@@ -817,5 +716,4 @@ int main(int argc, char *argv[]) + return cmd_server(argc, argv); + else + return execute_cmd(argc, argv); +-#endif + } +-- +2.27.0 + diff --git a/0097-tests-Split-client-server-binary-into-devel.patch b/0097-tests-Split-client-server-binary-into-devel.patch new file mode 100644 index 0000000..49736da --- /dev/null +++ b/0097-tests-Split-client-server-binary-into-devel.patch @@ -0,0 +1,837 @@ +From 559ddd4448671ce981f0735b4e3abaa3a96591d0 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Tue, 6 Apr 2021 14:47:12 +0800 +Subject: [PATCH 097/118] tests: Split client/server binary into devel + +We need to add baseline testcases when we build rpms, +so, we need to do +1) add client/server code back +2) split client/server code into devel by individual binary files + +Signed-off-by: Chuan Zheng +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/Makefile | 8 +- + src/include/kpatch_user.h | 5 +- + src/kpatch_user.c | 335 +------------------------------------- + src/libcare-ctl.c | 46 ++++++ + src/libcare-server.c | 332 +++++++++++++++++++++++++++++++++++++ + 5 files changed, 391 insertions(+), 335 deletions(-) + create mode 100644 src/libcare-ctl.c + create mode 100644 src/libcare-server.c + +diff --git a/src/Makefile b/src/Makefile +index cdba73c..69cb5b1 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -2,6 +2,7 @@ TARGETS = kpatch_gensrc \ + kpatch_make \ + kpatch_strip \ + libcare-cc \ ++ libcare-server \ + libcare-client \ + libcare-ctl \ + libcare-dump +@@ -45,10 +46,14 @@ kpatch_make: kpatch_make.o kpatch_log.o + LIBUNWIND_LIBS := $(shell pkg-config --libs libunwind libunwind-ptrace) + + +-libcare-ctl: kpatch_user.o kpatch_storage.o kpatch_patch.o kpatch_elf.o kpatch_ptrace.o kpatch_coro.o arch_patch.o arch_elf.o arch_ptrace.o arch_coro.o ++libcare-ctl: libcare-ctl.o kpatch_user.o kpatch_storage.o kpatch_patch.o kpatch_elf.o kpatch_ptrace.o kpatch_coro.o arch_patch.o arch_elf.o arch_ptrace.o arch_coro.o + libcare-ctl: kpatch_process.o kpatch_common.o rbtree.o kpatch_log.o arch_process.o + libcare-ctl: LDLIBS += -lelf -lrt $(LIBUNWIND_LIBS) + ++libcare-server: libcare-server.o kpatch_user.o kpatch_storage.o kpatch_patch.o kpatch_elf.o kpatch_ptrace.o kpatch_coro.o arch_patch.o arch_elf.o arch_ptrace.o arch_coro.o ++libcare-server: kpatch_process.o kpatch_common.o rbtree.o kpatch_log.o arch_process.o ++libcare-server: LDLIBS += -lelf -lrt $(LIBUNWIND_LIBS) ++ + libcare-client: libcare-client.o + + kpatch_strip: kpatch_strip.o kpatch_elf_objinfo.o kpatch_log.o arch_strip.o +@@ -106,6 +111,7 @@ INSTALL ?= install + install: all + $(INSTALL) -d $(DESTDIR)/$(bindir) + $(INSTALL) -m 0500 libcare-ctl $(DESTDIR)/$(bindir)/libcare-ctl ++ $(INSTALL) -m 0500 libcare-server $(DESTDIR)/$(bindir)/libcare-server + $(INSTALL) -m 0500 libcare-client $(DESTDIR)/$(bindir)/libcare-client + $(INSTALL) -m 0500 libcare-cc $(DESTDIR)/$(bindir)/libcare-cc + $(INSTALL) -m 0500 libcare-patch-make $(DESTDIR)/$(bindir)/libcare-patch-make +diff --git a/src/include/kpatch_user.h b/src/include/kpatch_user.h +index c0b52ff..795016e 100644 +--- a/src/include/kpatch_user.h ++++ b/src/include/kpatch_user.h +@@ -7,5 +7,8 @@ + + int cmd_patch_user(int argc, char *argv[]); + int cmd_unpatch_user(int argc, char *argv[]); +- ++int execute_cmd(int argc, char *argv[]); ++int patch_user(const char *storage_path, int pid, ++ int is_just_started, ++ int send_fd); + #endif +diff --git a/src/kpatch_user.c b/src/kpatch_user.c +index 7a3547a..bc3d81c 100644 +--- a/src/kpatch_user.c ++++ b/src/kpatch_user.c +@@ -40,10 +40,6 @@ + #include "include/list.h" + #include "include/kpatch_log.h" + +-/* Global variables */ +-static char storage_dir[PATH_MAX] = "/var/lib/libcare"; +- +- + /***************************************************************************** + * Utilities. + ****************************************************************************/ +@@ -85,7 +81,7 @@ static int usage_patch(const char *err) + return err ? 0 : -1; + } + +-static int ++int + patch_user(const char *storage_path, int pid, + int is_just_started, int send_fd) + { +@@ -305,304 +301,6 @@ int cmd_info_user(int argc, char *argv[]) + return process_info(pid); + } + +- +-/* Server part. Used as a start-up notification listener. */ +-#define SERVER_STOP (1<<30) +- +-static int +-execute_cmd(int argc, char *argv[]); +- +-static int +-cmd_execve_startup(int fd, int argc, char *argv[], int is_just_started) +-{ +- int rv, pid; +- +- rv = sscanf(argv[1], "%d", &pid); +- if (rv != 1) { +- kperr("can't parse pid from %s", argv[1]); +- return -1; +- } +- +- optind = 1; +- rv = patch_user(storage_dir, pid, is_just_started, fd); +- +- if (rv < 0) +- kperr("can't patch pid %d\n", pid); +- +- return 0; +-} +- +-static void +-kill_and_wait(int pid) +-{ +- int status; +- +- (void) kill(pid, SIGTERM); +- (void) waitpid(pid, &status, 0); +-} +- +-static int childpid; +- +-static int +-cmd_run(int argc, char *argv[]) +-{ +- int pid; +- +- if (childpid) { +- kill_and_wait(childpid); +- childpid = 0; +- } +- +- pid = fork(); +- if (pid == -1) { +- kplogerror("can't fork()\n"); +- return -1; +- } +- +- if (pid == 0) { +- return execl("/bin/sh", "sh", "-c", argv[1], (char *)NULL); +- } +- +- childpid = pid; +- printf("%d\n", pid); +- return 0; +-} +- +-static int +-cmd_kill(int argc, char *argv[]) +-{ +- int pid; +- +- if (sscanf(argv[1], "%d", &pid) != 1) { +- kperr("can't parse pid from %s\n", argv[1]); +- return -1; +- } +- +- kpdebug("killing %d\n", pid); +- kill_and_wait(pid); +- +- return 0; +-} +- +-static int +-cmd_storage(int argc, char *argv[]) +-{ +- strncpy(storage_dir, argv[1], PATH_MAX - 1); +- return 0; +-} +- +-static int +-cmd_update(int argc, char *argv[]) +-{ +- return patch_user(storage_dir, /* pid */ -1, +- /* is_just_started */ 0, +- /* send_fd */ -1); +-} +- +-static int +-server_execute_cmd(int fd, int argc, char *argv[]) +-{ +- char *cmd = argv[0]; +- int old_stdout, old_stderr, rv; +- optind = 1; +- +- if (!strcmp(cmd, "execve")) +- return cmd_execve_startup(fd, argc, argv, 1); +- if (!strcmp(cmd, "startup")) { +- return cmd_execve_startup(fd, argc, argv, 0); +- } +- if (!strcmp(cmd, "update")) +- return cmd_update(argc, argv); +- if (!strcmp(cmd, "storage")) +- return cmd_storage(argc, argv); +- if (!strcmp(cmd, "stop")) +- return SERVER_STOP; +- +- old_stdout = dup3(1, 101, O_CLOEXEC); +- old_stderr = dup3(2, 102, O_CLOEXEC); +- +- (void) dup3(fd, 1, O_CLOEXEC); +- (void) dup3(fd, 2, O_CLOEXEC); +- +- +- if (!strcmp(cmd, "run")) +- rv = cmd_run(argc, argv); +- else if (!strcmp(cmd, "kill")) +- rv = cmd_kill(argc, argv); +- else +- rv = execute_cmd(argc, argv); +- +- fflush(stdout); +- fflush(stderr); +- +- (void) dup2(old_stdout, 1); +- (void) dup2(old_stderr, 2); +- +- return rv; +-} +- +-static int +-handle_client(int fd) +-{ +- char msg[4096], *argv[32], *p; +- ssize_t off = 0, r; +- int argc; +- +- do { +- r = recv(fd, msg + off, sizeof(msg) - off, 0); +- if (r == -1 && errno == EINTR) +- continue; +- +- if (r == 0) +- goto out_close; +- off += r; +- } while (off < sizeof(msg) && +- (off < 2 || +- msg[off - 2] != '\0' || +- msg[off - 1] != '\0')); +- +- if (off == sizeof(msg)) { +- kperr("possible buffer overflow\n"); +- goto out_close; +- } +- +- argv[0] = msg; +- for (p = msg, argc = 1; +- p < msg + off && argc < ARRAY_SIZE(argv); +- p++) { +- if (*p) +- continue; +- p++; +- +- argv[argc] = p; +- if (*p == '\0') +- break; +- +- argc++; +- } +- +- return server_execute_cmd(fd, argc, argv); +- +-out_close: +- close(fd); +- return 0; +-} +- +- +-static int usage_server(const char *err) +-{ +- if (err) +- fprintf(stderr, "err: %s\n", err); +- fprintf(stderr, "usage: libcare-ctl server [STORAGE ROOT]\n"); +- return -1; +-} +- +-#define LISTEN_BACKLOG 1 +-static int +-server_bind_socket(const char *path) +-{ +- int sfd = -1, rv, sockaddr_len; +- struct sockaddr_un sockaddr; +- +- /* Handle invocation by libcare.service */ +- if (path[0] == '&') { +- if (sscanf(path, "&%d", &sfd) == 0) +- return -1; +- return sfd; +- } +- +- memset(&sockaddr, 0, sizeof(sockaddr)); +- sockaddr.sun_family = AF_UNIX; +- sockaddr_len = strlen(path) + 1; +- if (sockaddr_len >= sizeof(sockaddr.sun_path)) { +- kperr("sockaddr is too long\n"); +- return -1; +- } +- +- strncpy(sockaddr.sun_path, path, sizeof(sockaddr.sun_path)); +- if (path[0] == '@') +- sockaddr.sun_path[0] = '\0'; +- +- sockaddr_len += sizeof(sockaddr.sun_family); +- +- sfd = socket(AF_UNIX, SOCK_STREAM, 0); +- if (sfd == -1) +- goto err_close; +- +- rv = bind(sfd, (struct sockaddr *)&sockaddr, +- sockaddr_len); +- if (rv == -1) +- goto err_close; +- +- rv = listen(sfd, LISTEN_BACKLOG); +- if (rv == -1) +- goto err_close; +- +- return sfd; +- +-err_close: +- if (rv < 0) +- kplogerror("can't listen on unix socket %s\n", path); +- if (sfd != -1) +- close(sfd); +- return rv; +-} +- +-static void +-kill_child(int signum) +-{ +- /* Hello Bulba my old friend... */ +- (void) signum; +- if (childpid) +- kill_and_wait(childpid); +- exit(0x80 | signum); +-} +- +-static int +-cmd_server(int argc, char *argv[]) +-{ +- int sfd = -1, cfd, rv; +- struct sigaction act; +- +- if (argc < 2) +- return usage_server("UNIX socket argument is missing"); +- +- memset(&act, 0, sizeof(act)); +- act.sa_handler = kill_child; +- act.sa_flags = SA_RESTART; +- rv = sigaction(SIGTERM, &act, NULL); +- if (rv < 0) { +- kplogerror("can't install signal handler\n"); +- return -1; +- } +- +- sfd = server_bind_socket(argv[1]); +- if (sfd < 0) +- return sfd; +- +- if (argc >= 3) +- strcpy(storage_dir, argv[2]); +- +- setlinebuf(stdout); +- +- while ((cfd = accept4(sfd, NULL, 0, SOCK_CLOEXEC)) >= 0) { +- rv = handle_client(cfd); +- if (rv < 0) +- kplogerror("server error\n"); +- +- (void) close(cfd); +- if (rv == SERVER_STOP) +- break; +- } +- +- if (childpid) +- kill_and_wait(childpid); +- +- close(sfd); +- return 0; +-} +- +- + /***************************************************************************** + * Utilities. + ****************************************************************************/ +@@ -673,7 +371,7 @@ static int usage(const char *err) + return -1; + } + +-static int ++int + execute_cmd(int argc, char *argv[]) + { + char *cmd = argv[0]; +@@ -688,32 +386,3 @@ execute_cmd(int argc, char *argv[]) + else + return usage("unknown command"); + } +- +-/* entry point */ +-int main(int argc, char *argv[]) +-{ +- int opt; +- +- while ((opt = getopt(argc, argv, "+vh")) != EOF) { +- switch (opt) { +- case 'v': +- log_level += 1; +- break; +- case 'h': +- return usage(NULL); +- default: +- return usage("unknown option"); +- } +- } +- +- argc -= optind; +- argv += optind; +- +- if (argc < 1) +- return usage("not enough arguments."); +- +- if (!strcmp(argv[0], "server")) +- return cmd_server(argc, argv); +- else +- return execute_cmd(argc, argv); +-} +diff --git a/src/libcare-ctl.c b/src/libcare-ctl.c +new file mode 100644 +index 0000000..946d28e +--- /dev/null ++++ b/src/libcare-ctl.c +@@ -0,0 +1,46 @@ ++#include ++ ++#include "include/kpatch_user.h" ++#include "include/kpatch_log.h" ++ ++static int usage(const char *err) ++{ ++ if (err) ++ fprintf(stderr, "err: %s\n", err); ++ ++ fprintf(stderr, "usage: libcare-ctl [options] [args]\n"); ++ fprintf(stderr, "\nOptions:\n"); ++ fprintf(stderr, " -v - verbose mode\n"); ++ fprintf(stderr, " -h - this message\n"); ++ fprintf(stderr, "\nCommands:\n"); ++ fprintf(stderr, " patch - apply patch to a user-space process\n"); ++ fprintf(stderr, " unpatch- unapply patch from a user-space process\n"); ++ fprintf(stderr, " info - show info on applied patches\n"); ++ return -1; ++} ++ ++/* entry point */ ++int main(int argc, char *argv[]) ++{ ++ int opt; ++ ++ while ((opt = getopt(argc, argv, "+vh")) != EOF) { ++ switch (opt) { ++ case 'v': ++ log_level += 1; ++ break; ++ case 'h': ++ return usage(NULL); ++ default: ++ return usage("unknown option"); ++ } ++ } ++ ++ argc -= optind; ++ argv += optind; ++ ++ if (argc < 1) ++ return usage("not enough arguments."); ++ ++ return execute_cmd(argc, argv); ++} +diff --git a/src/libcare-server.c b/src/libcare-server.c +new file mode 100644 +index 0000000..021aac3 +--- /dev/null ++++ b/src/libcare-server.c +@@ -0,0 +1,332 @@ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "include/kpatch_user.h" ++#include "include/kpatch_log.h" ++ ++/* Server part. Used as a start-up notification listener. */ ++#define SERVER_STOP (1<<30) ++static char storage_dir[PATH_MAX] = "/var/lib/libcare"; ++ ++static int ++cmd_execve_startup(int fd, int argc, char *argv[], int is_just_started) ++{ ++ int rv, pid; ++ ++ rv = sscanf(argv[1], "%d", &pid); ++ if (rv != 1) { ++ kperr("can't parse pid from %s", argv[1]); ++ return -1; ++ } ++ ++ optind = 1; ++ rv = patch_user(storage_dir, pid, is_just_started, fd); ++ ++ if (rv < 0) ++ kperr("can't patch pid %d\n", pid); ++ ++ return 0; ++} ++ ++ static void ++kill_and_wait(int pid) ++{ ++ int status; ++ ++ (void) kill(pid, SIGTERM); ++ (void) waitpid(pid, &status, 0); ++} ++ ++static int childpid; ++ ++ static int ++cmd_run(int argc, char *argv[]) ++{ ++ int pid; ++ ++ if (childpid) { ++ kill_and_wait(childpid); ++ childpid = 0; ++ } ++ ++ pid = fork(); ++ if (pid == -1) { ++ kplogerror("can't fork()\n"); ++ return -1; ++ } ++ ++ if (pid == 0) { ++ return execl("/bin/sh", "sh", "-c", argv[1], (char *)NULL); ++ } ++ ++ childpid = pid; ++ printf("%d\n", pid); ++ return 0; ++} ++ ++ static int ++cmd_kill(int argc, char *argv[]) ++{ ++ int pid; ++ ++ if (sscanf(argv[1], "%d", &pid) != 1) { ++ kperr("can't parse pid from %s\n", argv[1]); ++ return -1; ++ } ++ ++ kpdebug("killing %d\n", pid); ++ kill_and_wait(pid); ++ ++ return 0; ++} ++ ++ static int ++cmd_storage(int argc, char *argv[]) ++{ ++ strncpy(storage_dir, argv[1], PATH_MAX - 1); ++ return 0; ++} ++ ++ static int ++cmd_update(int argc, char *argv[]) ++{ ++ return patch_user(storage_dir, /* pid */ -1, ++ /* is_just_started */ 0, ++ /* send_fd */ -1); ++} ++ ++ static int ++server_execute_cmd(int fd, int argc, char *argv[]) ++{ ++ char *cmd = argv[0]; ++ int old_stdout, old_stderr, rv; ++ optind = 1; ++ ++ if (!strcmp(cmd, "execve")) ++ return cmd_execve_startup(fd, argc, argv, 1); ++ if (!strcmp(cmd, "startup")) { ++ return cmd_execve_startup(fd, argc, argv, 0); ++ } ++ if (!strcmp(cmd, "update")) ++ return cmd_update(argc, argv); ++ if (!strcmp(cmd, "storage")) ++ return cmd_storage(argc, argv); ++ if (!strcmp(cmd, "stop")) ++ return SERVER_STOP; ++ ++ old_stdout = dup3(1, 101, O_CLOEXEC); ++ old_stderr = dup3(2, 102, O_CLOEXEC); ++ ++ (void) dup3(fd, 1, O_CLOEXEC); ++ (void) dup3(fd, 2, O_CLOEXEC); ++ ++ ++ if (!strcmp(cmd, "run")) ++ rv = cmd_run(argc, argv); ++ else if (!strcmp(cmd, "kill")) ++ rv = cmd_kill(argc, argv); ++ else ++ rv = execute_cmd(argc, argv); ++ ++ fflush(stdout); ++ fflush(stderr); ++ ++ (void) dup2(old_stdout, 1); ++ (void) dup2(old_stderr, 2); ++ ++ return rv; ++} ++ ++ static int ++handle_client(int fd) ++{ ++ char msg[4096], *argv[32], *p; ++ ssize_t off = 0, r; ++ int argc; ++ ++ do { ++ r = recv(fd, msg + off, sizeof(msg) - off, 0); ++ if (r == -1 && errno == EINTR) ++ continue; ++ ++ if (r == 0) ++ goto out_close; ++ off += r; ++ } while (off < sizeof(msg) && ++ (off < 2 || ++ msg[off - 2] != '\0' || ++ msg[off - 1] != '\0')); ++ ++ if (off == sizeof(msg)) { ++ kperr("possible buffer overflow\n"); ++ goto out_close; ++ } ++ ++ argv[0] = msg; ++ for (p = msg, argc = 1; ++ p < msg + off && argc < ARRAY_SIZE(argv); ++ p++) { ++ if (*p) ++ continue; ++ p++; ++ ++ argv[argc] = p; ++ if (*p == '\0') ++ break; ++ ++ argc++; ++ } ++ ++ return server_execute_cmd(fd, argc, argv); ++ ++out_close: ++ close(fd); ++ return 0; ++} ++ ++static int usage_server(const char *err) ++{ ++ if (err) ++ fprintf(stderr, "err: %s\n", err); ++ fprintf(stderr, "usage: libcare-server [STORAGE ROOT]\n"); ++ return -1; ++} ++ ++#define LISTEN_BACKLOG 1 ++ static int ++server_bind_socket(const char *path) ++{ ++ int sfd = -1, rv, sockaddr_len; ++ struct sockaddr_un sockaddr; ++ ++ /* Handle invocation by libcare.service */ ++ if (path[0] == '&') { ++ if (sscanf(path, "&%d", &sfd) == 0) ++ return -1; ++ return sfd; ++ } ++ ++ memset(&sockaddr, 0, sizeof(sockaddr)); ++ sockaddr.sun_family = AF_UNIX; ++ sockaddr_len = strlen(path) + 1; ++ if (sockaddr_len >= sizeof(sockaddr.sun_path)) { ++ kperr("sockaddr is too long\n"); ++ return -1; ++ } ++ ++ strncpy(sockaddr.sun_path, path, sizeof(sockaddr.sun_path)); ++ if (path[0] == '@') ++ sockaddr.sun_path[0] = '\0'; ++ ++ sockaddr_len += sizeof(sockaddr.sun_family); ++ ++ sfd = socket(AF_UNIX, SOCK_STREAM, 0); ++ if (sfd == -1) ++ goto err_close; ++ ++ rv = bind(sfd, (struct sockaddr *)&sockaddr, ++ sockaddr_len); ++ if (rv == -1) ++ goto err_close; ++ ++ rv = listen(sfd, LISTEN_BACKLOG); ++ if (rv == -1) ++ goto err_close; ++ ++ return sfd; ++ ++err_close: ++ if (rv < 0) ++ kplogerror("can't listen on unix socket %s\n", path); ++ if (sfd != -1) ++ close(sfd); ++ return rv; ++} ++ ++ static void ++kill_child(int signum) ++{ ++ /* Hello Bulba my old friend... */ ++ (void) signum; ++ if (childpid) ++ kill_and_wait(childpid); ++ exit(0x80 | signum); ++} ++ ++ static int ++cmd_server(int argc, char *argv[]) ++{ ++ int sfd = -1, cfd, rv; ++ struct sigaction act; ++ ++ if (argc < 1) ++ return usage_server("UNIX socket argument is missing"); ++ ++ memset(&act, 0, sizeof(act)); ++ act.sa_handler = kill_child; ++ act.sa_flags = SA_RESTART; ++ rv = sigaction(SIGTERM, &act, NULL); ++ if (rv < 0) { ++ kplogerror("can't install signal handler\n"); ++ return -1; ++ } ++ ++ sfd = server_bind_socket(argv[0]); ++ if (sfd < 0) ++ return sfd; ++ ++ if (argc >= 2) ++ strcpy(storage_dir, argv[1]); ++ ++ setlinebuf(stdout); ++ ++ while ((cfd = accept4(sfd, NULL, 0, SOCK_CLOEXEC)) >= 0) { ++ rv = handle_client(cfd); ++ if (rv < 0) ++ kplogerror("server error\n"); ++ ++ (void) close(cfd); ++ if (rv == SERVER_STOP) ++ break; ++ } ++ ++ if (childpid) ++ kill_and_wait(childpid); ++ ++ close(sfd); ++ return 0; ++} ++ ++/* entry point */ ++int main(int argc, char *argv[]) ++{ ++ int opt; ++ ++ while ((opt = getopt(argc, argv, "+vh")) != EOF) { ++ switch (opt) { ++ case 'v': ++ log_level += 1; ++ break; ++ case 'h': ++ return usage_server(NULL); ++ default: ++ return usage_server("unknown option"); ++ } ++ } ++ ++ argc -= optind; ++ argv += optind; ++ ++ if (argc < 1) ++ return usage_server("not enough arguments."); ++ ++ return cmd_server(argc, argv); ++} +-- +2.27.0 + diff --git a/0098-misc-add-D_FORTIFY_SOURCE-2-and-fix-return-check.patch b/0098-misc-add-D_FORTIFY_SOURCE-2-and-fix-return-check.patch new file mode 100644 index 0000000..612b6be --- /dev/null +++ b/0098-misc-add-D_FORTIFY_SOURCE-2-and-fix-return-check.patch @@ -0,0 +1,125 @@ +From 2ffe5851cf0abf4bac4f16b878a5197b133c47b0 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Mon, 26 Apr 2021 22:44:53 +0800 +Subject: [PATCH 098/118] misc: add -D_FORTIFY_SOURCE=2 and fix return check +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +-D_FORTIFY_SOURCE=2 is need for security concern. After add it, +we saw some compile warning such as +'warning: ‘nlast’ may be used uninitialized in this function [-Wmaybe-uninitialized]' +Fix it by adding return check. + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/Makefile | 4 ++-- + src/kpatch_elf_objinfo.c | 11 ++++++++++- + src/kpatch_gensrc.c | 4 +++- + src/kpatch_ptrace.c | 10 ++++++++-- + 4 files changed, 23 insertions(+), 6 deletions(-) + +diff --git a/src/Makefile b/src/Makefile +index 69cb5b1..89644c3 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -11,7 +11,7 @@ DEBUG = yes # comment out this line if not debug + SRC_PATH := $(shell pwd) + + CC = gcc +-CFLAGS_MISC = -Wall -g -O2 -D_GNU_SOURCE -I $(SRC_PATH) ++CFLAGS_MISC = -Wall -g -O2 -D_GNU_SOURCE -D_FORTIFY_SOURCE=2 -I $(SRC_PATH) + + cc-option = $(shell if $(CC) $(CFLAGS_MISC) $(1) -S -o /dev/null -xc /dev/null \ + > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;) +@@ -29,7 +29,7 @@ VPATH = arch/x86 + endif + + ifdef DEBUG +-CFLAGS += -DDEBUG -O0 -g ++CFLAGS += -DDEBUG -O0 -g -Wno-cpp + endif + + ifeq ($(STATIC),y) +diff --git a/src/kpatch_elf_objinfo.c b/src/kpatch_elf_objinfo.c +index 8ab6dd3..bc63007 100644 +--- a/src/kpatch_elf_objinfo.c ++++ b/src/kpatch_elf_objinfo.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.12 - misc: add -D_FORTIFY_SOURCE=2 and fix return check ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.11 - return: make every return properly other than direct-exit + * Huawei Technologies Co., Ltd. + * +@@ -163,7 +166,8 @@ kpatch_objinfo_load_tls_reladyn(kpatch_objinfo *oi) + Elf64_Rela *rela; + Elf_Scn *scn_rela_dyn; + Elf_Data *data_rela_dyn; +- size_t nrela, i, nlast; ++ size_t nrela, i; ++ size_t nlast = -1; + + if (oi->tlsreladyn != NULL) + return 0; +@@ -197,6 +201,11 @@ kpatch_objinfo_load_tls_reladyn(kpatch_objinfo *oi) + nlast = i; + } + ++ if (nlast == -1) { ++ kperr("no tls symbol in .rela.dyn"); ++ return -1; ++ } ++ + oi->ntlsreladyn = nlast + 1; + + return 0; +diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c +index 602db3a..54d5c63 100644 +--- a/src/kpatch_gensrc.c ++++ b/src/kpatch_gensrc.c +@@ -62,7 +62,9 @@ static int is_func_in_patch_func_file(FILE *fp, kpstr_t *sym) + rewind(fp); + while (!feof(fp)) { + memset(buffer, 0, sizeof(buffer)); +- fgets(buffer, sizeof(buffer), fp); ++ if (fgets(buffer, sizeof(buffer), fp) == NULL) { ++ break; ++ } + if (strncmp(buffer, sym->s, sym->l) == 0) { + return 1; + } +diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c +index 2a1b8aa..e467411 100644 +--- a/src/kpatch_ptrace.c ++++ b/src/kpatch_ptrace.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.12 - misc: add -D_FORTIFY_SOURCE=2 and fix return check ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.08 - ptrace/process/patch: fix some bad code problem + * Huawei Technologies Co., Ltd. + ******************************************************************************/ +@@ -482,9 +485,12 @@ get_threadgroup_id(int tid) + return -1; + + while (!feof(fh)) { +- if (fscanf(fh, "Tgid: %d", &pid) == 1) ++ if (fscanf(fh, "Tgid: %d", &pid) == 1) { + break; +- fgets(buf, sizeof(buf), fh); ++ } ++ if (fgets(buf, sizeof(buf), fh) == NULL) { ++ break; ++ } + } + + fclose(fh); +-- +2.27.0 + diff --git a/0099-misc-fix-trivial-codex-issues-and-compile-warning.patch b/0099-misc-fix-trivial-codex-issues-and-compile-warning.patch new file mode 100644 index 0000000..aa445a6 --- /dev/null +++ b/0099-misc-fix-trivial-codex-issues-and-compile-warning.patch @@ -0,0 +1,144 @@ +From 2c609ec9376aef4969aacd32ca649db1f12143b5 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Tue, 27 Apr 2021 16:42:52 +0800 +Subject: [PATCH 099/118] misc: fix trivial codex issues and compile warning + +libcare-client/server/dump trigger some codex issues and compile +warning, fix it to make checker happy. + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_gensrc.c | 3 +++ + src/kpatch_storage.c | 1 + + src/libcare-client.c | 18 ++++++++++++++++-- + src/libcare-dump.c | 12 ++++++++++-- + 4 files changed, 30 insertions(+), 4 deletions(-) + +diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c +index 54d5c63..d7bb46e 100644 +--- a/src/kpatch_gensrc.c ++++ b/src/kpatch_gensrc.c +@@ -94,6 +94,9 @@ static inline int in_syms_list(const char *filename, kpstr_t *sym, + /* If file is empty or first line is '\n' or ' ', we think the file + * is not configured */ + if (c == EOF || c == '\n' || c == ' ') { ++ if (fclose(fp) != 0) { ++ kpfatal("Error in closing file %s\n", func_filter_config_file); ++ } + goto no_conf; + } + +diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c +index f66c723..8977329 100644 +--- a/src/kpatch_storage.c ++++ b/src/kpatch_storage.c +@@ -225,6 +225,7 @@ storage_stat_patch(kpatch_storage_t *storage, + int rv = PATCH_NOT_FOUND; + int i; + ++ memset(&buf, 0, sizeof(struct stat)); + for (i = 0; i < ARRAY_SIZE(pathtemplates); i++) { + sprintf(fname, pathtemplates[i], buildid); + +diff --git a/src/libcare-client.c b/src/libcare-client.c +index 489695e..d319841 100644 +--- a/src/libcare-client.c ++++ b/src/libcare-client.c +@@ -1,3 +1,8 @@ ++/****************************************************************************** ++ * 2021.10.12 - misc: fix trivial codex issues and compile warning ++ * Huawei Technologies Co., Ltd. ++ ******************************************************************************/ ++ + #include + #include + +@@ -8,6 +13,7 @@ + #define handle_error(errstr) do { perror(errstr); exit(EXIT_FAILURE); } while (0) + + #define DEFAULT_SOCKET "/var/run/libcare.sock" ++#define MAX_BUFLEN 16384 + + int main(int argc, char **argv) + { +@@ -34,7 +40,7 @@ int main(int argc, char **argv) + argv++; + argc--; + } +- strncpy(sockaddr.sun_path, sockpath, sizeof(sockaddr.sun_path)); ++ strncpy(sockaddr.sun_path, sockpath, sizeof(sockaddr.sun_path) - 1); + + rv = connect(sock, (const struct sockaddr *)&sockaddr, sizeof(sockaddr)); + if (rv == -1) +@@ -45,6 +51,9 @@ int main(int argc, char **argv) + buflen += strlen(argv[i]) + 1; + } + buflen++; ++ if (buflen <= 0 || buflen > MAX_BUFLEN) { ++ handle_error("buflen overflow"); ++ } + + p = buffer = malloc(buflen); + if (buffer == NULL) +@@ -63,6 +72,9 @@ int main(int argc, char **argv) + free(buffer); + buflen = 4096; + buffer = malloc(buflen); ++ if (buffer == NULL) { ++ handle_error("malloc buffer failed"); ++ } + } + + while (1) { +@@ -71,7 +83,9 @@ int main(int argc, char **argv) + break; + if (rv < 0) + handle_error("recv"); +- write(1, buffer, rv); ++ if (write(1, buffer, rv) < 0) { ++ handle_error("write failed"); ++ } + } + + close(sock); +diff --git a/src/libcare-dump.c b/src/libcare-dump.c +index 4b9fa91..47e0b90 100644 +--- a/src/libcare-dump.c ++++ b/src/libcare-dump.c +@@ -94,8 +94,12 @@ int kpatch_convert_to_elf(const char *input_file, const char *output_file) + munmap(buf, st.st_size); + + cleanup: +- close(fdi); +- close(fdo); ++ if (fdi > 0) { ++ close(fdi); ++ } ++ if (fdo > 0) { ++ close(fdo); ++ } + return ret; + } + +@@ -123,11 +127,15 @@ int main(int argc, char **argv) + convert_to_elf = 1; + break; + default: ++ free(input_file); ++ free(output_file); + usage(); + } + } + + if (input_file == NULL || output_file == NULL) { ++ free(input_file); ++ free(output_file); + usage(); + } + +-- +2.27.0 + diff --git a/0100-libcare-info-rename-Process-as-Target-instead.patch b/0100-libcare-info-rename-Process-as-Target-instead.patch new file mode 100644 index 0000000..9f6778c --- /dev/null +++ b/0100-libcare-info-rename-Process-as-Target-instead.patch @@ -0,0 +1,41 @@ +From 5fa8a5de4ff9f6d9f60518503bf9f00da1f58997 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Tue, 27 Apr 2021 16:47:10 +0800 +Subject: [PATCH 100/118] libcare-info: rename "Process" as "Target" instead + +It is not suitable for libcare-ctl info that shows the object which is +patched as "Process" since we might support multiples objects to patch. +Take "Target" instead of "Process". + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_user.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/kpatch_user.c b/src/kpatch_user.c +index bc3d81c..f318b9b 100644 +--- a/src/kpatch_user.c ++++ b/src/kpatch_user.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.12 - libcare-info: rename Process as Target instead ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.07 - libcare-ctl: remove useless codes for info interface + * Huawei Technologies Co., Ltd. + * +@@ -235,7 +238,7 @@ object_info(struct object_file *o) + } + + printf("%-25s %d\n", "Pid:", proc->pid); +- printf("%-25s %s\n", "Process:", o->name); ++ printf("%-25s %s\n", "Target:", o->name); + printf("%-25s %s\n", "Build id:", buildid); + printf("%-25s %ld\n", "Applied patch number:", o->num_applied_patch); + list_for_each_entry(applied_patch, &o->applied_patch, list) { +-- +2.27.0 + diff --git a/0101-libcare-dump-add-support-for-dumping-patch-header.patch b/0101-libcare-dump-add-support-for-dumping-patch-header.patch new file mode 100644 index 0000000..f4babf0 --- /dev/null +++ b/0101-libcare-dump-add-support-for-dumping-patch-header.patch @@ -0,0 +1,151 @@ +From 71ed09bd6065070962904c3706155529084581d1 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Tue, 27 Apr 2021 22:05:57 +0800 +Subject: [PATCH 101/118] libcare-dump: add support for dumping patch header + +Sometimes we need dump patch header, add support for it. +The usage shows: +Usage: +Display patch information and dump elf-format patch +libcare-dump -c -i -o +libcare-dump -H -i + +Options: + -H - Display kpatch headers + -c - convert to elf + -i - input kpatch file + -o - output elf file + +Signed-off-by: Chuan Zheng +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/libcare-dump.c | 81 +++++++++++++++++++++++++++++++++++++--------- + 1 file changed, 65 insertions(+), 16 deletions(-) + +diff --git a/src/libcare-dump.c b/src/libcare-dump.c +index 47e0b90..d7b4092 100644 +--- a/src/libcare-dump.c ++++ b/src/libcare-dump.c +@@ -32,11 +32,52 @@ + + void usage() + { +- printf("Usage: libcare-dump -c -i -o \n"); +- printf(" -c convert kpatch to elf\n"); +- printf("\n"); +- printf(" libcare-dump provide some auxiliary tools for help.\n"); +- exit(EXIT_FAILURE); ++ printf("Usage:\n"); ++ printf("Display patch information and dump elf-format patch\n"); ++ printf("libcare-dump -c -i -o \n"); ++ printf("libcare-dump -H -i \n"); ++ printf("\nOptions:\n"); ++ printf(" -H - Display kpatch headers\n"); ++ printf(" -c - convert to elf\n"); ++ printf(" -i - input kpatch file\n"); ++ printf(" -o - output elf file\n"); ++} ++ ++int kpatch_dump_kpatch_header(const char *input_file) ++{ ++ int fdi = -1; ++ int ret = -1; ++ int elf_size; ++ struct stat st; ++ struct kpatch_file kp; ++ ++ fdi = open(input_file, O_RDONLY); ++ if (fdi == -1) { ++ printf("Can't open kpatch file '%s'\n", input_file); ++ return -1; ++ } ++ if (fstat(fdi, &st) == -1) { ++ printf("Can't stat kpatch file\n"); ++ goto cleanup; ++ } ++ /* input kpatch file must bigger than sizeof(struct kpatch_file) */ ++ elf_size = st.st_size - sizeof(struct kpatch_file); ++ if (elf_size <= 0) { ++ printf("Invalid kpatch file '%s'\n", input_file); ++ goto cleanup; ++ } ++ ++ ret = read(fdi, &kp, sizeof(struct kpatch_file)); ++ printf("%-25s %s\n", "Patch Name:", input_file); ++ printf("%-25s %s\n", "Magic:", kp.magic); ++ printf("%-25s %s\n", "Patch id:", kp.id); ++ printf("%-25s %s\n", "buildid:", kp.buildid); ++ ++ cleanup: ++ if (fdi > 0) { ++ close(fdi); ++ } ++ return ret; + } + + int kpatch_convert_to_elf(const char *input_file, const char *output_file) +@@ -108,15 +149,15 @@ int main(int argc, char **argv) + int opt; + int ret = -1; + int convert_to_elf = 0; ++ int dump_kpatch_header = 0; + char *input_file = NULL; + char *output_file = NULL; + +- if (argc < 6) { +- usage(); +- } +- +- while ((opt = getopt(argc, argv, "i:o:c::")) != -1) { ++ while ((opt = getopt(argc, argv, "H::i:o:c::")) != -1) { + switch (opt) { ++ case 'H': ++ dump_kpatch_header = 1; ++ break; + case 'i': + input_file = strdup(optarg); + break; +@@ -127,24 +168,32 @@ int main(int argc, char **argv) + convert_to_elf = 1; + break; + default: +- free(input_file); +- free(output_file); + usage(); ++ return -1; + } + } + +- if (input_file == NULL || output_file == NULL) { +- free(input_file); +- free(output_file); ++ if (input_file == NULL) { ++ usage(); ++ goto out; ++ } ++ ++ if (dump_kpatch_header) { ++ ret = kpatch_dump_kpatch_header(input_file); ++ goto out; ++ } ++ ++ if (output_file == NULL) { + usage(); ++ goto out; + } + + if (convert_to_elf) { + ret = kpatch_convert_to_elf(input_file, output_file); + } + ++out: + free(input_file); + free(output_file); + return ret; + } +- +-- +2.27.0 + diff --git a/0102-codedex-fix-codedex-warning.patch b/0102-codedex-fix-codedex-warning.patch new file mode 100644 index 0000000..bdd1a8c --- /dev/null +++ b/0102-codedex-fix-codedex-warning.patch @@ -0,0 +1,36 @@ +From 196076520bc463f515b342a1205ae1e54ea1d300 Mon Sep 17 00:00:00 2001 +From: Jin Yan +Date: Thu, 6 May 2021 11:18:13 +0800 +Subject: [PATCH 102/118] codedex: fix codedex warning + +fix codedex warning for: + src/kpatch_coro.c + src/kpatch_gensrc.c + src/libcare-server.c + +Signed-off-by: Jin Yan +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_gensrc.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c +index d7bb46e..e6bea59 100644 +--- a/src/kpatch_gensrc.c ++++ b/src/kpatch_gensrc.c +@@ -798,6 +798,10 @@ static int cblock_cmp(struct cblock *b0, struct cblock *b1, int flags) + s0 = cline(b0->f, i0); t0 = ctype(b0->f, i0); + s1 = cline(b1->f, i1); t1 = ctype(b1->f, i1); + ++ if (csect(b0->f, i0) == NULL || csect(b1->f, i1) == NULL) { ++ kpfatal("Could not find vaild section!\n"); ++ } ++ + /* .comm directive implies .bss section (?). saw such a symbol put to .rodata by gcc! */ + if ((flags & CBLOCK_CMP_SECT) && strcmp(csect(b0->f, i0)->name, csect(b1->f, i1)->name) && + t0 != DIRECTIVE_LOCAL && t0 != DIRECTIVE_COMM && t1 != DIRECTIVE_LOCAL && t1 != DIRECTIVE_COMM) +-- +2.27.0 + diff --git a/0103-unpatch-enhance-error-handling-and-log-records-of-ob.patch b/0103-unpatch-enhance-error-handling-and-log-records-of-ob.patch new file mode 100644 index 0000000..cf80a96 --- /dev/null +++ b/0103-unpatch-enhance-error-handling-and-log-records-of-ob.patch @@ -0,0 +1,110 @@ +From 8450ba322b4bc1c6eed8e6b576cea9ddd5e93e0d Mon Sep 17 00:00:00 2001 +From: Hao Wang +Date: Wed, 12 May 2021 11:03:00 +0800 +Subject: [PATCH 103/118] unpatch: enhance error handling and log records of + object_unapply_patch + +1. exit if kpatch_process_mem_read return 0 +2. add error log records +3. record hunk address info when unpatching + +Signed-off-by: Hao Wang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_patch.c | 12 ++++++++++-- + src/kpatch_ptrace.c | 21 +++++++++++++-------- + 2 files changed, 23 insertions(+), 10 deletions(-) + +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index 0f01663..fc961fc 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.13 - unpatch: enhance error handling and log records of object_unapply_patch ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.12 - process: add a flag to mark unpatch target elf + * Huawei Technologies Co., Ltd. + * +@@ -629,7 +632,6 @@ object_unapply_patch(struct object_file *o, int check_flag) + return ret; + + orig_code_addr = o->kpta + o->kpfile.patch->user_undo; +- + for (i = 0; i < o->ninfo; i++) { + if (is_new_func(&o->info[i])) + continue; +@@ -637,16 +639,22 @@ object_unapply_patch(struct object_file *o, int check_flag) + if (check_flag && !(o->info[i].flags & PATCH_APPLIED)) + continue; + ++ kpinfo("restore origin code from 0x%lx to 0x%lx\n", ++ orig_code_addr + i * HUNK_SIZE, o->info[i].daddr); + ret = kpatch_process_memcpy(o->proc, + o->info[i].daddr, + orig_code_addr + i * HUNK_SIZE, + HUNK_SIZE); + /* XXX(pboldin) We are in deep trouble here, handle it + * by restoring the patch back */ +- if (ret < 0) ++ if (ret < 0) { ++ kplogerror("Failed to restore origin code momery\n"); + return ret; ++ } + } + ++ /* unmap allocated patch's vma */ ++ kpinfo("munmap kpatch memory from 0x%lx\n", o->kpta); + ret = kpatch_munmap_remote(proc2pctx(o->proc), + o->kpta, + o->kpfile.size); +diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c +index e467411..932bdd1 100644 +--- a/src/kpatch_ptrace.c ++++ b/src/kpatch_ptrace.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.13 - unpatch: enhance error handling and log records of object_unapply_patch ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.12 - misc: add -D_FORTIFY_SOURCE=2 and fix return check + * Huawei Technologies Co., Ltd. + * +@@ -572,21 +575,23 @@ kpatch_process_memcpy(kpatch_process_t *proc, + + buf = malloc(size); + if (buf == NULL) { +- kpdebug("FAIL\n"); ++ kplogerror("Failed to malloc buffer\n"); + return -1; + } + + ret = kpatch_process_mem_read(proc, src, buf, size); +- if (ret > 0) +- ret = kpatch_process_mem_write(proc, buf, dst, size); ++ if (ret != size) { ++ kplogerror("Failed to read process memory (ret = %d)\n", ret); ++ goto cleanup; ++ } + +- if (ret < 0) +- kpdebug("FAIL\n"); +- else +- kpdebug("OK\n"); ++ ret = kpatch_process_mem_write(proc, buf, dst, size); ++ if (ret < 0) { ++ kplogerror("Failed to write process memory\n"); ++ } + ++cleanup: + free(buf); +- + return ret; + } + +-- +2.27.0 + diff --git a/0104-test-adapt-UT-tests-in-x86_64.patch b/0104-test-adapt-UT-tests-in-x86_64.patch new file mode 100644 index 0000000..e96a1a1 --- /dev/null +++ b/0104-test-adapt-UT-tests-in-x86_64.patch @@ -0,0 +1,276 @@ +From 0a67bc2e55a27338f6af0080ee6c8b6b227cee09 Mon Sep 17 00:00:00 2001 +From: Bihong Yu +Date: Wed, 9 Jun 2021 10:46:02 +0800 +Subject: [PATCH 104/118] test: adapt UT tests in x86_64 + +Currently, UT tests only support run-build and run-patchlevel test-set. +And UT tests only can run in x86_64. Because the OBS compileEnv add some +security compilation options by default, the UT test can't build and run +at OBS compileEnv. + +This patch doing following things: +1. support apply patch for tls share in x86_64; +2. adapt UT tests makefile; +3. rename desc_ to desc for patchlevel to support make clean; + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/arch/x86/arch_strip.c | 117 ++++++++++++++++++++++++++++++- + tests/Makefile | 5 +- + tests/makefile-patch.inc | 4 +- + tests/patchlevel/{desc_ => desc} | 0 + tests/patchlevel/makefile.first | 1 + + tests/patchlevel/makefile.second | 1 + + tests/run_tests.sh | 6 +- + 7 files changed, 126 insertions(+), 8 deletions(-) + rename tests/patchlevel/{desc_ => desc} (100%) + +diff --git a/src/arch/x86/arch_strip.c b/src/arch/x86/arch_strip.c +index 3c0bbf5..64716c1 100644 +--- a/src/arch/x86/arch_strip.c ++++ b/src/arch/x86/arch_strip.c +@@ -34,6 +34,119 @@ + #define SECTION_OFFSET_FOUND 0x0 + #define SECTION_NOT_FOUND 0x1 + ++/* Find Global Offset Table entry with the address of the TLS-variable ++ * specified by the `tls_offset`. Dynamic linker allocates Thread-Local storage ++ * as described in ABI and places the correct offset at that address in GOT. We ++ * then read this offset and use it in our jmp table. ++ */ ++static unsigned long ++objinfo_find_tls_got_by_offset(kpatch_objinfo *oi, ++ unsigned long tls_offset) ++{ ++ Elf64_Rela *rela; ++ size_t nrela; ++ ++ if (kpatch_objinfo_load_tls_reladyn(oi) < 0) ++ kpfatalerror("kpatch_objinfo_load_tls_reladyn"); ++ ++ rela = oi->tlsreladyn; ++ nrela = oi->ntlsreladyn; ++ ++ for (; nrela != 0; rela++, nrela--) { ++ if (!kpatch_is_tls_rela(rela)) ++ continue; ++ ++ if (ELF64_R_SYM(rela->r_info) == 0 && ++ rela->r_addend == tls_offset) ++ return rela->r_offset; ++ } ++ ++ kpfatalerror("cannot find GOT entry for %lx\n", tls_offset); ++ return 0; ++} ++ ++static unsigned long ++objinfo_find_tls_got_by_symname(kpatch_objinfo *oi, ++ const char *symname) ++{ ++ Elf64_Rela *rela; ++ size_t nrela; ++ Elf64_Sym sym; ++ ++ if (kpatch_objinfo_load_tls_reladyn(oi) < 0) ++ kpfatalerror("kpatch_objinfo_load_tls_reladyn"); ++ ++ rela = oi->tlsreladyn; ++ nrela = oi->ntlsreladyn; ++ ++ for (; nrela != 0; rela++, nrela--) { ++ const char *origname; ++ ++ if (!kpatch_is_tls_rela(rela)) ++ continue; ++ ++ if (ELF64_R_SYM(rela->r_info) == 0 || ++ rela->r_addend != 0) ++ continue; ++ ++ if (!gelf_getsym(oi->dynsymtab, ELF64_R_SYM(rela->r_info), &sym)) ++ kpfatalerror("gelf_getsym"); ++ ++ origname = kpatch_objinfo_strptr(oi, DYNAMIC_NAME, ++ sym.st_name); ++ ++ if (strcmp(origname, symname) == 0 && ++ rela->r_addend == 0) ++ return rela->r_offset; ++ } ++ ++ kpfatalerror("cannot find GOT entry for %s\n", symname); ++ return 0; ++} ++ ++static inline int ++update_reloc_with_tls_got_entry(kpatch_objinfo *origbin, ++ kpatch_objinfo *patch, ++ GElf_Rela *rela, ++ GElf_Sym *sym) ++{ ++ unsigned long got_offset; ++ char *symname, *tmp; ++ ++ symname = (char *)kpatch_objinfo_strptr(patch, SYMBOL_NAME, sym->st_name); ++ ++ tmp = strchr(symname, '@'); ++ if (tmp != NULL) { ++ *tmp = '\0'; ++ } ++ ++ if (GELF_ST_BIND(sym->st_info) == STB_LOCAL || ++ sym->st_shndx != SHN_UNDEF) { ++ /* This symbol should have a TPOFF64 entry in the GOT with ++ * the offset of sym->st_value. Find GOT entry for this TLS ++ * variable. Make st_value point to that GOT entry and mark it ++ * with flag. ++ */ ++ ++ got_offset = objinfo_find_tls_got_by_offset(origbin, sym->st_value); ++ } else if (GELF_ST_BIND(sym->st_info) == STB_GLOBAL && ++ sym->st_shndx == SHN_UNDEF) { ++ /* This is a GLOBAL symbol we require from some other binary. ++ * It has a GOT entry that is referenced by the symbol name, ++ * not the offset. ++ */ ++ ++ got_offset = objinfo_find_tls_got_by_symname(origbin, symname); ++ } ++ ++ if (rela->r_addend != got_offset) { ++ kpinfo("Changing GOTTPOFF symbol %s from %lx to %lx\n", ++ symname, rela->r_addend, got_offset); ++ rela->r_addend = got_offset; ++ } ++ return 0; ++} ++ + /* Update relocation against TLS symbol. + * + * Thread-Local Storage variables require special care because they are +@@ -69,7 +182,6 @@ kpatch_arch_fixup_rela_update_tls(kpatch_objinfo *origbin, + unsigned char *text) + { + switch (GELF_R_TYPE(rela->r_info)) { +- case R_X86_64_GOTTPOFF: + case R_X86_64_TPOFF32: { + const char *symname; + int rv; +@@ -96,6 +208,9 @@ kpatch_arch_fixup_rela_update_tls(kpatch_objinfo *origbin, + return 0; + } + ++ case R_X86_64_GOTTPOFF: ++ return update_reloc_with_tls_got_entry(origbin, patch, rela, sym); ++ + case R_X86_64_DTPOFF32: + case R_X86_64_DTPOFF64: + case R_X86_64_DTPMOD64: +diff --git a/tests/Makefile b/tests/Makefile +index 98823f0..cf44479 100644 +--- a/tests/Makefile ++++ b/tests/Makefile +@@ -19,6 +19,7 @@ clean: $(addprefix clean-,$(SUBDIRS)) + $(CURDIR)/lpmake-patchroot \ + $(CURDIR)/lpmakelevel-patchroot + rm -f fastsleep.so ++ make -C execve clean + + clean-%: FORCE + make -C $* clean +@@ -39,7 +40,7 @@ lpmakelevel: $(LPMAKE_TGTS) + + lpmake-%: export LPMAKE_PATCHROOT := lpmake + lpmake-%: FORCE +- cd $*; $(CURDIR)/../src/libcare-patch-make --clean *.diff ++ cd $*; $(CURDIR)/../src/libcare-patch-make --clean *.diff -i 0001 + + lpmake-patchroot: lpmake + mkdir -p $(CURDIR)/lpmake-patchroot +@@ -91,6 +92,6 @@ run-lpmakelevel: RUNTESTSFLAGS := -d lpmake -p $(CURDIR)/lpmakelevel-patchroot + run-lpmakelevel: fastsleep.so + run-lpmakelevel: run-startup-lpmakelevel + +-run: run-build run-patchlevel run-lpmake run-lpmakelevel ++run: run-build run-patchlevel # run-lpmake run-lpmakelevel + + FORCE: +diff --git a/tests/makefile-patch.inc b/tests/makefile-patch.inc +index e3be242..3ba4a3c 100644 +--- a/tests/makefile-patch.inc ++++ b/tests/makefile-patch.inc +@@ -16,9 +16,11 @@ + $(KPATCH_STRIP) --rel-fixup $(word 2,$^) $@ + $(KPATCH_STRIP) --undo-link $(word 2,$^) $@ + ++PATCHID ?= 0001 ++ + %.kpatch: %.undo-link % + buildid=$(call get_buildid,$(word 2,$^)) && \ +- $(KPATCH_MAKE) -b $${buildid} -i 0001 $< -o $@ && \ ++ $(KPATCH_MAKE) -b $${buildid} -i $(PATCHID) $< -o $@ && \ + cp -fs $@ $(OBJDIR)/$${buildid}.kpatch + + $(OBJDIR)/%.o: $(OBJDIR)/%.s +diff --git a/tests/patchlevel/desc_ b/tests/patchlevel/desc +similarity index 100% +rename from tests/patchlevel/desc_ +rename to tests/patchlevel/desc +diff --git a/tests/patchlevel/makefile.first b/tests/patchlevel/makefile.first +index c0bde58..0a6d127 100644 +--- a/tests/patchlevel/makefile.first ++++ b/tests/patchlevel/makefile.first +@@ -1,5 +1,6 @@ + + HAS_LIBRARY := 1 + DIFFEXT := diff ++PATCHID := 0001 + + include ../makefile.inc +diff --git a/tests/patchlevel/makefile.second b/tests/patchlevel/makefile.second +index 7f8ae25..4ad1f03 100644 +--- a/tests/patchlevel/makefile.second ++++ b/tests/patchlevel/makefile.second +@@ -1,5 +1,6 @@ + + HAS_LIBRARY := 1 + DIFFEXT := diff2 ++PATCHID := 0002 + + include ../makefile.inc +diff --git a/tests/run_tests.sh b/tests/run_tests.sh +index ca65f9d..2512963 100755 +--- a/tests/run_tests.sh ++++ b/tests/run_tests.sh +@@ -72,7 +72,7 @@ kill_reap() { + } + + libcare_ctl() { +- $TIME $LIBCARE_CLIENT $SOCKPATH "$@" ++ time $LIBCARE_CLIENT $SOCKPATH "$@" + } + + grep_tail() { +@@ -222,7 +222,7 @@ test_unpatch_files() { + cat ${outfile}_patched + + echo "============unpatching===============" >>$logfile +- libcare_ctl unpatch-user -p $pid \ ++ libcare_ctl unpatch-user -p $pid -i 0001 \ + >>$logfile 2>&1 || : + + sleep 2 +@@ -533,8 +533,6 @@ env_init() { + LIBCARE_SERVER=$KPTOOLS/libcare-server + LIBCARE_CLIENT=$KPTOOLS/libcare-client + STAGE=${STAGE-$TESTDIR/stage/tmp} +- +- TIME=$(which time) + } + + main() { +-- +2.27.0 + diff --git a/0105-arch.desc-delete-arch.desc.patch b/0105-arch.desc-delete-arch.desc.patch new file mode 100644 index 0000000..0aeaab1 --- /dev/null +++ b/0105-arch.desc-delete-arch.desc.patch @@ -0,0 +1,37 @@ +From a6bcd32eec837bc8750b77b4b21fe8dbe4806594 Mon Sep 17 00:00:00 2001 +From: Bihong Yu +Date: Sat, 20 Nov 2021 04:00:59 -0500 +Subject: [PATCH 105/118] arch.desc: delete arch.desc + +Make command will generate arch.desc automatically. +So we do not need it anymore. + +Signed-off-by: Bihong Yu +--- + src/Makefile | 1 + + src/arch.desc | 1 - + 2 files changed, 1 insertion(+), 1 deletion(-) + delete mode 100644 src/arch.desc + +diff --git a/src/Makefile b/src/Makefile +index 89644c3..ace1029 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -79,6 +79,7 @@ endif + + clean: + rm -rf *.o core.* deps/*.d $(TARGETS) ++ rm -rf arch.desc + for f in tests/gensrc/*.s; do \ + rm -f $$f.test; \ + done +diff --git a/src/arch.desc b/src/arch.desc +deleted file mode 100644 +index 9647742..0000000 +--- a/src/arch.desc ++++ /dev/null +@@ -1 +0,0 @@ +-aarch64 +-- +2.27.0 + diff --git a/0106-test-fix-some-problems-in-UT-tests.patch b/0106-test-fix-some-problems-in-UT-tests.patch new file mode 100644 index 0000000..540b173 --- /dev/null +++ b/0106-test-fix-some-problems-in-UT-tests.patch @@ -0,0 +1,62 @@ +From 10b70a9fdc853df99c96766151455d9ab07b94d4 Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Tue, 15 Jun 2021 14:50:29 +0800 +Subject: [PATCH 106/118] test: fix some problems in UT tests + +This patch do following things: +1. sleep() funciton define in header file, so replace + to ; +2. in euleros virtual version, $(which time) will return errno -1, we + use time command directly; +3. in UT tests, we expect gcc optimization level is -O0, so clearly + indicate the optimization level; + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + tests/makefile-patch.inc | 4 ++-- + tests/tls_simple/tls_simple.c | 7 ++++++- + 2 files changed, 8 insertions(+), 3 deletions(-) + +diff --git a/tests/makefile-patch.inc b/tests/makefile-patch.inc +index 3ba4a3c..bd84ca5 100644 +--- a/tests/makefile-patch.inc ++++ b/tests/makefile-patch.inc +@@ -27,14 +27,14 @@ $(OBJDIR)/%.o: $(OBJDIR)/%.s + $(AS) $< -o $@ + + $(OBJDIR)/%.orig.s: %.c +- $(CC) $< -S -o - $(CFLAGS) | \ ++ $(CC) $< -S -O0 -o - $(CFLAGS) | \ + $(KPATCH_GENSRC) --dbg-filter --test-mode --os=rhel6 -i - -o $@ + + DIFFEXT ?= diff + + $(OBJDIR)/%.patched.s: %.c %.$(DIFFEXT) + patch -b -p1 < $(word 2,$^) +- $(CC) $< -S -o - $(CFLAGS) | \ ++ $(CC) $< -S -O0 -o - $(CFLAGS) | \ + $(KPATCH_GENSRC) --dbg-filter --test-mode --os=rhel6 -i - -o $@ + mv $<.orig $< + +diff --git a/tests/tls_simple/tls_simple.c b/tests/tls_simple/tls_simple.c +index fd3326a..6914ac0 100644 +--- a/tests/tls_simple/tls_simple.c ++++ b/tests/tls_simple/tls_simple.c +@@ -1,7 +1,12 @@ ++/****************************************************************************** ++ * 2021.10.13 - test: fix some problems in UT tests ++ * Huawei Technologies Co., Ltd. ++ ******************************************************************************/ ++ + + #include +-#include + #include ++#include + + int *p; + int __thread v; +-- +2.27.0 + diff --git a/0107-ptrace-check-pread-return-value.patch b/0107-ptrace-check-pread-return-value.patch new file mode 100644 index 0000000..468f504 --- /dev/null +++ b/0107-ptrace-check-pread-return-value.patch @@ -0,0 +1,148 @@ +From 990999cce0249d8291b8981a386c35d70e62eaf3 Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Wed, 16 Jun 2021 17:04:42 +0800 +Subject: [PATCH 107/118] ptrace: check pread return value + +We need to check whether pread() return value meets expectations, to +avoid some incorrect memory access. Such as, in elf_object_load_dynsym() +function, we not check pread() return value and the return value less +than strtab_sz + symtab_sz, then qsort_r() accessing incorrect memory, +causing libcare-ctl coredump, the backtrace as following: +(gdb) bt + #0 strcmp () at ../sysdeps/aarch64/strcmp.S:170 + #1 0x0000ffffbc510fe4 in msort_with_tmp (p=0xffffef9a7740, + b=0xaaaaf4ce7768, n=8) at msort.c:105 + #2 0x0000ffffbc511058 in msort_with_tmp (n=2, b=0xaaaaf4ce7768, + p=0xffffef9a7740) at msort.c:108 + #3 msort_with_tmp (p=0xffffef9a7740, b=0xaaaaf4ce7750, n=16) at + msort.c:54 + #4 0x0000ffffbc511068 in msort_with_tmp (n=3, b=0xaaaaf4ce7750, + p=0xffffef9a7740) at msort.c:108 + #5 msort_with_tmp (p=0xffffef9a7740, b=0xaaaaf4ce7750, n=32) at + msort.c:53 + #6 0x0000ffffbc511068 in msort_with_tmp (n=7, b=0xaaaaf4ce7750, + p=0xffffef9a7740) at msort.c:108 + #7 msort_with_tmp (p=0xffffef9a7740, b=0xaaaaf4ce7750, n=4376) at + msort.c:53 + #8 0x0000ffffbc511068 in msort_with_tmp (n=15, b=0xaaaaf4ce7750, + p=0xffffef9a7740) at msort.c:108 + #9 msort_with_tmp (p=0xffffef9a7740, b=0xaaaaf4ce7750, + n=3096302053228960) at msort.c:53 + #10 0x0000ffffbc511068 in msort_with_tmp (n=30, b=0xaaaaf4ce7750, + p=0xffffef9a7740) at msort.c:108 + #11 msort_with_tmp (p=0xffffef9a7740, b=0xaaaaf4ce7750, n=0) at + msort.c:53 + #12 0x0000ffffbc511068 in msort_with_tmp (n=60, b=0xaaaaf4ce7750, + p=0xffffef9a7740) at msort.c:108 + #13 msort_with_tmp (p=0xffffef9a7740, b=0xaaaaf4ce7750, n=166112) at + msort.c:53 + #14 0x0000ffffbc511068 in msort_with_tmp (n=121, b=0xaaaaf4ce7750, + p=0xffffef9a7740) at msort.c:108 + #15 msort_with_tmp (p=0xffffef9a7740, b=0xaaaaf4ce7750, + n=187651228357184) at msort.c:53 + #16 0x0000ffffbc511068 in msort_with_tmp (n=242, b=0xaaaaf4ce7750, + p=0xffffef9a7740) at msort.c:108 + #17 msort_with_tmp (p=0xffffef9a7740, b=0xaaaaf4ce7750, n=584115552371) + at msort.c:53 + #18 0x0000ffffbc511068 in msort_with_tmp (n=485, b=0xaaaaf4ce7750, + p=0xffffef9a7740) at msort.c:108 + #19 msort_with_tmp (p=0xffffef9a7740, b=0xaaaaf4ce7750, + n=281474701621104) at msort.c:53 + #20 0x0000ffffbc511224 in msort_with_tmp (n=970, b=0xaaaaf4ce7750, + p=0xffffef9a77a0) at msort.c:45 + #21 __GI___qsort_r (b=b@entry=0xaaaaf4ce7750, n=n@entry=970, + s=s@entry=24, cmp=cmp@entry=0xaaaac20369f0 , + arg=arg@entry=0xaaaaf4ced240) at msort.c:297 + #22 0x0000aaaac2036c58 in elf_object_load_dynsym (o=0xaaaaf4c21de0) at + kpatch_elf.c:609 + #23 0x0000aaaac2037d68 in kpatch_object_load_dynsym + (proc=proc@entry=0xffffef9a7890) at kpatch_elf.c:639 + #24 0x0000aaaac2035f8c in process_patch (pid=pid@entry=2339209, + _data=_data@entry=0xffffef9a79b0) at kpatch_patch.c:624 + #25 0x0000aaaac2032f44 in processes_do (data=0xffffef9a79b0, + callback=, pid=2339209) at kpatch_user.c:321 + #26 processes_patch (send_fd=-1, is_just_started=0, is_lazy_check=1, + pid=2339209, storage=0xffffef9a7988) at kpatch_user.c:53 + #27 patch_user (storage_path=, pid=2339209, + is_lazy_check=1, is_just_started=0, send_fd=-1) at kpatch_user.c:85 + #28 0x0000ffffbc4fcf80 in __libc_start_main (main=0x0, argc=0, argv=0x0, + init=, fini=, rtld_fini=, + stack_end=) at ../csu/libc-start.c:308 + #29 0x0000aaaac20326d4 in _start () + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_process.c | 2 +- + src/kpatch_ptrace.c | 21 ++++++++++++++------- + 2 files changed, 15 insertions(+), 8 deletions(-) + +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index 837cadf..9a05429 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -199,7 +199,7 @@ process_get_object_type(kpatch_process_t *proc, + vma->start, + buf, + bufsize); +- if (ret <= SELFMAG) ++ if (ret < 0) + return -1; + + if (type == OBJECT_KPATCH) { +diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c +index 932bdd1..424a05c 100644 +--- a/src/kpatch_ptrace.c ++++ b/src/kpatch_ptrace.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.13 - ptrace: check pread return value ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.13 - unpatch: enhance error handling and log records of object_unapply_patch + * Huawei Technologies Co., Ltd. + * +@@ -40,7 +43,11 @@ kpatch_process_mem_read(kpatch_process_t *proc, + void *dst, + size_t size) + { +- return pread(proc->memfd, dst, size, (off_t)src); ++ size_t r; ++ ++ r = pread(proc->memfd, dst, size, (off_t)src); ++ ++ return r != size ? -1 : 0; + } + + static int +@@ -131,13 +138,13 @@ int kpatch_process_mem_iter_peek(struct process_mem_iter *iter, + if (iter->buflen == 0 || + remote_addr < iter->base || + remote_addr + size > iter->base + iter->buflen) { +- int ret; ++ size_t ret; + + iter->base = remote_addr; +- ret = kpatch_process_mem_read(iter->proc, +- remote_addr, +- iter->buffer, +- iter->buffer_size); ++ ret = pread(iter->proc->memfd, ++ iter->buffer, ++ iter->buffer_size, ++ (off_t)remote_addr); + if (ret < size) + return -1; + iter->buflen = ret; +@@ -580,7 +587,7 @@ kpatch_process_memcpy(kpatch_process_t *proc, + } + + ret = kpatch_process_mem_read(proc, src, buf, size); +- if (ret != size) { ++ if (ret < 0) { + kplogerror("Failed to read process memory (ret = %d)\n", ret); + goto cleanup; + } +-- +2.27.0 + diff --git a/0108-libcare-dump-fix-fd-leak-in-libcare-dump.patch b/0108-libcare-dump-fix-fd-leak-in-libcare-dump.patch new file mode 100644 index 0000000..50fa698 --- /dev/null +++ b/0108-libcare-dump-fix-fd-leak-in-libcare-dump.patch @@ -0,0 +1,45 @@ +From fc5293d0de296603f90f1501d2d82f826d1c8b57 Mon Sep 17 00:00:00 2001 +From: Zhang Bo +Date: Sat, 26 Jun 2021 16:41:49 +0800 +Subject: [PATCH 108/118] libcare-dump: fix fd leak in libcare-dump + +Fix fd leak when it is 0 in func kpatch_convert_to_elf() +and kpatch_dump_kpatch_header(). + +Signed-off-by: Zhang Bo +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/libcare-dump.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/libcare-dump.c b/src/libcare-dump.c +index d7b4092..c649696 100644 +--- a/src/libcare-dump.c ++++ b/src/libcare-dump.c +@@ -74,7 +74,7 @@ int kpatch_dump_kpatch_header(const char *input_file) + printf("%-25s %s\n", "buildid:", kp.buildid); + + cleanup: +- if (fdi > 0) { ++ if (fdi >= 0) { + close(fdi); + } + return ret; +@@ -135,10 +135,10 @@ int kpatch_convert_to_elf(const char *input_file, const char *output_file) + munmap(buf, st.st_size); + + cleanup: +- if (fdi > 0) { ++ if (fdi >= 0) { + close(fdi); + } +- if (fdo > 0) { ++ if (fdo >= 0) { + close(fdo); + } + return ret; +-- +2.27.0 + diff --git a/0109-refactor-avoid-potential-file-leak-in-main.patch b/0109-refactor-avoid-potential-file-leak-in-main.patch new file mode 100644 index 0000000..2278348 --- /dev/null +++ b/0109-refactor-avoid-potential-file-leak-in-main.patch @@ -0,0 +1,89 @@ +From b24f5aab20e2f23a025efdd38c2bbe905fa480b1 Mon Sep 17 00:00:00 2001 +From: Zhang Bo +Date: Sat, 26 Jun 2021 17:07:48 +0800 +Subject: [PATCH 109/118] refactor: avoid potential file leak in main + +refactor: it uses exit in main(), which is not allowed due +to huawei codeing statndard. and outfile is freed +implicitly, make it more obviouse to remove exit and add cleanup. + +Signed-off-by: Zhang Bo +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_gensrc.c | 13 +++++++++---- + src/kpatch_io.c | 3 ++- + 2 files changed, 11 insertions(+), 5 deletions(-) + +diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c +index e6bea59..8503361 100644 +--- a/src/kpatch_gensrc.c ++++ b/src/kpatch_gensrc.c +@@ -1598,7 +1598,6 @@ static void usage(void) + kplog(LOG_ERR, " --test-mode - currently running in a test environment, using test mode."); + kplog(LOG_ERR, "FLIST format:"); + kplog(LOG_ERR, " FLIST is comma separated list of function names which can be prepanded with filename where this function defined."); +- exit(1); + } + + enum { +@@ -1638,6 +1637,7 @@ int main(int argc, char **argv) + int err, ch, k = 0, dbgfilter = 0, dbgfilter_options = 0; + int test_mode = 0; + struct kp_file infile[2], outfile; ++ int ret = -1; + + memset(&outfile, 0, sizeof(struct kp_file)); + outfile.f = NULL; +@@ -1701,10 +1701,12 @@ int main(int argc, char **argv) + break; + default: + usage(); ++ goto cleanup; + } + } + if (optind != argc || outfile.f == NULL) { + usage(); ++ goto cleanup; + } + + if (test_mode) { +@@ -1717,8 +1719,8 @@ int main(int argc, char **argv) + + init_multilines(&infile[0]); + debug_filter(&infile[0], &outfile, dbgfilter_options); +- close_file(&outfile); +- return 0; ++ ret = 0; ++ goto cleanup; + } + + if (k < 2) +@@ -1733,7 +1735,10 @@ int main(int argc, char **argv) + analyze_func_cblocks(&infile[0], &infile[1]); + analyze_other_cblocks(&infile[0], &infile[1]); + write_cblocks(&infile[0], &infile[1], &outfile); ++ ret = 0; ++ ++cleanup: + close_file(&outfile); + +- return 0; ++ return ret; + } +diff --git a/src/kpatch_io.c b/src/kpatch_io.c +index 66d1fcf..32964ae 100644 +--- a/src/kpatch_io.c ++++ b/src/kpatch_io.c +@@ -85,5 +85,6 @@ int create_file(struct kp_file *file, const char *fname) + + void close_file(struct kp_file *file) + { +- fclose(file->f); ++ if (file->f) ++ fclose(file->f); + } +-- +2.27.0 + diff --git a/0110-libcare-dump-avoid-file-leak-in-libcare-dump.patch b/0110-libcare-dump-avoid-file-leak-in-libcare-dump.patch new file mode 100644 index 0000000..f74cda9 --- /dev/null +++ b/0110-libcare-dump-avoid-file-leak-in-libcare-dump.patch @@ -0,0 +1,32 @@ +From 4b7d97e6a389cce2a30c069c0a1c43639e510498 Mon Sep 17 00:00:00 2001 +From: Zhang Bo +Date: Sat, 26 Jun 2021 17:20:56 +0800 +Subject: [PATCH 110/118] libcare-dump: avoid file leak in libcare-dump + +In the default switch case, it returned without clearing +resources, use 'goto out' instead. + +Signed-off-by: Zhang Bo +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/libcare-dump.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/libcare-dump.c b/src/libcare-dump.c +index c649696..0264ec1 100644 +--- a/src/libcare-dump.c ++++ b/src/libcare-dump.c +@@ -169,7 +169,7 @@ int main(int argc, char **argv) + break; + default: + usage(); +- return -1; ++ goto out; + } + } + +-- +2.27.0 + diff --git a/0111-kpatch_ptrace-fix-wrong-return-type.patch b/0111-kpatch_ptrace-fix-wrong-return-type.patch new file mode 100644 index 0000000..9182e7c --- /dev/null +++ b/0111-kpatch_ptrace-fix-wrong-return-type.patch @@ -0,0 +1,40 @@ +From 160e71805eb257b47a87ddf72c1448edabc9489d Mon Sep 17 00:00:00 2001 +From: Zhang Bo +Date: Sat, 26 Jun 2021 18:07:46 +0800 +Subject: [PATCH 111/118] kpatch_ptrace: fix wrong return type + +pread()'s return value's type should be ssize_t +rather than size_t. + +Signed-off-by: Zhang Bo +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_ptrace.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c +index 424a05c..23ce64f 100644 +--- a/src/kpatch_ptrace.c ++++ b/src/kpatch_ptrace.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.13 - codeDex: fix wrong return type ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.13 - ptrace: check pread return value + * Huawei Technologies Co., Ltd. + * +@@ -43,7 +46,7 @@ kpatch_process_mem_read(kpatch_process_t *proc, + void *dst, + size_t size) + { +- size_t r; ++ ssize_t r; + + r = pread(proc->memfd, dst, size, (off_t)src); + +-- +2.27.0 + diff --git a/0112-kpatch_strip-fix-closing-negative-fd-in-kpatch_strip.patch b/0112-kpatch_strip-fix-closing-negative-fd-in-kpatch_strip.patch new file mode 100644 index 0000000..1d47a40 --- /dev/null +++ b/0112-kpatch_strip-fix-closing-negative-fd-in-kpatch_strip.patch @@ -0,0 +1,33 @@ +From 70eddee8092f26b7b0908f17cba9d040619fb3b9 Mon Sep 17 00:00:00 2001 +From: Zhang Bo +Date: Sat, 26 Jun 2021 18:36:01 +0800 +Subject: [PATCH 112/118] kpatch_strip: fix closing negative fd in kpatch_strip + +Signed-off-by: Zhang Bo +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_strip.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c +index 98b7f1d..6cd7e76 100644 +--- a/src/kpatch_strip.c ++++ b/src/kpatch_strip.c +@@ -1016,8 +1016,10 @@ int main(int argc, char *argv[]) + } + + cleanup: +- close(fd1); +- close(fd2); ++ if (fd1 >= 0) ++ close(fd1); ++ if (fd2 >= 0) ++ close(fd2); + + return ret; + } +-- +2.27.0 + diff --git a/0113-kpatch_make-fix-closing-negative-fd-in-kpatch_make.patch b/0113-kpatch_make-fix-closing-negative-fd-in-kpatch_make.patch new file mode 100644 index 0000000..ae0bb83 --- /dev/null +++ b/0113-kpatch_make-fix-closing-negative-fd-in-kpatch_make.patch @@ -0,0 +1,33 @@ +From e51649e2844b9b7dca03a0a2dcd255598a0e7f97 Mon Sep 17 00:00:00 2001 +From: Zhang Bo +Date: Sat, 26 Jun 2021 19:11:07 +0800 +Subject: [PATCH 113/118] kpatch_make: fix closing negative fd in kpatch_make + +Signed-off-by: Zhang Bo +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_make.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/kpatch_make.c b/src/kpatch_make.c +index e2564ce..96f7b5a 100644 +--- a/src/kpatch_make.c ++++ b/src/kpatch_make.c +@@ -163,8 +163,10 @@ unmap: + munmap(buf, st.st_size); + + cleanup: +- close(fdo); +- close(fd1); ++ if (fdo >= 0) ++ close(fdo); ++ if (fd1 >= 0) ++ close(fd1); + free(buildid); + free(outputname); + free(patch_id); +-- +2.27.0 + diff --git a/0114-process-turn-on-gcc-Werror-and-fix-some-warning.patch b/0114-process-turn-on-gcc-Werror-and-fix-some-warning.patch new file mode 100644 index 0000000..02ddabe --- /dev/null +++ b/0114-process-turn-on-gcc-Werror-and-fix-some-warning.patch @@ -0,0 +1,27 @@ +From d2a2700286bfc1f3dad5e282e87304fb8251aa72 Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Thu, 1 Jul 2021 15:25:31 +0800 +Subject: [PATCH 114/118] process: turn on gcc Werror and fix some warning + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index ace1029..e7d7c08 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -11,7 +11,7 @@ DEBUG = yes # comment out this line if not debug + SRC_PATH := $(shell pwd) + + CC = gcc +-CFLAGS_MISC = -Wall -g -O2 -D_GNU_SOURCE -D_FORTIFY_SOURCE=2 -I $(SRC_PATH) ++CFLAGS_MISC = -Wall -Werror -g -O2 -D_GNU_SOURCE -D_FORTIFY_SOURCE=2 -I $(SRC_PATH) + + cc-option = $(shell if $(CC) $(CFLAGS_MISC) $(1) -S -o /dev/null -xc /dev/null \ + > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;) +-- +2.27.0 + diff --git a/0115-kpatch_ptrace-fix-uninitialing-buf.patch b/0115-kpatch_ptrace-fix-uninitialing-buf.patch new file mode 100644 index 0000000..2abcf07 --- /dev/null +++ b/0115-kpatch_ptrace-fix-uninitialing-buf.patch @@ -0,0 +1,38 @@ +From 1c4f9689052b5206f370e3f6a7975c7942cd4041 Mon Sep 17 00:00:00 2001 +From: Zhang Bo +Date: Mon, 5 Jul 2021 17:12:21 +0800 +Subject: [PATCH 115/118] kpatch_ptrace: fix uninitialing buf + +fix uninitialing buf in kpatch_process_memcpy. + +Signed-off-by: Zhang Bo +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_ptrace.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c +index 23ce64f..58e0f4b 100644 +--- a/src/kpatch_ptrace.c ++++ b/src/kpatch_ptrace.c +@@ -1,4 +1,7 @@ + /****************************************************************************** ++ * 2021.10.13 - codeDex: fix uninitialing buf ++ * Huawei Technologies Co., Ltd. ++ * + * 2021.10.13 - codeDex: fix wrong return type + * Huawei Technologies Co., Ltd. + * +@@ -588,6 +591,7 @@ kpatch_process_memcpy(kpatch_process_t *proc, + kplogerror("Failed to malloc buffer\n"); + return -1; + } ++ memset(buf, 0, size); + + ret = kpatch_process_mem_read(proc, src, buf, size); + if (ret < 0) { +-- +2.27.0 + diff --git a/0116-reliablity-avoid-double-free-in-future.patch b/0116-reliablity-avoid-double-free-in-future.patch new file mode 100644 index 0000000..67ccce4 --- /dev/null +++ b/0116-reliablity-avoid-double-free-in-future.patch @@ -0,0 +1,33 @@ +From 3fc160a1f7e779853ba988555312554db5c29f65 Mon Sep 17 00:00:00 2001 +From: Zhang Bo +Date: Mon, 5 Jul 2021 17:38:49 +0800 +Subject: [PATCH 116/118] reliablity: avoid double free in future + +Pids got freed in process_list_threads in some cases, but +it would be freed again in the caller kpatch_process_attach. +although due to business flow this didn't happen, as it returns -1 in +such cases, set it to NULL anyway to avoid double free in future. + +Signed-off-by: Zhang Bo +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_process.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index 9a05429..4135c17 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -656,6 +656,7 @@ process_list_threads(kpatch_process_t *proc, + + dealloc: + free(pids); ++ *ppids = NULL; + *alloc = *npids = 0; + return -1; + } +-- +2.27.0 + diff --git a/0117-process-check-running-status-if-ptrace-detach-return.patch b/0117-process-check-running-status-if-ptrace-detach-return.patch new file mode 100644 index 0000000..b995f50 --- /dev/null +++ b/0117-process-check-running-status-if-ptrace-detach-return.patch @@ -0,0 +1,76 @@ +From 36ad23d403a4abe9abfc5bd0fe613fe22a5e806f Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Mon, 5 Jul 2021 17:21:15 +0800 +Subject: [PATCH 117/118] process: check running status if ptrace detach return + ESRCH + +During the detach qemu process, if we directly execute waitpid() while +ptrace return ESRCH, there is a probability that the qemu process and +libcare-ctl process will be stuck. To solve this problem, we add checking +pctx->running before calling waitpid(). + +The libcare-ctl stack look like this: + #0 0x0000ffffb7b7c3f0 in waitpid() from /usr/lib64/libc.so.6 + #1 process_detach (proc=0xfffffffff210) at kpatch_process.c:649 + #2 0x0000aaaaaaab0604 in kpatch_process_free + (proc=proc@entry=0xfffffffff210) at kpatch_process.c:1423 + #3 0x0000aaaaaaaa63ec in process_patch (pid=pid@entry=3014078, + _data=_data@entry=0xfffffffff330) at kpatch_patch.c:647 + #4 0x0000aaaaaaaa30e4 in processes_do (data=0xfffffffff330, + callback=, pid=3014078) at kpatch_user.c:321 + #5 processes_patch (send_fd=-1, is_just_started=0, is_lazy_check=0, + pid=3014078, storage=0xfffffffff308) at kpatch_user.c:53 + #6 patch_user (storage_path=, pid=3014078, + is_lazy_check=0, is_just_started=0, send_fd=-1) at kpatch_user.c:85 + #7 0x0000fffff7d93f80 in __libc_start_main () from /usr/lib64/libc.so.6 + #8 0x0000aaaaaaaa2874 in _start () + +The qemu process look like this: + PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND +2133340 root 20 0 5269076 1.1g 22904 t 0.0 0.4 0:00.00 worker +2133338 root 20 0 5269076 1.1g 22904 S 0.0 0.4 0:00.00 vnc_worker +2133337 root 20 0 5269076 1.1g 22904 S 0.0 0.4 0:00.00 memory_lock +2133336 root 20 0 5269076 1.1g 22904 S 0.7 0.4 107:06.85 CPU 0/KVM +2133334 root 20 0 5269076 1.1g 22904 S 0.0 0.4 0:00.37 IO mon_iothread +2133332 root 20 0 5269076 1.1g 22904 S 0.0 0.4 0:00.00 signalfd_compat +2133331 root 20 0 5269076 1.1g 22904 S 0.0 0.4 0:01.32 qemu-kvm-4.1.0- +2133328 root 20 0 5269076 1.1g 22904 S 0.0 0.4 11:38.65 qemu-kvm-4.1.0- + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_process.c | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index 4135c17..3f7de56 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -598,7 +598,23 @@ process_detach(kpatch_process_t *proc) + unw_destroy_addr_space(proc->ptrace.unwd); + + list_for_each_entry_safe(p, ptmp, &proc->ptrace.pctxs, list) { +- if (kpatch_ptrace_detach(p) == -ESRCH) { ++ /** ++ * If kpatch_ptrace_detach(p) return -ESRCH, there are two situations, ++ * as described below: ++ * 1. the specified thread does not exist, it means the thread dead ++ * during the attach processing, so we need to wait for the thread ++ * to exit; ++ * 2. the specified thread is not currently being traced by the libcare, ++ * or is not stopped, so we just ignore it; ++ * ++ * We using the running variable of the struct kpatch_ptrace_ctx to ++ * distinguish them: ++ * 1. if pctx->running = 0, it means the thread is traced by libcare, we ++ * will wait for the thread to exit; ++ * 2. if pctx->running = 1, it means we can not sure about the status of ++ * the thread, we just ignore it; ++ */ ++ if (kpatch_ptrace_detach(p) == -ESRCH && !p->running) { + do { + pid = waitpid(p->pid, &status, __WALL); + } while (pid > 0 && !WIFEXITED(status)); +-- +2.27.0 + diff --git a/0118-kpatch_gensrc-libcare-dump-avoid-resource-leak-in-cm.patch b/0118-kpatch_gensrc-libcare-dump-avoid-resource-leak-in-cm.patch new file mode 100644 index 0000000..5fc427b --- /dev/null +++ b/0118-kpatch_gensrc-libcare-dump-avoid-resource-leak-in-cm.patch @@ -0,0 +1,50 @@ +From 9ac889259d405c9f304fe2ca4bd8edccbaea730b Mon Sep 17 00:00:00 2001 +From: Zhang Bo +Date: Tue, 6 Jul 2021 14:17:55 +0800 +Subject: [PATCH 118/118] kpatch_gensrc/libcare-dump: avoid resource leak in + cmdline + +The args in the process of parsing args shall be freed +before being allocated, as the args maybe called multiple +times. + +Signed-off-by: Zhang Bo +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_gensrc.c | 1 + + src/libcare-dump.c | 2 ++ + 2 files changed, 3 insertions(+) + +diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c +index 8503361..a407909 100644 +--- a/src/kpatch_gensrc.c ++++ b/src/kpatch_gensrc.c +@@ -1655,6 +1655,7 @@ int main(int argc, char **argv) + k++; + break; + case 'o': ++ close_file(&outfile); + if ((err = create_file(&outfile, optarg))) + kpfatal("Can't open output file '%s': %s\n", optarg, strerror(err)); + break; +diff --git a/src/libcare-dump.c b/src/libcare-dump.c +index 0264ec1..8736452 100644 +--- a/src/libcare-dump.c ++++ b/src/libcare-dump.c +@@ -159,9 +159,11 @@ int main(int argc, char **argv) + dump_kpatch_header = 1; + break; + case 'i': ++ free(input_file); + input_file = strdup(optarg); + break; + case 'o': ++ free(output_file); + output_file = strdup(optarg); + break; + case 'c': +-- +2.27.0 + diff --git a/libcareplus.spec b/libcareplus.spec index c4a197d..a4a146e 100644 --- a/libcareplus.spec +++ b/libcareplus.spec @@ -3,7 +3,7 @@ Version: 0.1.4 Name: libcareplus Summary: LibcarePlus tools -Release: 12 +Release: 13 Group: Applications/System License: GPLv2 Url: https://gitee.com/openeuler/libcareplus @@ -72,7 +72,62 @@ Patch0060: 0059-tls-add-support-for-TLS-symbol-with-IE-model.patch Patch0061: 0060-arch64-arch_elf-add-R_AARCH64_LDST32_ABS_LO12_NC-rel.patch Patch0062: 0061-process-fix-region-start-calculation.patch Patch0063: 0062-aarch64-arch_elf-Add-ldr-and-ldrb-relocation-for-aar.patch - +Patch0064: 0063-process-add-some-checks-before-patching.patch +Patch0065: 0064-time-add-frozen-time-count-for-patch-unpatch.patch +Patch0066: 0065-libcare-ctl-optimize-output-of-libcare-ctl-info.patch +Patch0067: 0066-libcare-patch-make-add-build-id-options.patch +Patch0068: 0067-libcare-patch-make-add-j-option-to-accelarate-make-p.patch +Patch0069: 0068-Makefile-make-binfiles-permission-as-500.patch +Patch0070: 0069-libcare-ctl-remove-useless-codes-for-info-interface.patch +Patch0071: 0070-kpatch_object-combine-funcitons-with-similar-functio.patch +Patch0072: 0071-process_unpatch-adapt-return-value.patch +Patch0073: 0072-kpatch_elf-arch_elf-enhance-kpatch_elf-and-arch_elf-.patch +Patch0074: 0073-tls-prctl-remove-deprecated-code-for-tls-and-prctl.patch +Patch0075: 0074-kpatch_parse-fix-possible-Null-pointer-dereferences.patch +Patch0076: 0075-gensrc-cc-elf-optimize-libcare-code-to-make-checker-.patch +Patch0077: 0076-kpatch_parse-fix-wrong-return-in-is_data_sect.patch +Patch0078: 0077-libcare-patch-make-export-libcare-env-variables.patch +Patch0079: 0078-storage-strip-fix-some-bad-code-problem.patch +Patch0080: 0079-ptrace-process-patch-fix-some-bad-code-problem.patch +Patch0081: 0080-kpatch-rename-uname-to-buildid.patch +Patch0082: 0081-kpatch-clear-code-checker-warnings.patch +Patch0083: 0082-kpatch_strip-revert-close-fd-in-kpatch_open_elf.patch +Patch0084: 0083-kpatch-fix-code-checker-warning.patch +Patch0085: 0084-kpatch_ptrace-fix-x86-compile-failure.patch +Patch0086: 0085-return-make-every-return-properly-other-than-direct-.patch +Patch0087: 0086-libcare-patch-make-check-return-for-each-patch-make-.patch +Patch0088: 0087-kpatch-clear-code-checker-warnings.patch +Patch0089: 0088-kpatch_make-initialize-fd-to-avoid-unexpected-close.patch +Patch0090: 0089-kpatch_cc-Optimize-build_multiple-a-little-bit.patch +Patch0091: 0090-patch-correct-time-comsume-print.patch +Patch0092: 0091-tests-fix-tests-some-executing-problem.patch +Patch0093: 0092-gensrc-add-test-mode-and-check-whether-the-conf-file.patch +Patch0094: 0093-libcare-dump-add-libcare-dump-auxiliary-tools.patch +Patch0095: 0094-process-add-a-flag-to-mark-unpatch-target-elf.patch +Patch0096: 0095-strip-settle-libcare-dump-output-elf-file-can-not-be.patch +Patch0097: 0096-kpatch_user-remove-stresstest-mode.patch +Patch0098: 0097-tests-Split-client-server-binary-into-devel.patch +Patch0099: 0098-misc-add-D_FORTIFY_SOURCE-2-and-fix-return-check.patch +Patch0100: 0099-misc-fix-trivial-codex-issues-and-compile-warning.patch +Patch0101: 0100-libcare-info-rename-Process-as-Target-instead.patch +Patch0102: 0101-libcare-dump-add-support-for-dumping-patch-header.patch +Patch0103: 0102-codedex-fix-codedex-warning.patch +Patch0104: 0103-unpatch-enhance-error-handling-and-log-records-of-ob.patch +Patch0105: 0104-test-adapt-UT-tests-in-x86_64.patch +Patch0106: 0105-arch.desc-delete-arch.desc.patch +Patch0107: 0106-test-fix-some-problems-in-UT-tests.patch +Patch0108: 0107-ptrace-check-pread-return-value.patch +Patch0109: 0108-libcare-dump-fix-fd-leak-in-libcare-dump.patch +Patch0110: 0109-refactor-avoid-potential-file-leak-in-main.patch +Patch0111: 0110-libcare-dump-avoid-file-leak-in-libcare-dump.patch +Patch0112: 0111-kpatch_ptrace-fix-wrong-return-type.patch +Patch0113: 0112-kpatch_strip-fix-closing-negative-fd-in-kpatch_strip.patch +Patch0114: 0113-kpatch_make-fix-closing-negative-fd-in-kpatch_make.patch +Patch0115: 0114-process-turn-on-gcc-Werror-and-fix-some-warning.patch +Patch0116: 0115-kpatch_ptrace-fix-uninitialing-buf.patch +Patch0117: 0116-reliablity-avoid-double-free-in-future.patch +Patch0118: 0117-process-check-running-status-if-ptrace-detach-return.patch +Patch0119: 0118-kpatch_gensrc-libcare-dump-avoid-resource-leak-in-cm.patch BuildRequires: elfutils-libelf-devel libunwind-devel gcc systemd @@ -228,6 +283,11 @@ exit 0 %endif %changelog +* Mon Feb 07 2022 imxcc - 0.1.4.13 +- add libcare-dump tool +- support test sets running on x86 +- some bugfixs + * Mon Feb 07 2022 imxcc - 0.1.4.12 - src/Makefile: execute config scripts before building - kpatch_gensrc.c: support ignoring functions which we don't need -- Gitee From 87c571040beb855a37df427c253f002941b736ec Mon Sep 17 00:00:00 2001 From: imxcc Date: Mon, 7 Feb 2022 20:56:19 +0800 Subject: [PATCH 7/9] support aarch64 UT Signed-off-by: imxcc --- 0119-updated-the-README.en.md-file.patch | 81 ++++++ ...eturn-1-if-get-tls-got_offset-failed.patch | 44 ++++ ...ser-print-log-before-performing-task.patch | 46 ++++ 0122-process-memset-new-malloc-object.patch | 44 ++++ ...default-case-for-bash-case-statement.patch | 30 +++ 0124-style-fix-mismatch-code-alignment.patch | 174 ++++++++++++ ..._cc-Avoid-buffer-out-of-bounds-write.patch | 32 +++ 0126-kpatch_make-Avoid-open-NULL.patch | 32 +++ ...t-o-dynsyms-to-NULL-when-free-buffer.patch | 35 +++ ...tle-keep-the-same-size-of-proc-memfd.patch | 48 ++++ ...unused-functions-and-add-check-for-s.patch | 104 ++++++++ ...dapt-some-indent-alignment-and-descr.patch | 129 +++++++++ ...ests-UT-support-aarch64-architecture.patch | 138 ++++++++++ ...-exception-handling-problem-and-code.patch | 121 +++++++++ 0133-Fix-some-code-alignments.patch | 166 ++++++++++++ ...Call-close_file-to-avoid-memory-leak.patch | 42 +++ 0135-kpatch_io-Fix-memory-leak.patch | 81 ++++++ ...ch_gensrc-Fix-memory-leak-of-renames.patch | 74 ++++++ ...ch_gensrc-Fix-memory-leak-of-cblocks.patch | 68 +++++ ...Fix-memory-leak-of-section-and-ctype.patch | 88 +++++++ ...-optimize-fix-uninitialized-variable.patch | 66 +++++ ...atch_patch-fix-possible-memory-leaks.patch | 54 ++++ 0141-kpatch-fix-some-codeing-problems.patch | 70 +++++ 0142-kpatch_process-fix-memory-leak.patch | 31 +++ 0143-kpatch_process-fix-double-free.patch | 52 ++++ 0144-kpatch_gensrc-Fix-use-after-free.patch | 32 +++ 0145-kpatch_io-Fix-NULL-dereference.patch | 65 +++++ ...ocess-Revert-codedex-fix-double-free.patch | 53 ++++ ...ew-memory-to-store-target-object-s-k.patch | 50 ++++ ...race-fix-NULL-pointer-access-problem.patch | 53 ++++ ...ck-the-return-value-of-open-function.patch | 45 ++++ ...ome-descriptions-and-formats-of-logs.patch | 83 ++++++ ...-sprintf-with-snprintf-to-ensure-saf.patch | 87 ++++++ ...-strcpy-with-strncpy-to-ensure-safet.patch | 31 +++ ...ly-can-apply-one-patch-in-left-hole-.patch | 46 ++++ ...-patch-fix-the-type-mismatch-problem.patch | 29 ++ 0155-optimize-fix-some-coding-problems.patch | 79 ++++++ ...eck-kpatch-file-size-before-using-it.patch | 50 ++++ 0157-objinfo-check-index-before-using.patch | 27 ++ ...ment-to-facilitate-problems-location.patch | 248 ++++++++++++++++++ ...re-.kpatch.data-is-4K-page-alignment.patch | 50 ++++ 0160-elf-get-.kpatch.data-offset.patch | 103 ++++++++ ...e-the-kpatch-region-memory-distribut.patch | 177 +++++++++++++ ...race-support-remote-mprotect-syscall.patch | 66 +++++ ...cord-remote-malloc-total-memory-size.patch | 66 +++++ ...ange-kpatch-region-access-permission.patch | 52 ++++ ...ess-adapt-to-recognize-kpatch-region.patch | 36 +++ libcareplus.spec | 56 +++- 48 files changed, 3433 insertions(+), 1 deletion(-) create mode 100644 0119-updated-the-README.en.md-file.patch create mode 100644 0120-strip-return-1-if-get-tls-got_offset-failed.patch create mode 100644 0121-user-print-log-before-performing-task.patch create mode 100644 0122-process-memset-new-malloc-object.patch create mode 100644 0123-patch-add-default-case-for-bash-case-statement.patch create mode 100644 0124-style-fix-mismatch-code-alignment.patch create mode 100644 0125-kpatch_cc-Avoid-buffer-out-of-bounds-write.patch create mode 100644 0126-kpatch_make-Avoid-open-NULL.patch create mode 100644 0127-bugfix-set-o-dynsyms-to-NULL-when-free-buffer.patch create mode 100644 0128-codesytle-keep-the-same-size-of-proc-memfd.patch create mode 100644 0129-optimize-Remove-unused-functions-and-add-check-for-s.patch create mode 100644 0130-kpatch_storage-adapt-some-indent-alignment-and-descr.patch create mode 100644 0131-tests-UT-support-aarch64-architecture.patch create mode 100644 0132-process-fix-some-exception-handling-problem-and-code.patch create mode 100644 0133-Fix-some-code-alignments.patch create mode 100644 0134-kpatch_gensrc-Call-close_file-to-avoid-memory-leak.patch create mode 100644 0135-kpatch_io-Fix-memory-leak.patch create mode 100644 0136-kpatch_gensrc-Fix-memory-leak-of-renames.patch create mode 100644 0137-kpatch_gensrc-Fix-memory-leak-of-cblocks.patch create mode 100644 0138-kpatch_io-Fix-memory-leak-of-section-and-ctype.patch create mode 100644 0139-optimize-fix-uninitialized-variable.patch create mode 100644 0140-kpatch_patch-fix-possible-memory-leaks.patch create mode 100644 0141-kpatch-fix-some-codeing-problems.patch create mode 100644 0142-kpatch_process-fix-memory-leak.patch create mode 100644 0143-kpatch_process-fix-double-free.patch create mode 100644 0144-kpatch_gensrc-Fix-use-after-free.patch create mode 100644 0145-kpatch_io-Fix-NULL-dereference.patch create mode 100644 0146-process-Revert-codedex-fix-double-free.patch create mode 100644 0147-process-malloc-new-memory-to-store-target-object-s-k.patch create mode 100644 0148-ptrace-fix-NULL-pointer-access-problem.patch create mode 100644 0149-ptrace-check-the-return-value-of-open-function.patch create mode 100644 0150-log-optimize-some-descriptions-and-formats-of-logs.patch create mode 100644 0151-security-replace-sprintf-with-snprintf-to-ensure-saf.patch create mode 100644 0152-security-replace-strcpy-with-strncpy-to-ensure-safet.patch create mode 100644 0153-process-solve-only-can-apply-one-patch-in-left-hole-.patch create mode 100644 0154-patch-fix-the-type-mismatch-problem.patch create mode 100644 0155-optimize-fix-some-coding-problems.patch create mode 100644 0156-security-check-kpatch-file-size-before-using-it.patch create mode 100644 0157-objinfo-check-index-before-using.patch create mode 100644 0158-log-log-enhancement-to-facilitate-problems-location.patch create mode 100644 0159-gensrc-make-sure-.kpatch.data-is-4K-page-alignment.patch create mode 100644 0160-elf-get-.kpatch.data-offset.patch create mode 100644 0161-process-rearrange-the-kpatch-region-memory-distribut.patch create mode 100644 0162-ptrace-support-remote-mprotect-syscall.patch create mode 100644 0163-patch-record-remote-malloc-total-memory-size.patch create mode 100644 0164-process-change-kpatch-region-access-permission.patch create mode 100644 0165-process-adapt-to-recognize-kpatch-region.patch diff --git a/0119-updated-the-README.en.md-file.patch b/0119-updated-the-README.en.md-file.patch new file mode 100644 index 0000000..3277b0b --- /dev/null +++ b/0119-updated-the-README.en.md-file.patch @@ -0,0 +1,81 @@ +From a8ba6d1e1103f22ec954bef0c2e453aead97dc41 Mon Sep 17 00:00:00 2001 +From: yanhuiling +Date: Wed, 27 Oct 2021 09:26:30 +0000 +Subject: [PATCH 119/165] =?UTF-8?q?updated=20the=20README.en.md=20file.=20?= + =?UTF-8?q?=E4=BD=A0=E5=A5=BD=E3=80=82=E6=88=91=E4=BB=AC=E8=AF=84=E5=AE=A1?= + =?UTF-8?q?=E5=92=8C=E6=9B=B4=E6=96=B0=E4=BA=86README.en=E6=96=87=E4=BB=B6?= + =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E6=AD=A3=E4=BA=86=E4=B8=80=E4=BA=9B=E6=8B=BC?= + =?UTF-8?q?=E5=86=99=E9=94=99=E8=AF=AF=E3=80=81=E8=AF=AD=E6=B3=95=E9=94=99?= + =?UTF-8?q?=E8=AF=AF=E3=80=81=E4=B8=AD=E6=96=87=E5=AD=97=E7=AC=A6=E3=80=81?= + =?UTF-8?q?=E8=A1=A8=E8=BE=BE=E9=97=AE=E9=A2=98=E3=80=82=E6=9C=89=E4=BB=BB?= + =?UTF-8?q?=E4=BD=95=E9=97=AE=E9=A2=98=EF=BC=8C=E8=AF=B7=E8=81=94=E7=B3=BB?= + =?UTF-8?q?G11N=20SIG=E3=80=82?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + README.en.md | 27 +++++++++++---------------- + 1 file changed, 11 insertions(+), 16 deletions(-) + +diff --git a/README.en.md b/README.en.md +index db9fc30..3077b91 100644 +--- a/README.en.md ++++ b/README.en.md +@@ -1,40 +1,35 @@ +-# libcareplus ++# LibcarePlus + + #### Description +-LibcarePlus delivers live patches to any of your Linux executables or libraries at the runtime, without the need for restart of your applications. ++LibcarePlus‧is‧a‧general‧user-mode‧live‧patch‧framework.‧It delivers live patches to any of your Linux executables or libraries at the runtime, without the need for restart of your applications. + +-LibcarePlus is a self maintained branch derived from the LibCare project. It is released with the same LICENSE with LibCare and the original Copyright is kept. ++LibcarePlus is a self-maintained branch derived from the LibCare project. It is released with the same license with LibCare and the original copyright is kept. + + More information about LibCare can be reached at: + + [https://github.com/cloudlinux/libcare](https://github.com/cloudlinux/libcare) + +-LibcarePlus aims at providing userspac livepatch ability +-for popular architecture like x86_64 and aarch64. ++LibcarePlus aims at providing user-mode live patches for popular architectures like x86_64 and AArch64. + + #### Software Architecture + +-For more information about the design of LibcarePlus, +-please refer to the `LibcarePlus Design`. ++For more information about the design of LibcarePlus, see the `LibcarePlus Design`. + + #### Installation + +-Please refer to the `LibcarePlus Intallation Guide` to +-complete the installation of LibcarePlus. ++Refer to the `LibcarePlus Intallation Guide` to install LibcarePlus. + + +-### User Guide ++#### User Guide + +-Please refer to: ++Refer to: + + * LibcarePlus Patch Make Tutorial + * LibcarePlus Patch Apply Tutorial + +-to help you to make the patch and apply it to the target process. ++to help you make the patch and apply it to the target process. + + #### Contribution + +-Any contributors are wellcome to join this project, +-we are glad to provide help and guide needed. +-Developers can post an issue on this project and +-make a pull request to join the development process. +\ No newline at end of file ++Any contributors are welcome to join this project, and we are glad to provide help and guidance needed. ++Developers can post an issue on this project and submit a pull request to join the development process. +\ No newline at end of file +-- +2.27.0 + diff --git a/0120-strip-return-1-if-get-tls-got_offset-failed.patch b/0120-strip-return-1-if-get-tls-got_offset-failed.patch new file mode 100644 index 0000000..bff550b --- /dev/null +++ b/0120-strip-return-1-if-get-tls-got_offset-failed.patch @@ -0,0 +1,44 @@ +From 318745e2e2bf05dd2d8eb4e53e349b062f80d0aa Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Tue, 13 Jul 2021 10:59:00 +0800 +Subject: [PATCH 120/165] strip: return -1 if get tls got_offset failed + +return -1 if get tls got_offset failed. This bug is found by codedex. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/arch/x86/arch_strip.c | 3 +++ + src/kpatch_strip.c | 2 +- + 2 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/arch/x86/arch_strip.c b/src/arch/x86/arch_strip.c +index 64716c1..71a32ca 100644 +--- a/src/arch/x86/arch_strip.c ++++ b/src/arch/x86/arch_strip.c +@@ -137,6 +137,9 @@ update_reloc_with_tls_got_entry(kpatch_objinfo *origbin, + */ + + got_offset = objinfo_find_tls_got_by_symname(origbin, symname); ++ } else { ++ kperr("get symbol '%s' got_offset failed\n", symname); ++ return -1; + } + + if (rela->r_addend != got_offset) { +diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c +index 6cd7e76..cc573d1 100644 +--- a/src/kpatch_strip.c ++++ b/src/kpatch_strip.c +@@ -407,7 +407,7 @@ kpatch_fixup_rela_one(kpatch_objinfo *origbin, + rv = kpatch_arch_fixup_rela_update_tls(origbin, patch, rel, + sym, sh_text, text); + if (rv < 0) +- kperr("Faileed to do kpatch_fixup_rela_update_tls"); ++ kperr("Failed to do kpatch_fixup_rela_update_tls"); + + return rv; + } +-- +2.27.0 + diff --git a/0121-user-print-log-before-performing-task.patch b/0121-user-print-log-before-performing-task.patch new file mode 100644 index 0000000..d3edac0 --- /dev/null +++ b/0121-user-print-log-before-performing-task.patch @@ -0,0 +1,46 @@ +From f75e749cc286c990b2b6ac7c3a04dd6ac9a86ff4 Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Sat, 10 Jul 2021 16:13:14 +0800 +Subject: [PATCH 121/165] user: print log before performing task + +print log before performing task + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_user.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/kpatch_user.c b/src/kpatch_user.c +index f318b9b..b982b50 100644 +--- a/src/kpatch_user.c ++++ b/src/kpatch_user.c +@@ -135,6 +135,8 @@ int cmd_patch_user(int argc, char *argv[]) + goto out_err; + + storage_path = argv[argc - 1]; ++ ++ kpinfo("Applying patch for %d with %s", pid, storage_path); + ret = patch_user(storage_path, pid, + /* is_just_started */ 0, /* send_fd */ -1); + +@@ -201,6 +203,8 @@ int cmd_unpatch_user(int argc, char *argv[]) + if (!kpatch_check_system()) + return -1; + ++ kpinfo("Unpplying patch for %d with patch id '%s'", ++ pid, patch_id); + return processes_unpatch(pid, argv, argc, patch_id); + } + +@@ -301,6 +305,7 @@ int cmd_info_user(int argc, char *argv[]) + if (!verbose) + log_level = LOG_ERR; + ++ kpinfo("Query patch information for %d", pid); + return process_info(pid); + } + +-- +2.27.0 + diff --git a/0122-process-memset-new-malloc-object.patch b/0122-process-memset-new-malloc-object.patch new file mode 100644 index 0000000..2207f3d --- /dev/null +++ b/0122-process-memset-new-malloc-object.patch @@ -0,0 +1,44 @@ +From 4f93c7e5325c52f0b15e898fc6baa0afadcedc2a Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Thu, 15 Jul 2021 15:01:55 +0800 +Subject: [PATCH 122/165] process: memset new malloc object + +We may use uninitialized member variable in proc->objs, such as +is_shared_lib variable in kpatch_object_load_dynsym(). We could find +warning log such as following: +2021-06-30T21:04:08.736292+08:00|warning|libcare-ctl[3012164]||kpatch_object_load_dynsym[641]|: +load test-fjw-1_shm_2 dynamic symbol error, ignore it... + +In order solve this problem, we memset the new malloc object in +process_new_object(). + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_process.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index 3f7de56..89cc0d1 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -131,6 +131,8 @@ process_new_object(kpatch_process_t *proc, + kpdebug("FAIL\n"); + return NULL; + } ++ memset(o, 0, sizeof(struct object_file)); ++ + list_init(&o->list); + list_init(&o->vma); + list_init(&o->applied_patch); +@@ -164,6 +166,7 @@ process_new_object(kpatch_process_t *proc, + o->ndynsyms = 0; + o->dynsymnames = NULL; + init_kp_file(&o->kpfile); ++ + list_add(&o->list, &proc->objs); + proc->num_objs++; + kpdebug("OK\n"); +-- +2.27.0 + diff --git a/0123-patch-add-default-case-for-bash-case-statement.patch b/0123-patch-add-default-case-for-bash-case-statement.patch new file mode 100644 index 0000000..d015c42 --- /dev/null +++ b/0123-patch-add-default-case-for-bash-case-statement.patch @@ -0,0 +1,30 @@ +From d66ea5deed093d67cd1822a9fb3df513e6f55f69 Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Fri, 16 Jul 2021 12:01:33 +0800 +Subject: [PATCH 123/165] patch: add default case for bash case statement + +add default case for bash case statement to avoid endless loop. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/libcare-patch-make | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/libcare-patch-make b/src/libcare-patch-make +index aab6845..320ab88 100755 +--- a/src/libcare-patch-make ++++ b/src/libcare-patch-make +@@ -224,6 +224,9 @@ main() { + --) + shift; break; + ;; ++ *) ++ usage 1 ++ ;; + esac + done + +-- +2.27.0 + diff --git a/0124-style-fix-mismatch-code-alignment.patch b/0124-style-fix-mismatch-code-alignment.patch new file mode 100644 index 0000000..6994783 --- /dev/null +++ b/0124-style-fix-mismatch-code-alignment.patch @@ -0,0 +1,174 @@ +From 77f78c3ff41db26ad874a0b980332d791328da3a Mon Sep 17 00:00:00 2001 +From: eillon +Date: Fri, 30 Jul 2021 04:19:10 -0400 +Subject: [PATCH 124/165] style: fix mismatch code alignment + +Signed-off-by: eillon +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/arch/aarch64/arch_elf.c | 4 ++-- + src/arch/aarch64/arch_ptrace.c | 14 +++++++------- + src/arch/x86/arch_ptrace.c | 14 +++++++------- + src/kpatch_ptrace.c | 16 ++++++++-------- + 4 files changed, 24 insertions(+), 24 deletions(-) + +diff --git a/src/arch/aarch64/arch_elf.c b/src/arch/aarch64/arch_elf.c +index 73d0232..9ce586d 100644 +--- a/src/arch/aarch64/arch_elf.c ++++ b/src/arch/aarch64/arch_elf.c +@@ -110,8 +110,8 @@ static int kpatch_arch_apply_relocate(GElf_Rela *r, GElf_Sym *s, + */ + kpdebug("R_AARCH64_LD64_GOT_LO12_NC: val=0x%lx\n", val); + if (GELF_ST_TYPE(s->st_info) == STT_OBJECT && +- s->st_shndx == SHN_UNDEF && +- GELF_ST_BIND(s->st_info) == STB_GLOBAL) { ++ s->st_shndx == SHN_UNDEF && ++ GELF_ST_BIND(s->st_info) == STB_GLOBAL) { + /* This case is for a new global var from DSO */ + val += 8; + val = ((val & 0xfff) >> 3) << 10; +diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c +index 3ff5794..c4a671e 100644 +--- a/src/arch/aarch64/arch_ptrace.c ++++ b/src/arch/aarch64/arch_ptrace.c +@@ -195,9 +195,9 @@ wait_for_mmap(struct kpatch_ptrace_ctx *pctx, + } + + int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, +- unsigned long arg1, unsigned long arg2, unsigned long arg3, +- unsigned long arg4, unsigned long arg5, unsigned long arg6, +- unsigned long *res) ++ unsigned long arg1, unsigned long arg2, unsigned long arg3, ++ unsigned long arg4, unsigned long arg5, unsigned long arg6, ++ unsigned long *res) + { + struct user_regs_struct regs; + unsigned char syscall[] = { +@@ -223,7 +223,7 @@ int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, + } + + int kpatch_arch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, +- unsigned long *addr) ++ unsigned long *addr) + { + struct user_regs_struct regs; + unsigned char callrax[] = { +@@ -330,7 +330,7 @@ poke_back: + } + + void copy_regs(struct user_regs_struct *dst, +- struct user_regs_struct *src) ++ struct user_regs_struct *src) + { + #define COPY_REG(x) dst->x = src->x + COPY_REG(regs[0]); +@@ -359,8 +359,8 @@ void copy_regs(struct user_regs_struct *dst, + + int + kpatch_arch_ptrace_waitpid(kpatch_process_t *proc, +- struct timespec *timeout, +- const sigset_t *sigset) ++ struct timespec *timeout, ++ const sigset_t *sigset) + { + struct kpatch_ptrace_ctx *pctx; + siginfo_t siginfo; +diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c +index b8e761f..838a106 100644 +--- a/src/arch/x86/arch_ptrace.c ++++ b/src/arch/x86/arch_ptrace.c +@@ -192,9 +192,9 @@ wait_for_mmap(struct kpatch_ptrace_ctx *pctx, + } + + int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, +- unsigned long arg1, unsigned long arg2, unsigned long arg3, +- unsigned long arg4, unsigned long arg5, unsigned long arg6, +- unsigned long *res) ++ unsigned long arg1, unsigned long arg2, unsigned long arg3, ++ unsigned long arg4, unsigned long arg5, unsigned long arg6, ++ unsigned long *res) + { + struct user_regs_struct regs; + +@@ -267,7 +267,7 @@ poke: + } + + int kpatch_arch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, +- unsigned long *addr) ++ unsigned long *addr) + { + struct user_regs_struct regs; + unsigned char callrax[] = { +@@ -366,7 +366,7 @@ poke_back: + } + + void copy_regs(struct user_regs_struct *dst, +- struct user_regs_struct *src) ++ struct user_regs_struct *src) + { + #define COPY_REG(x) dst->x = src->x + COPY_REG(r15); +@@ -388,8 +388,8 @@ void copy_regs(struct user_regs_struct *dst, + } + + int kpatch_arch_ptrace_waitpid(kpatch_process_t *proc, +- struct timespec *timeout, +- const sigset_t *sigset) ++ struct timespec *timeout, ++ const sigset_t *sigset) + { + struct kpatch_ptrace_ctx *pctx; + siginfo_t siginfo; +diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c +index 58e0f4b..201eb41 100644 +--- a/src/kpatch_ptrace.c ++++ b/src/kpatch_ptrace.c +@@ -441,7 +441,7 @@ int + wait_for_stop(struct kpatch_ptrace_ctx *pctx, + const void *data) + { +- int ret, status = 0, pid = (int)(uintptr_t)data ?: pctx->pid; ++ int ret, status = 0, pid = (int)(uintptr_t)data ? : pctx->pid; + kpdebug("wait_for_stop(pctx->pid=%d, pid=%d)\n", pctx->pid, pid); + + while (1) { +@@ -479,11 +479,11 @@ kpatch_execute_remote(struct kpatch_ptrace_ctx *pctx, + struct user_regs_struct *pregs) + { + return kpatch_arch_execute_remote_func(pctx, +- code, +- codelen, +- pregs, +- wait_for_stop, +- NULL); ++ code, ++ codelen, ++ pregs, ++ wait_for_stop, ++ NULL); + } + + /* FIXME(pboldin) buf might be too small */ +@@ -528,7 +528,7 @@ kpatch_mmap_remote(struct kpatch_ptrace_ctx *pctx, + kpdebug("mmap_remote: 0x%lx+%lx, %x, %x, %d, %lx\n", addr, length, + prot, flags, fd, offset); + ret = kpatch_arch_syscall_remote(pctx, __NR_mmap, (unsigned long)addr, +- length, prot, flags, fd, offset, &res); ++ length, prot, flags, fd, offset, &res); + if (ret < 0) + return 0; + if (ret == 0 && res >= (unsigned long)-MAX_ERRNO) { +@@ -547,7 +547,7 @@ int kpatch_munmap_remote(struct kpatch_ptrace_ctx *pctx, + + kpdebug("munmap_remote: 0x%lx+%lx\n", addr, length); + ret = kpatch_arch_syscall_remote(pctx, __NR_munmap, (unsigned long)addr, +- length, 0, 0, 0, 0, &res); ++ length, 0, 0, 0, 0, &res); + if (ret < 0) + return -1; + if (ret == 0 && res >= (unsigned long)-MAX_ERRNO) { +-- +2.27.0 + diff --git a/0125-kpatch_cc-Avoid-buffer-out-of-bounds-write.patch b/0125-kpatch_cc-Avoid-buffer-out-of-bounds-write.patch new file mode 100644 index 0000000..6c10753 --- /dev/null +++ b/0125-kpatch_cc-Avoid-buffer-out-of-bounds-write.patch @@ -0,0 +1,32 @@ +From b5e59717fbd2e499281e325794b22c96bdf9eee2 Mon Sep 17 00:00:00 2001 +From: Peng Liang +Date: Sat, 31 Jul 2021 10:10:10 +0800 +Subject: [PATCH 125/165] kpatch_cc: Avoid buffer out-of-bounds write + +We will write to newargv[argnum + 4], so we should make sure that argnum ++ 4 < the size of newargv, which is newargc. + +Signed-off-by: Peng Liang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_cc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/kpatch_cc.c b/src/kpatch_cc.c +index da9b6c7..0f68328 100644 +--- a/src/kpatch_cc.c ++++ b/src/kpatch_cc.c +@@ -861,7 +861,7 @@ static int build_multiple(void) + } + + argnum = i; +- if (argnum + 4 > newargc) { ++ if (argnum + 4 >= newargc) { + kpccfatal("Failed to build multiple due to buffer overflow.\n"); + } + +-- +2.27.0 + diff --git a/0126-kpatch_make-Avoid-open-NULL.patch b/0126-kpatch_make-Avoid-open-NULL.patch new file mode 100644 index 0000000..b20b3b7 --- /dev/null +++ b/0126-kpatch_make-Avoid-open-NULL.patch @@ -0,0 +1,32 @@ +From 9b60ee80d06d9b4547bc161da2768c08e9fa4f99 Mon Sep 17 00:00:00 2001 +From: Peng Liang +Date: Sat, 31 Jul 2021 10:16:27 +0800 +Subject: [PATCH 126/165] kpatch_make: Avoid open NULL + +Before open argv[optind], we should make sure that optind is less than +argc. + +Signed-off-by: Peng Liang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_make.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/kpatch_make.c b/src/kpatch_make.c +index 96f7b5a..89b335d 100644 +--- a/src/kpatch_make.c ++++ b/src/kpatch_make.c +@@ -127,7 +127,7 @@ int main(int argc, char **argv) + if (verbose) + log_level = LOG_DEBUG; + +- if (buildid == NULL || patch_id == NULL || *patch_id == '\0') ++ if (buildid == NULL || patch_id == NULL || *patch_id == '\0' || optind >= argc) + usage(); + + if (strlen(buildid) != KPATCH_BUILDID_LEN) { +-- +2.27.0 + diff --git a/0127-bugfix-set-o-dynsyms-to-NULL-when-free-buffer.patch b/0127-bugfix-set-o-dynsyms-to-NULL-when-free-buffer.patch new file mode 100644 index 0000000..0f58127 --- /dev/null +++ b/0127-bugfix-set-o-dynsyms-to-NULL-when-free-buffer.patch @@ -0,0 +1,35 @@ +From 08a29744fa7057be2efb8dec4925043019b9e617 Mon Sep 17 00:00:00 2001 +From: eillon +Date: Fri, 30 Jul 2021 22:17:23 -0400 +Subject: [PATCH 127/165] bugfix: set o->dynsyms to NULL when free buffer + +Currently, o->dynsyms points to 'buffer' if +buffer is malloced successfully. However, 'buffer' might +be freed when ret < 0. Then the o->dynsyms becomes a wild- +pointer and may cause memory access exceptions. + +So set o->dynsyms to NULL when free buffer. + +Signed-off-by: eillon +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_elf.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c +index 7914298..c0a1747 100644 +--- a/src/kpatch_elf.c ++++ b/src/kpatch_elf.c +@@ -631,6 +631,7 @@ elf_object_load_dynsym(struct object_file *o) + out_free: + if (rv < 0) { + free(buffer); ++ o->dynsyms = NULL; + } + free(dynamics); + +-- +2.27.0 + diff --git a/0128-codesytle-keep-the-same-size-of-proc-memfd.patch b/0128-codesytle-keep-the-same-size-of-proc-memfd.patch new file mode 100644 index 0000000..b20723e --- /dev/null +++ b/0128-codesytle-keep-the-same-size-of-proc-memfd.patch @@ -0,0 +1,48 @@ +From 3614d99b55adfc06d06fe5802ad6f2bb34f09c3a Mon Sep 17 00:00:00 2001 +From: eillon +Date: Fri, 30 Jul 2021 22:29:16 -0400 +Subject: [PATCH 128/165] codesytle: keep the same size of proc->memfd + +The proc->memfd is inited in kpatch_process_mem_open, +where it's max size is sizeof("/proc/0123456789/mem"). + +Keep the same here. + +Signed-off-by: eillon +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/arch/aarch64/arch_ptrace.c | 2 +- + src/arch/x86/arch_ptrace.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c +index c4a671e..e43a96d 100644 +--- a/src/arch/aarch64/arch_ptrace.c ++++ b/src/arch/aarch64/arch_ptrace.c +@@ -124,7 +124,7 @@ kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) + + /* Suddenly, /proc/pid/mem gets invalidated */ + { +- char buf[128]; ++ char buf[sizeof("/proc/0123456789/mem")]; + close(proc->memfd); + + snprintf(buf, sizeof(buf), "/proc/%d/mem", proc->pid); +diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c +index 838a106..d7439ab 100644 +--- a/src/arch/x86/arch_ptrace.c ++++ b/src/arch/x86/arch_ptrace.c +@@ -121,7 +121,7 @@ kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) + + /* Suddenly, /proc/pid/mem gets invalidated */ + { +- char buf[128]; ++ char buf[sizeof("/proc/0123456789/mem")]; + close(proc->memfd); + + snprintf(buf, sizeof(buf), "/proc/%d/mem", proc->pid); +-- +2.27.0 + diff --git a/0129-optimize-Remove-unused-functions-and-add-check-for-s.patch b/0129-optimize-Remove-unused-functions-and-add-check-for-s.patch new file mode 100644 index 0000000..2295494 --- /dev/null +++ b/0129-optimize-Remove-unused-functions-and-add-check-for-s.patch @@ -0,0 +1,104 @@ +From 64aa0e909c9f4749ad434627948dcd1e077a9631 Mon Sep 17 00:00:00 2001 +From: eillon +Date: Fri, 30 Jul 2021 23:37:20 -0400 +Subject: [PATCH 129/165] optimize: Remove unused functions and add check for + some metadata. + +Signed-off-by: eillon +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/include/kpatch_ptrace.h | 4 ++-- + src/kpatch_elf.c | 15 ++++++++++++++- + src/kpatch_ptrace.c | 7 ++++--- + 3 files changed, 20 insertions(+), 6 deletions(-) + +diff --git a/src/include/kpatch_ptrace.h b/src/include/kpatch_ptrace.h +index fbd9ce5..42869e7 100644 +--- a/src/include/kpatch_ptrace.h ++++ b/src/include/kpatch_ptrace.h +@@ -33,8 +33,8 @@ struct process_mem_iter * + kpatch_process_mem_iter_init(kpatch_process_t *proc); + void kpatch_process_mem_iter_free(struct process_mem_iter *iter); + int kpatch_process_mem_iter_peek_ulong(struct process_mem_iter *iter, +- unsigned long *dst, +- unsigned long remote_addr); ++ unsigned long *dst, ++ unsigned long remote_addr); + int kpatch_process_mem_iter_peek(struct process_mem_iter *iter, + void *dst, size_t size, + unsigned long remote_addr); +diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c +index c0a1747..b7f2e98 100644 +--- a/src/kpatch_elf.c ++++ b/src/kpatch_elf.c +@@ -44,6 +44,11 @@ elf_object_peek_phdr(struct object_file *o) + sizeof(o->ehdr)); + if (rv < 0) + return rv; ++ ++ if (o->ehdr.e_phnum <= 0) { ++ kperr("Wrong ELF header: ehdr.e_phnum: %d\n", o->ehdr.e_phnum); ++ return -1; ++ } + } + + if (o->phdr == NULL) { +@@ -72,12 +77,20 @@ kpatch_elf_object_set_ehdr(struct object_file *o, + + + if (memcmp(buf, ELFMAG, SELFMAG)) { +- kpdebug("magic(%s) = %x%x%x%x\n", o->name, buf[0], buf[1], buf[2], buf[3]); ++ kperr("magic(%s) = %x%x%x%x\n", o->name, buf[0], buf[1], buf[2], buf[3]); + return -1; + } + + memcpy(&o->ehdr, buf, sizeof(o->ehdr)); + ++ /* check the metadata in o->ehdr */ ++ if (o->ehdr.e_phentsize != sizeof(Elf64_Phdr) || ++ o->ehdr.e_phnum <= 0) { ++ kperr("Wrong ELF header: ehdr.e_phentsize: %d, ehdr.e_phnum: %d\n", ++ o->ehdr.e_phentsize, o->ehdr.e_phnum); ++ return -1; ++ } ++ + if (bufsize < o->ehdr.e_phoff + o->ehdr.e_phentsize * o->ehdr.e_phnum) + return 0; + +diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c +index 201eb41..dc11357 100644 +--- a/src/kpatch_ptrace.c ++++ b/src/kpatch_ptrace.c +@@ -120,6 +120,7 @@ kpatch_process_mem_iter_init(kpatch_process_t *proc) + if (!iter) + return NULL; + ++ memset(iter, 0, sizeof(*iter) + pagesize); + iter->proc = proc; + iter->buflen = 0; + +@@ -161,8 +162,8 @@ int kpatch_process_mem_iter_peek(struct process_mem_iter *iter, + } + + int kpatch_process_mem_iter_peek_ulong(struct process_mem_iter *iter, +- unsigned long *dst, +- unsigned long remote_addr) ++ unsigned long *dst, ++ unsigned long remote_addr) + { + return kpatch_process_mem_iter_peek(iter, dst, sizeof(*dst), remote_addr); + } +@@ -523,7 +524,7 @@ kpatch_mmap_remote(struct kpatch_ptrace_ctx *pctx, + off_t offset) + { + int ret; +- unsigned long res; ++ unsigned long res = 0; + + kpdebug("mmap_remote: 0x%lx+%lx, %x, %x, %d, %lx\n", addr, length, + prot, flags, fd, offset); +-- +2.27.0 + diff --git a/0130-kpatch_storage-adapt-some-indent-alignment-and-descr.patch b/0130-kpatch_storage-adapt-some-indent-alignment-and-descr.patch new file mode 100644 index 0000000..835db36 --- /dev/null +++ b/0130-kpatch_storage-adapt-some-indent-alignment-and-descr.patch @@ -0,0 +1,129 @@ +From d22749297b53e48aee9e5618b8f0cc42db3545a7 Mon Sep 17 00:00:00 2001 +From: Hao Wang +Date: Sun, 1 Aug 2021 15:30:07 +0800 +Subject: [PATCH 130/165] kpatch_storage: adapt some indent alignment and + description + +Signed-off-by: Hao Wang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/include/kpatch_storage.h | 2 +- + src/kpatch_storage.c | 24 +++++++++++------------- + 2 files changed, 12 insertions(+), 14 deletions(-) + +diff --git a/src/include/kpatch_storage.h b/src/include/kpatch_storage.h +index eb8064b..37ea255 100644 +--- a/src/include/kpatch_storage.h ++++ b/src/include/kpatch_storage.h +@@ -46,7 +46,7 @@ struct kpatch_storage { + typedef struct kpatch_storage kpatch_storage_t; + + int storage_init(kpatch_storage_t *storage, +- const char *fname); ++ const char *fname); + void storage_free(kpatch_storage_t *storage); + + enum { +diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c +index 8977329..1569a95 100644 +--- a/src/kpatch_storage.c ++++ b/src/kpatch_storage.c +@@ -48,25 +48,28 @@ patch_file_verify(struct kp_file *kpfile) + k->modulename); + return -1; + } ++ + if (k->total_size > size) { + kperr("'%s' patch is invalid: Invalid size: %u/%ld.\n", + k->modulename, k->total_size, size); + return -1; + } ++ + hdr = (void *)k + k->kpatch_offset; + if (memcmp(hdr->e_ident, ELFMAG, SELFMAG) || +- hdr->e_type != ET_REL || +- hdr->e_shentsize != sizeof(GElf_Shdr)) { ++ hdr->e_type != ET_REL || ++ hdr->e_shentsize != sizeof(GElf_Shdr)) { + kperr("'%s' patch is invalid: Wrong ELF header or not ET_REL\n", + k->modulename); + return -1; + } ++ + kpdebug("OK\n"); + return 1; + } + + int storage_init(kpatch_storage_t *storage, +- const char *fname) ++ const char *fname) + { + int patch_fd = -1; + struct stat stat = { .st_mode = 0 }; +@@ -105,11 +108,11 @@ int storage_init(kpatch_storage_t *storage, + } + + storage->path = strdup(fname); +- + return 0; + + out_close: + close(patch_fd); ++ + out_err: + kplogerror("cannot open storage '%s'\n", fname); + return -1; +@@ -209,7 +212,6 @@ storage_open_patch(kpatch_storage_t *storage, + patch->kpfile.patch->user_level = patch->patchlevel; + rv = PATCH_FOUND; + } +- + } + + return rv; +@@ -230,7 +232,6 @@ storage_stat_patch(kpatch_storage_t *storage, + sprintf(fname, pathtemplates[i], buildid); + + rv = fstatat(storage->patch_fd, fname, &buf, /* flags */ 0); +- + if (rv == 0) { + rv = PATCH_FOUND; + patch->kpfile.size = buf.st_size; +@@ -253,11 +254,8 @@ storage_stat_patch(kpatch_storage_t *storage, + return rv; + } + +-/* +- * TODO(pboldin) I duplicate a lot of code kernel has for filesystems already. +- * Should we avoid this caching at all? +- */ + #define ERR_PATCH ((struct kpatch_storage_patch *)1) ++ + static struct kpatch_storage_patch * + storage_get_patch(kpatch_storage_t *storage, const char *buildid, + int load) +@@ -441,7 +439,7 @@ int storage_lookup_patches(kpatch_storage_t *storage, kpatch_process_t *proc) + if (ret == PATCH_OPEN_ERROR) { + if (errno != ENOENT) + kplogerror("error finding patch for %s (%s)\n", +- o->name, bid); ++ o->name, bid); + continue; + } + +@@ -462,8 +460,8 @@ int storage_lookup_patches(kpatch_storage_t *storage, kpatch_process_t *proc) + + static int + storage_execute_script(kpatch_storage_t *storage, +- kpatch_process_t *proc, +- const char *name) ++ kpatch_process_t *proc, ++ const char *name) + { + int childpid, rv = 0, status; + char pidbuf[16], pathbuf[PATH_MAX]; +-- +2.27.0 + diff --git a/0131-tests-UT-support-aarch64-architecture.patch b/0131-tests-UT-support-aarch64-architecture.patch new file mode 100644 index 0000000..c6e4de1 --- /dev/null +++ b/0131-tests-UT-support-aarch64-architecture.patch @@ -0,0 +1,138 @@ +From 8dfe390cff15636a161060a65c2715b9360257b4 Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Fri, 30 Jul 2021 20:06:23 +0800 +Subject: [PATCH 131/165] tests: UT support aarch64 architecture + +Support running UT in aarch64 architecture. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + tests/Makefile | 6 +++++ + .../fail_busy_single_top.c | 2 +- + .../fail_busy_single_top.diff | 2 +- + tests/run_tests.sh | 24 +++++++++++++++++++ + tests/tls_simple/tls_simple.c | 1 + + tests/tls_simple/tls_simple.diff | 4 ++-- + 6 files changed, 35 insertions(+), 4 deletions(-) + +diff --git a/tests/Makefile b/tests/Makefile +index cf44479..c9edaf3 100644 +--- a/tests/Makefile ++++ b/tests/Makefile +@@ -2,6 +2,12 @@ MAKEFLAGS += --no-builtin-rules + + SUBDIRS := $(patsubst %/desc,%,$(wildcard */desc)) + ++AARCH64_NO_SUPPORT_TESTS = fail_coro fail_coro_listed ++ARCH = $(shell uname -m) ++ifeq ($(ARCH), aarch64) ++ SUBDIRS := $(filter-out $(AARCH64_NO_SUPPORT_TESTS), $(SUBDIRS)) ++endif ++ + KPATCH_PATH:=$(CURDIR)/../src + export KPATCH_PATH + +diff --git a/tests/fail_busy_single_top/fail_busy_single_top.c b/tests/fail_busy_single_top/fail_busy_single_top.c +index 6e55b83..18935e8 100644 +--- a/tests/fail_busy_single_top/fail_busy_single_top.c ++++ b/tests/fail_busy_single_top/fail_busy_single_top.c +@@ -17,7 +17,7 @@ void do_work2() { + while (1) { + print_greetings(); + for (i = 0; i < INT_MAX / 50; i++) +- asm ("pause"); ++ sleep(1); + } + } + +diff --git a/tests/fail_busy_single_top/fail_busy_single_top.diff b/tests/fail_busy_single_top/fail_busy_single_top.diff +index e9a0300..9880342 100644 +--- a/tests/fail_busy_single_top/fail_busy_single_top.diff ++++ b/tests/fail_busy_single_top/fail_busy_single_top.diff +@@ -7,5 +7,5 @@ + - print_greetings(); + + print_greetings_patched(); + for (i = 0; i < INT_MAX / 50; i++) +- asm ("pause"); ++ sleep(1); + } +diff --git a/tests/run_tests.sh b/tests/run_tests.sh +index 2512963..de5244f 100755 +--- a/tests/run_tests.sh ++++ b/tests/run_tests.sh +@@ -510,6 +510,22 @@ should_skip() { + fi + fi + ++ if test "$ARCH" = "aarch64"; then ++ if test "$1" = "tls_shared" || \ ++ test "$1" = "tls_simple" || \ ++ test "$1" = "ref_glibc_data" || \ ++ test "$1" = "fail_coro_listed" || \ ++ test "$1" = "fail_coro"; then ++ return 0 ++ fi ++ ++ if test "$FLAVOR" = "test_unpatch_files"; then ++ if test "$1" = "frame_finish"; then ++ return 0 ++ fi ++ fi ++ fi ++ + case "$1" in + ifunc) + if grep -q 'release 6' /etc/redhat-release 2>/dev/null; then +@@ -542,6 +558,7 @@ main() { + + DESTDIR=build + FLAVOR=test_patch_files ++ ARCH=$(uname -m) + while getopts ":f:vqd:p:" opt "$@"; do + case $opt in + f) +@@ -585,6 +602,13 @@ main() { + exit 1 + esac + ++ if test "$ARCH" = "aarch64"; then ++ if test "$FLAVOR" = "test_patch_startup" || \ ++ test "$FLAVOR" = "test_patch_startup_ld_linux"; then ++ exit 0 ++ fi ++ fi ++ + PATCHROOT="${PATCHROOT-$PWD/$DESTDIR-patchroot}" + + shift $(($OPTIND - 1)) +diff --git a/tests/tls_simple/tls_simple.c b/tests/tls_simple/tls_simple.c +index 6914ac0..14b34cf 100644 +--- a/tests/tls_simple/tls_simple.c ++++ b/tests/tls_simple/tls_simple.c +@@ -7,6 +7,7 @@ + #include + #include + #include ++#include + + int *p; + int __thread v; +diff --git a/tests/tls_simple/tls_simple.diff b/tests/tls_simple/tls_simple.diff +index 543e7fb..848c667 100644 +--- a/tests/tls_simple/tls_simple.diff ++++ b/tests/tls_simple/tls_simple.diff +@@ -8,8 +8,8 @@ + + if (p == &v && v == 0xDEADBEAF) { + + printf("TLS PATCHED\n"); + + } else { +-+ /* Provoke segfault w/o messing with %rax */ +-+ asm ("movl $0, %ebx; movl $0, (%rbx)"); +++ /* Provoke segfault */ +++ strlen(NULL); + + } + } + +-- +2.27.0 + diff --git a/0132-process-fix-some-exception-handling-problem-and-code.patch b/0132-process-fix-some-exception-handling-problem-and-code.patch new file mode 100644 index 0000000..e22e36e --- /dev/null +++ b/0132-process-fix-some-exception-handling-problem-and-code.patch @@ -0,0 +1,121 @@ +From debb038891dd0bb18742586fd9cd60e5f7799eab Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Sun, 1 Aug 2021 15:45:49 +0800 +Subject: [PATCH 132/165] process: fix some exception handling problem and code + alignment + +fix some exception handling problem and code alignment + +Signed-off-by: Chuan Zheng +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/arch/aarch64/arch_process.c | 5 ++--- + src/arch/x86/arch_process.c | 8 ++++---- + src/kpatch_process.c | 13 ++++++++----- + 3 files changed, 14 insertions(+), 12 deletions(-) + +diff --git a/src/arch/aarch64/arch_process.c b/src/arch/aarch64/arch_process.c +index 6fa6fdc..7ddf4aa 100644 +--- a/src/arch/aarch64/arch_process.c ++++ b/src/arch/aarch64/arch_process.c +@@ -50,8 +50,8 @@ object_find_patch_region(struct object_file *obj, + struct vm_hole **hole) + { + struct list_head *head = &obj->proc->vmaholes; +- struct vm_hole *left_hole = obj->previous_hole, +- *right_hole = next_hole(left_hole, head); ++ struct vm_hole *left_hole = obj->previous_hole; ++ struct vm_hole *right_hole = next_hole(left_hole, head); + unsigned long max_distance = 0x8000000; + struct obj_vm_area *sovma; + +@@ -112,4 +112,3 @@ object_find_patch_region(struct object_file *obj, + + return region_start; + } +- +diff --git a/src/arch/x86/arch_process.c b/src/arch/x86/arch_process.c +index 9b6ba84..7a15252 100644 +--- a/src/arch/x86/arch_process.c ++++ b/src/arch/x86/arch_process.c +@@ -45,12 +45,12 @@ + * patch region inside the (-2GiB, +2GiB) range from the original object. + */ + unsigned long object_find_patch_region(struct object_file *obj, +- size_t memsize, +- struct vm_hole **hole) ++ size_t memsize, ++ struct vm_hole **hole) + { + struct list_head *head = &obj->proc->vmaholes; +- struct vm_hole *left_hole = obj->previous_hole, +- *right_hole = next_hole(left_hole, head); ++ struct vm_hole *left_hole = obj->previous_hole; ++ struct vm_hole *right_hole = next_hole(left_hole, head); + unsigned long max_distance = 0x80000000; + struct obj_vm_area *sovma; + +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index 89cc0d1..f89356a 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -236,6 +236,8 @@ process_add_object_vma(kpatch_process_t *proc, + unsigned char header_buf[1024]; + struct object_file *o; + ++ /* Event though process_get_object_type() return -1, ++ * we still need continue process. */ + object_type = process_get_object_type(proc, + vma, + name, +@@ -276,8 +278,10 @@ process_add_object_vma(kpatch_process_t *proc, + rv = kpatch_elf_object_set_ehdr(o, + header_buf, + sizeof(header_buf)); +- if (rv < 0) ++ if (rv < 0) { + kperr("unable to kpatch_elf_object_set_ehdr\n"); ++ return -1; ++ } + } + + return 0; +@@ -405,6 +409,7 @@ process_add_vm_hole(kpatch_process_t *proc, + if (hole == NULL) + return NULL; + ++ memset(hole, 0, sizeof(*hole)); + hole->start = hole_start; + hole->end = hole_end; + +@@ -828,7 +833,6 @@ process_print_cmdline(kpatch_process_t *proc) + } + } + +- + err_close: + close(fd); + } +@@ -1073,8 +1077,7 @@ kpatch_object_allocate_patch(struct object_file *o, + PROT_READ | PROT_WRITE | PROT_EXEC, + MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (addr == 0) { +- kplogerror("remote alloc of 0x%lx bytes failed\n", +- addr); ++ kplogerror("remote alloc memory for patch failed\n"); + return -1; + } + +@@ -1185,7 +1188,7 @@ kpatch_process_get_obj_by_regex(kpatch_process_t *proc, const char *regex) + + struct object_file * + kpatch_object_get_applied_patch_by_id(struct object_file *o, +- const char *patch_id) ++ const char *patch_id) + { + struct obj_applied_patch *applied_patch; + +-- +2.27.0 + diff --git a/0133-Fix-some-code-alignments.patch b/0133-Fix-some-code-alignments.patch new file mode 100644 index 0000000..012f22b --- /dev/null +++ b/0133-Fix-some-code-alignments.patch @@ -0,0 +1,166 @@ +From 26c13fff7f1b49f5e5e43e49520c64f8ec673232 Mon Sep 17 00:00:00 2001 +From: Peng Liang +Date: Mon, 2 Aug 2021 11:21:15 +0800 +Subject: [PATCH 133/165] Fix some code alignments + +Signed-off-by: Peng Liang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/arch/x86/arch_coro.c | 2 +- + src/arch/x86/arch_patch.c | 2 +- + src/rbtree.c | 34 ++++++++++++---------------------- + 3 files changed, 14 insertions(+), 24 deletions(-) + +diff --git a/src/arch/x86/arch_coro.c b/src/arch/x86/arch_coro.c +index 27c834b..a1c4f4c 100644 +--- a/src/arch/x86/arch_coro.c ++++ b/src/arch/x86/arch_coro.c +@@ -83,7 +83,7 @@ locate_start_context_symbol(struct kpatch_process *proc, + } + + int get_ptr_guard(struct kpatch_process *proc, +- unsigned long *ptr_guard) ++ unsigned long *ptr_guard) + { + int ret; + unsigned long tls; +diff --git a/src/arch/x86/arch_patch.c b/src/arch/x86/arch_patch.c +index 91e041b..00c52ca 100644 +--- a/src/arch/x86/arch_patch.c ++++ b/src/arch/x86/arch_patch.c +@@ -33,7 +33,7 @@ + * This flag is local, i.e. it is never stored to the + * patch applied to patient's memory. + */ +-unsigned int PATCH_APPLIED = (1 << 31); ++unsigned int PATCH_APPLIED = (1 << 31); + unsigned int HUNK_SIZE = 5; + + int patch_apply_hunk(struct object_file *o, size_t nhunk) +diff --git a/src/rbtree.c b/src/rbtree.c +index 6aff1d1..b7b8a1a 100644 +--- a/src/rbtree.c ++++ b/src/rbtree.c +@@ -155,8 +155,7 @@ __rb_insert(struct rb_node *node, struct rb_root *root) + WRITE_ONCE(parent->rb_right, tmp); + WRITE_ONCE(node->rb_left, parent); + if (tmp) +- rb_set_parent_color(tmp, parent, +- RB_BLACK); ++ rb_set_parent_color(tmp, parent, RB_BLACK); + rb_set_parent_color(parent, node, RB_RED); + parent = node; + tmp = node->rb_right; +@@ -196,8 +195,7 @@ __rb_insert(struct rb_node *node, struct rb_root *root) + WRITE_ONCE(parent->rb_left, tmp); + WRITE_ONCE(node->rb_right, parent); + if (tmp) +- rb_set_parent_color(tmp, parent, +- RB_BLACK); ++ rb_set_parent_color(tmp, parent, RB_BLACK); + rb_set_parent_color(parent, node, RB_RED); + parent = node; + tmp = node->rb_left; +@@ -247,8 +245,7 @@ ____rb_erase_color(struct rb_node *parent, struct rb_root *root) + WRITE_ONCE(parent->rb_right, tmp1); + WRITE_ONCE(sibling->rb_left, parent); + rb_set_parent_color(tmp1, parent, RB_BLACK); +- __rb_rotate_set_parents(parent, sibling, root, +- RB_RED); ++ __rb_rotate_set_parents(parent, sibling, root, RB_RED); + sibling = tmp1; + } + tmp1 = sibling->rb_right; +@@ -270,8 +267,7 @@ ____rb_erase_color(struct rb_node *parent, struct rb_root *root) + * if it was red, or by recursing at p. + * p is red when coming from Case 1. + */ +- rb_set_parent_color(sibling, parent, +- RB_RED); ++ rb_set_parent_color(sibling, parent, RB_RED); + if (rb_is_red(parent)) + rb_set_black(parent); + else { +@@ -314,8 +310,7 @@ ____rb_erase_color(struct rb_node *parent, struct rb_root *root) + WRITE_ONCE(tmp2->rb_right, sibling); + WRITE_ONCE(parent->rb_right, tmp2); + if (tmp1) +- rb_set_parent_color(tmp1, sibling, +- RB_BLACK); ++ rb_set_parent_color(tmp1, sibling, RB_BLACK); + tmp1 = sibling; + sibling = tmp2; + } +@@ -337,8 +332,7 @@ ____rb_erase_color(struct rb_node *parent, struct rb_root *root) + rb_set_parent_color(tmp1, sibling, RB_BLACK); + if (tmp2) + rb_set_parent(tmp2, parent); +- __rb_rotate_set_parents(parent, sibling, root, +- RB_BLACK); ++ __rb_rotate_set_parents(parent, sibling, root, RB_BLACK); + break; + } else { + sibling = parent->rb_left; +@@ -348,8 +342,7 @@ ____rb_erase_color(struct rb_node *parent, struct rb_root *root) + WRITE_ONCE(parent->rb_left, tmp1); + WRITE_ONCE(sibling->rb_right, parent); + rb_set_parent_color(tmp1, parent, RB_BLACK); +- __rb_rotate_set_parents(parent, sibling, root, +- RB_RED); ++ __rb_rotate_set_parents(parent, sibling, root, RB_RED); + sibling = tmp1; + } + tmp1 = sibling->rb_left; +@@ -357,8 +350,7 @@ ____rb_erase_color(struct rb_node *parent, struct rb_root *root) + tmp2 = sibling->rb_right; + if (!tmp2 || rb_is_black(tmp2)) { + /* Case 2 - sibling color flip */ +- rb_set_parent_color(sibling, parent, +- RB_RED); ++ rb_set_parent_color(sibling, parent, RB_RED); + if (rb_is_red(parent)) + rb_set_black(parent); + else { +@@ -375,8 +367,7 @@ ____rb_erase_color(struct rb_node *parent, struct rb_root *root) + WRITE_ONCE(tmp2->rb_left, sibling); + WRITE_ONCE(parent->rb_left, tmp2); + if (tmp1) +- rb_set_parent_color(tmp1, sibling, +- RB_BLACK); ++ rb_set_parent_color(tmp1, sibling, RB_BLACK); + tmp1 = sibling; + sibling = tmp2; + } +@@ -387,8 +378,7 @@ ____rb_erase_color(struct rb_node *parent, struct rb_root *root) + rb_set_parent_color(tmp1, sibling, RB_BLACK); + if (tmp2) + rb_set_parent(tmp2, parent); +- __rb_rotate_set_parents(parent, sibling, root, +- RB_BLACK); ++ __rb_rotate_set_parents(parent, sibling, root, RB_BLACK); + break; + } + } +@@ -427,7 +417,7 @@ void rb_erase(struct rb_node *node, struct rb_root *root) + */ + struct rb_node *rb_first(const struct rb_root *root) + { +- struct rb_node *n; ++ struct rb_node *n; + + n = root->rb_node; + if (!n) +@@ -440,7 +430,7 @@ struct rb_node *rb_first(const struct rb_root *root) + + struct rb_node *rb_last(const struct rb_root *root) + { +- struct rb_node *n; ++ struct rb_node *n; + + n = root->rb_node; + if (!n) +-- +2.27.0 + diff --git a/0134-kpatch_gensrc-Call-close_file-to-avoid-memory-leak.patch b/0134-kpatch_gensrc-Call-close_file-to-avoid-memory-leak.patch new file mode 100644 index 0000000..2f6b2ae --- /dev/null +++ b/0134-kpatch_gensrc-Call-close_file-to-avoid-memory-leak.patch @@ -0,0 +1,42 @@ +From 84c42ef39944e45b45d566f0e70009ed9468e735 Mon Sep 17 00:00:00 2001 +From: Peng Liang +Date: Mon, 2 Aug 2021 11:56:48 +0800 +Subject: [PATCH 134/165] kpatch_gensrc: Call close_file to avoid memory leak + +Call close_file to avoid memory leak. + +Signed-off-by: Peng Liang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_gensrc.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c +index a407909..eea4df9 100644 +--- a/src/kpatch_gensrc.c ++++ b/src/kpatch_gensrc.c +@@ -1639,6 +1639,10 @@ int main(int argc, char **argv) + struct kp_file infile[2], outfile; + int ret = -1; + ++ memset(&infile[0], 0, sizeof(struct kp_file)); ++ infile[0].f = NULL; ++ memset(&infile[1], 0, sizeof(struct kp_file)); ++ infile[1].f = NULL; + memset(&outfile, 0, sizeof(struct kp_file)); + outfile.f = NULL; + while ((ch = getopt_long(argc, argv, "d:O:i:o:a:f", long_opts, 0)) != -1) { +@@ -1739,6 +1743,8 @@ int main(int argc, char **argv) + ret = 0; + + cleanup: ++ close_file(&infile[0]); ++ close_file(&infile[1]); + close_file(&outfile); + + return ret; +-- +2.27.0 + diff --git a/0135-kpatch_io-Fix-memory-leak.patch b/0135-kpatch_io-Fix-memory-leak.patch new file mode 100644 index 0000000..0e982af --- /dev/null +++ b/0135-kpatch_io-Fix-memory-leak.patch @@ -0,0 +1,81 @@ +From cc4e16057a6d4c42a4d9b9457c94c82c7ce16dd9 Mon Sep 17 00:00:00 2001 +From: Peng Liang +Date: Mon, 2 Aug 2021 14:05:41 +0800 +Subject: [PATCH 135/165] kpatch_io: Fix memory leak + +Fix memory leak of lines, lines_num, rpath, dirname, and basename. + +Signed-off-by: Peng Liang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_io.c | 31 ++++++++++++++++++++++++++----- + 1 file changed, 26 insertions(+), 5 deletions(-) + +diff --git a/src/kpatch_io.c b/src/kpatch_io.c +index 32964ae..4ee6d66 100644 +--- a/src/kpatch_io.c ++++ b/src/kpatch_io.c +@@ -34,6 +34,7 @@ int read_file(struct kp_file *file, const char *fname) + { + int sz = 64; + char buf[BUFSIZE]; ++ char *tmp = NULL; + + memset(file, 0, sizeof(*file)); + if (!strcmp(fname, "-")) +@@ -43,11 +44,13 @@ int read_file(struct kp_file *file, const char *fname) + + file->rpath = realpath(fname, NULL); + if (!file->rpath) +- file->rpath = ""; +- file->dirname = strdup(file->rpath); +- file->dirname = dirname(file->dirname); +- file->basename = strdup(file->rpath); +- file->basename = basename(file->basename); ++ file->rpath = strdup(""); ++ tmp = strdup(file->rpath); ++ file->dirname = strdup(dirname(file->dirname)); ++ free(tmp); ++ tmp = strdup(file->rpath); ++ file->basename = strdup(basename(file->basename)); ++ free(tmp); + + if (!file->f) + return errno; +@@ -67,6 +70,7 @@ int read_file(struct kp_file *file, const char *fname) + } + file->lines[0] = ""; /* make line with index 0 to be empty, so that our line numbers would match and editor for easier debugging, i.e. we start from index=1 */ + fclose(file->f); ++ file->f = NULL; + return 0; + } + +@@ -85,6 +89,23 @@ int create_file(struct kp_file *file, const char *fname) + + void close_file(struct kp_file *file) + { ++ int i; ++ ++ if (!file) { ++ return; ++ } ++ + if (file->f) + fclose(file->f); ++ ++ /* nr_lines starts from 1 */ ++ for (i = 1; i < file->nr_lines; ++i) { ++ free(file->lines[i]); ++ } ++ free(file->lines); ++ ++ free(file->lines_num); ++ free(file->rpath); ++ free(file->dirname); ++ free(file->basename); + } +-- +2.27.0 + diff --git a/0136-kpatch_gensrc-Fix-memory-leak-of-renames.patch b/0136-kpatch_gensrc-Fix-memory-leak-of-renames.patch new file mode 100644 index 0000000..df9eed3 --- /dev/null +++ b/0136-kpatch_gensrc-Fix-memory-leak-of-renames.patch @@ -0,0 +1,74 @@ +From 33038119bd1ab70327d0dd24834f3695d074c1e4 Mon Sep 17 00:00:00 2001 +From: Peng Liang +Date: Mon, 2 Aug 2021 15:16:30 +0800 +Subject: [PATCH 136/165] kpatch_gensrc: Fix memory leak of renames + +Free src and dst when a node is deleted from the tree and when the +process ends to avoid memory leak. + +Signed-off-by: Peng Liang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_gensrc.c | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c +index eea4df9..1b189c4 100644 +--- a/src/kpatch_gensrc.c ++++ b/src/kpatch_gensrc.c +@@ -174,8 +174,10 @@ void rename_add(struct kp_file *f, kpstr_t *src, kpstr_t *dst) + if (r == NULL) { + kpfatal("Failed to malloc rbtree!\n"); + } +- r->src = *src; +- r->dst = *dst; ++ r->src.l = src->l; ++ r->src.s = strdup(src->s); ++ r->dst.l = dst->l; ++ r->dst.s = strdup(dst->s); + rb_insert_node(&f->renames, &r->rb, rename_cmp, (unsigned long)src); + } + +@@ -185,10 +187,20 @@ void rename_del(struct kp_file *f, kpstr_t *src) + r = rename_find(f, src); + if (r) { + rb_erase(&r->rb, &f->renames); ++ free(r->src.s); ++ free(r->dst.s); + free(r); + } + } + ++static void rename_free(struct rb_node *node) ++{ ++ struct rename *r = rb_entry(node, struct rename, rb); ++ free(r->src.s); ++ free(r->dst.s); ++ free(r); ++} ++ + int strcmp_after_rename(struct kp_file *f0, struct kp_file *f1, char *s0, char *s1) + { + kpstr_t t0, t1; +@@ -957,6 +969,7 @@ static void __name_add_kpatch_suffix(struct kp_file *f, kpstr_t *t, kpstr_t *bas + } + snprintf(tnew.s, tnew.l, "%.*s%s", basename->l, basename->s, suffix); + rename_add(f, t, &tnew); ++ free(tnew.s); + kplog(LOG_DEBUG, "RENAME[%d]: %.*s -> %.*s\n", f->id, t->l, t->s, tnew.l, tnew.s); + } + +@@ -1743,6 +1756,8 @@ int main(int argc, char **argv) + ret = 0; + + cleanup: ++ rb_destroy(&infile[0].renames, rename_free); ++ rb_destroy(&infile[1].renames, rename_free); + close_file(&infile[0]); + close_file(&infile[1]); + close_file(&outfile); +-- +2.27.0 + diff --git a/0137-kpatch_gensrc-Fix-memory-leak-of-cblocks.patch b/0137-kpatch_gensrc-Fix-memory-leak-of-cblocks.patch new file mode 100644 index 0000000..11ee211 --- /dev/null +++ b/0137-kpatch_gensrc-Fix-memory-leak-of-cblocks.patch @@ -0,0 +1,68 @@ +From 0ffb69384ae91ce85410ded77b06ffcd28a7c11d Mon Sep 17 00:00:00 2001 +From: Peng Liang +Date: Mon, 2 Aug 2021 15:17:59 +0800 +Subject: [PATCH 137/165] kpatch_gensrc: Fix memory leak of cblocks + +Because cblocks_by_start, cblocks_by_name, cblocks_by_human_name share +the same nodes, we only need to destroy one tree. Because the cleanup +is in the end of main, we don't need to set another 2 trees to NULL. + +Signed-off-by: Peng Liang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/include/kpatch_parse.h | 1 + + src/kpatch_gensrc.c | 6 ++++++ + src/kpatch_parse.c | 6 ++++++ + 3 files changed, 13 insertions(+) + +diff --git a/src/include/kpatch_parse.h b/src/include/kpatch_parse.h +index 0f41509..3a868e6 100644 +--- a/src/include/kpatch_parse.h ++++ b/src/include/kpatch_parse.h +@@ -116,6 +116,7 @@ int is_data_def(char *s, int type); + struct cblock *cblock_find_by_name(struct kp_file *f, kpstr_t *nm); + struct cblock *cblock_find_by_human_name(struct kp_file *f, kpstr_t *nm); + void cblocks_init(struct kp_file *f); ++void cblock_free_by_start(struct rb_node *node); + void cblock_print2(struct cblock *b0, struct cblock *b1); + struct cblock *cblock_first(struct kp_file *f); + struct cblock *cblock_next(struct cblock *blk); +diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c +index 1b189c4..7f8db2d 100644 +--- a/src/kpatch_gensrc.c ++++ b/src/kpatch_gensrc.c +@@ -1758,6 +1758,12 @@ int main(int argc, char **argv) + cleanup: + rb_destroy(&infile[0].renames, rename_free); + rb_destroy(&infile[1].renames, rename_free); ++ /* ++ * The nodes in cblocks_by_start, cblocks_by_name, and cblocks_by_human_name ++ * are same, so only need to free nodes in one tree. ++ */ ++ rb_destroy(&infile[0].cblocks_by_start, cblock_free_by_start); ++ rb_destroy(&infile[1].cblocks_by_start, cblock_free_by_start); + close_file(&infile[0]); + close_file(&infile[1]); + close_file(&outfile); +diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c +index 023246f..a260e47 100644 +--- a/src/kpatch_parse.c ++++ b/src/kpatch_parse.c +@@ -431,6 +431,12 @@ void cblocks_init(struct kp_file *f) + } + } + ++void cblock_free_by_start(struct rb_node *node) ++{ ++ struct cblock *cb = rb_entry(node, struct cblock, rbs); ++ free(cb); ++} ++ + void cblock_print2(struct cblock *b0, struct cblock *b1) + { + int i0, i1; +-- +2.27.0 + diff --git a/0138-kpatch_io-Fix-memory-leak-of-section-and-ctype.patch b/0138-kpatch_io-Fix-memory-leak-of-section-and-ctype.patch new file mode 100644 index 0000000..b39317e --- /dev/null +++ b/0138-kpatch_io-Fix-memory-leak-of-section-and-ctype.patch @@ -0,0 +1,88 @@ +From e129a1e537cea7c7704ee10010f03d02dd01f377 Mon Sep 17 00:00:00 2001 +From: Peng Liang +Date: Mon, 2 Aug 2021 15:39:21 +0800 +Subject: [PATCH 138/165] kpatch_io: Fix memory leak of section and ctype + +Fix memory leak of section and ctype + +Signed-off-by: Peng Liang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/include/kpatch_parse.h | 1 + + src/kpatch_io.c | 3 +++ + src/kpatch_parse.c | 19 +++++++++++++++++++ + 3 files changed, 23 insertions(+) + +diff --git a/src/include/kpatch_parse.h b/src/include/kpatch_parse.h +index 3a868e6..a36a015 100644 +--- a/src/include/kpatch_parse.h ++++ b/src/include/kpatch_parse.h +@@ -71,6 +71,7 @@ struct section_desc { + struct section_desc *find_section(char *name); + struct section_desc *csect(struct kp_file *f, int l); + void init_sections(struct kp_file *f); ++void free_sections(struct kp_file *f); + + int is_data_sect(struct section_desc *sect); + int is_code_sect(struct section_desc *sect); +diff --git a/src/kpatch_io.c b/src/kpatch_io.c +index 4ee6d66..f563163 100644 +--- a/src/kpatch_io.c ++++ b/src/kpatch_io.c +@@ -12,6 +12,7 @@ + #include "include/kpatch_log.h" + #include "include/kpatch_io.h" + #include "include/kpatch_str.h" ++#include "include/kpatch_parse.h" + + void *kp_realloc(void *p, int oldsz, int newsz) + { +@@ -108,4 +109,6 @@ void close_file(struct kp_file *file) + free(file->rpath); + free(file->dirname); + free(file->basename); ++ free_sections(file); ++ free(file->ctype); + } +diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c +index a260e47..ddf58f8 100644 +--- a/src/kpatch_parse.c ++++ b/src/kpatch_parse.c +@@ -544,6 +544,7 @@ static struct section_desc *dup_section(struct section_desc *sect) + } + + *s = *sect; ++ s->name = strdup(sect->name); + s->prev = NULL; + memset(&s->rbnm, 0, sizeof(s->rbnm)); + return s; +@@ -666,6 +667,24 @@ void init_sections(struct kp_file *f) + } + } + ++void free_sections(struct kp_file *f) ++{ ++ struct section_desc **secs = NULL; ++ int i; ++ ++ if (!f || !f->section) { ++ return; ++ } ++ secs = (struct section_desc **)f->section; ++ for (i = 1; i < f->nr_lines; ++i) { ++ if (secs[i] != secs[i - 1]) { ++ free(secs[i]->name); ++ free(secs[i]); ++ } ++ } ++ free(secs); ++} ++ + /* ----------------------------------------- code block boundaries detection ---------------------------------------- */ + int is_function_end(struct kp_file *f, int l, kpstr_t *nm) + { +-- +2.27.0 + diff --git a/0139-optimize-fix-uninitialized-variable.patch b/0139-optimize-fix-uninitialized-variable.patch new file mode 100644 index 0000000..d370a83 --- /dev/null +++ b/0139-optimize-fix-uninitialized-variable.patch @@ -0,0 +1,66 @@ +From 0ea46f2114730df1c091c642085486d62dc70d83 Mon Sep 17 00:00:00 2001 +From: Hao Wang +Date: Mon, 2 Aug 2021 11:03:17 +0800 +Subject: [PATCH 139/165] optimize: fix uninitialized variable + +Signed-off-by: Hao Wang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/arch/x86/arch_ptrace.c | 4 +++- + src/include/kpatch_storage.h | 2 +- + src/kpatch_elf.c | 2 +- + 3 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c +index d7439ab..3e3d497 100644 +--- a/src/arch/x86/arch_ptrace.c ++++ b/src/arch/x86/arch_ptrace.c +@@ -224,7 +224,8 @@ int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, + int kpatch_arch_prctl_remote(struct kpatch_ptrace_ctx *pctx, int code, unsigned long *addr) + { + struct user_regs_struct regs; +- unsigned long res, rsp; ++ unsigned long res = (unsigned long)-MAX_ERRNO; ++ unsigned long rsp; + int ret; + + kpdebug("arch_prctl_remote: %d, %p\n", code, addr); +@@ -262,6 +263,7 @@ poke: + regs.rsp, + sizeof(rsp))) + kplogerror("can't poke orig stack data\n"); ++ + *addr = res; + return ret; + } +diff --git a/src/include/kpatch_storage.h b/src/include/kpatch_storage.h +index 37ea255..ce3b9e6 100644 +--- a/src/include/kpatch_storage.h ++++ b/src/include/kpatch_storage.h +@@ -11,7 +11,7 @@ struct kpatch_storage_patch { + struct kp_file kpfile; + + /* Build id kept here for negative caching */ +- char buildid[41]; ++ char buildid[KPATCH_BUILDID_LEN + 1]; + + /* Patch level */ + int patchlevel; +diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c +index b7f2e98..7007d72 100644 +--- a/src/kpatch_elf.c ++++ b/src/kpatch_elf.c +@@ -145,7 +145,7 @@ elf_object_look_for_buildid(struct object_file *o) + continue; + + data += nhdr->n_namesz; +- for (i = 0; i < 40; i+=2, data++) ++ for (i = 0; i < KPATCH_BUILDID_LEN; i+=2, data++) + sprintf(o->buildid + i, "%02hhx", *data); + + kpdebug("read '%s'\n", o->buildid); +-- +2.27.0 + diff --git a/0140-kpatch_patch-fix-possible-memory-leaks.patch b/0140-kpatch_patch-fix-possible-memory-leaks.patch new file mode 100644 index 0000000..9940f7f --- /dev/null +++ b/0140-kpatch_patch-fix-possible-memory-leaks.patch @@ -0,0 +1,54 @@ +From 9d08f362b03c875b93c548bc349ed8a1b5b44dae Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Sun, 1 Aug 2021 17:02:58 +0800 +Subject: [PATCH 140/165] kpatch_patch: fix possible memory leaks + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_patch.c | 22 ++++++++++++++++++---- + 1 file changed, 18 insertions(+), 4 deletions(-) + +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index fc961fc..693e94d 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -548,6 +548,23 @@ out: + return ret; + } + ++static int ++object_kpatch_info_realloc(struct object_file *o, size_t nalloc) ++{ ++ struct kpatch_info *tmp = NULL; ++ ++ tmp = realloc(o->info, nalloc * sizeof(struct kpatch_info)); ++ if (tmp == NULL) { ++ kperr("Failed to realloc o->info!\n"); ++ free(o->info); ++ o->info = NULL; ++ o->ninfo = 0; ++ return -1; ++ } ++ ++ o->info = tmp; ++ return 0; ++} + + /***************************************************************************** + * Patch cancellcation subroutines and cmd_unpatch_user +@@ -592,10 +609,7 @@ object_find_applied_patch_info(struct object_file *o) + + if (o->ninfo == nalloc) { + nalloc += 16; +- o->info = realloc(o->info, nalloc * sizeof(tmpinfo)); +- if (o->info == NULL) { +- kperr("Failed to realloc o->info!\n"); +- o->ninfo = 0; ++ if (object_kpatch_info_realloc(o, nalloc) < 0) { + ret = -1; + goto err; + } +-- +2.27.0 + diff --git a/0141-kpatch-fix-some-codeing-problems.patch b/0141-kpatch-fix-some-codeing-problems.patch new file mode 100644 index 0000000..e25ec41 --- /dev/null +++ b/0141-kpatch-fix-some-codeing-problems.patch @@ -0,0 +1,70 @@ +From c6b315253c7d2de4f121e7f7fc5c24e7c7a25179 Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Mon, 2 Aug 2021 11:51:02 +0800 +Subject: [PATCH 141/165] kpatch: fix some codeing problems + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_patch.c | 3 ++- + src/kpatch_process.c | 2 ++ + src/kpatch_strip.c | 9 +++++++-- + 3 files changed, 11 insertions(+), 3 deletions(-) + +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index 693e94d..148ac29 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -394,7 +394,8 @@ object_apply_patch(struct object_file *o) + o->kpta, + kp->total_size); + if (ret < 0) +- return -1; ++ return ret; ++ + if (o->jmp_table) { + ret = kpatch_process_mem_write(o->proc, + o->jmp_table, +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index f89356a..d5eaeea 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -507,6 +507,8 @@ kpatch_process_parse_proc_maps(kpatch_process_t *proc) + r = sscanf(line, "%lx-%lx %s %lx %x:%x %d %255s", + &start, &end, perms, &offset, + &maj, &min, &inode, name_); ++ if (r == EOF) ++ goto error; + if (r != 8) + strcpy(name, "[anonymous]"); + +diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c +index cc573d1..5717e5a 100644 +--- a/src/kpatch_strip.c ++++ b/src/kpatch_strip.c +@@ -135,7 +135,7 @@ static int kpatch_strip(Elf *elfin, Elf *elfout) + { + GElf_Ehdr ehin, ehout; + Elf_Scn *scnin = NULL, *scnout = NULL; +- Elf_Data *dataout; ++ Elf_Data *dataout, *tmp; + GElf_Shdr shin, shout; + Elf64_Off off = -1ull; + size_t shstridx; +@@ -202,7 +202,12 @@ static int kpatch_strip(Elf *elfin, Elf *elfout) + kperr("Failed to do elf_newdata"); + return -1; + } +- *dataout = *elf_getdata(scnin, NULL); ++ tmp = elf_getdata(scnin, NULL); ++ if (tmp == NULL) { ++ kperr("Failed to do elf_getdata"); ++ return -1; ++ } ++ *dataout = *tmp; + off += shin.sh_size; + if (!strcmp(scnname, ".kpatch.info")) { + offset = process_kpatch_info(scnout, &shout); +-- +2.27.0 + diff --git a/0142-kpatch_process-fix-memory-leak.patch b/0142-kpatch_process-fix-memory-leak.patch new file mode 100644 index 0000000..babd0cf --- /dev/null +++ b/0142-kpatch_process-fix-memory-leak.patch @@ -0,0 +1,31 @@ +From 41ae031c1e84866dc67d709064c215657d8cfeca Mon Sep 17 00:00:00 2001 +From: Hao Wang +Date: Mon, 2 Aug 2021 21:50:12 +0800 +Subject: [PATCH 142/165] kpatch_process: fix memory leak + +Signed-off-by: Hao Wang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_process.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index d5eaeea..aa5ce27 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -349,8 +349,9 @@ object_destroy(struct object_file *o) + if (o->is_patch) { + free(o->info); + } +- if (o->num_applied_patch == 0) ++ if (o->kpfile.patch) { + free(o->kpfile.patch); ++ } + free(o); + } + +-- +2.27.0 + diff --git a/0143-kpatch_process-fix-double-free.patch b/0143-kpatch_process-fix-double-free.patch new file mode 100644 index 0000000..bbbc3ee --- /dev/null +++ b/0143-kpatch_process-fix-double-free.patch @@ -0,0 +1,52 @@ +From a81b6e4b8a3b7b7d6deb120906521a07a67b4e5f Mon Sep 17 00:00:00 2001 +From: Hao Wang +Date: Tue, 3 Aug 2021 00:11:23 +0800 +Subject: [PATCH 143/165] kpatch_process: fix double free + +Signed-off-by: Hao Wang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/include/kpatch_process.h | 3 +++ + src/kpatch_process.c | 3 ++- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h +index 56b4be1..2e23f00 100644 +--- a/src/include/kpatch_process.h ++++ b/src/include/kpatch_process.h +@@ -136,6 +136,9 @@ struct object_file { + + /* Is it an unpatch target */ + unsigned int is_unpatch_target_elf:1; ++ ++ /* Is kpfile duplicated */ ++ unsigned int is_kpfile_dup:1; + }; + + struct kpatch_process { +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index aa5ce27..04c02f2 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -166,6 +166,7 @@ process_new_object(kpatch_process_t *proc, + o->ndynsyms = 0; + o->dynsymnames = NULL; + init_kp_file(&o->kpfile); ++ o->is_kpfile_dup = 0; + + list_add(&o->list, &proc->objs); + proc->num_objs++; +@@ -349,7 +350,7 @@ object_destroy(struct object_file *o) + if (o->is_patch) { + free(o->info); + } +- if (o->kpfile.patch) { ++ if (o->is_kpfile_dup && o->kpfile.patch) { + free(o->kpfile.patch); + } + free(o); +-- +2.27.0 + diff --git a/0144-kpatch_gensrc-Fix-use-after-free.patch b/0144-kpatch_gensrc-Fix-use-after-free.patch new file mode 100644 index 0000000..40defd9 --- /dev/null +++ b/0144-kpatch_gensrc-Fix-use-after-free.patch @@ -0,0 +1,32 @@ +From da6e00392f6fc65f102f3b0f57075fa9aed95e0c Mon Sep 17 00:00:00 2001 +From: Peng Liang +Date: Tue, 3 Aug 2021 10:17:22 +0800 +Subject: [PATCH 144/165] kpatch_gensrc: Fix use after free + +Fix: 37b7f4f3d0 ("kpatch_gensrc: Fix memory leak of renames") + +Signed-off-by: Peng Liang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_gensrc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c +index 7f8db2d..64c2f10 100644 +--- a/src/kpatch_gensrc.c ++++ b/src/kpatch_gensrc.c +@@ -969,8 +969,8 @@ static void __name_add_kpatch_suffix(struct kp_file *f, kpstr_t *t, kpstr_t *bas + } + snprintf(tnew.s, tnew.l, "%.*s%s", basename->l, basename->s, suffix); + rename_add(f, t, &tnew); +- free(tnew.s); + kplog(LOG_DEBUG, "RENAME[%d]: %.*s -> %.*s\n", f->id, t->l, t->s, tnew.l, tnew.s); ++ free(tnew.s); + } + + static void cblock_make_new_labels(struct cblock *b) +-- +2.27.0 + diff --git a/0145-kpatch_io-Fix-NULL-dereference.patch b/0145-kpatch_io-Fix-NULL-dereference.patch new file mode 100644 index 0000000..1226ecd --- /dev/null +++ b/0145-kpatch_io-Fix-NULL-dereference.patch @@ -0,0 +1,65 @@ +From 47464f75866aae31c781d51672c9b7ad42a72279 Mon Sep 17 00:00:00 2001 +From: Peng Liang +Date: Tue, 3 Aug 2021 17:46:10 +0800 +Subject: [PATCH 145/165] kpatch_io: Fix NULL dereference + +We should check the return value of strdup to avoid NULL dereference. + +Signed-off-by: Peng Liang +Signed-off-by: imxcc +Signed-off-by: Bihong Yu +Reviewed-by: Bihong Yu +--- + src/kpatch_io.c | 21 +++++++++++++++------ + 1 file changed, 15 insertions(+), 6 deletions(-) + +diff --git a/src/kpatch_io.c b/src/kpatch_io.c +index f563163..08f6e46 100644 +--- a/src/kpatch_io.c ++++ b/src/kpatch_io.c +@@ -31,6 +31,15 @@ void *kp_realloc(void *p, int oldsz, int newsz) + return p2; + } + ++static char *kp_strdup(const char *s) ++{ ++ char *new = strdup(s); ++ if (new == NULL) { ++ kpfatal("failed to allocate memory"); ++ } ++ return new; ++} ++ + int read_file(struct kp_file *file, const char *fname) + { + int sz = 64; +@@ -45,12 +54,12 @@ int read_file(struct kp_file *file, const char *fname) + + file->rpath = realpath(fname, NULL); + if (!file->rpath) +- file->rpath = strdup(""); +- tmp = strdup(file->rpath); +- file->dirname = strdup(dirname(file->dirname)); ++ file->rpath = kp_strdup(""); ++ tmp = kp_strdup(file->rpath); ++ file->dirname = kp_strdup(dirname(tmp)); + free(tmp); +- tmp = strdup(file->rpath); +- file->basename = strdup(basename(file->basename)); ++ tmp = kp_strdup(file->rpath); ++ file->basename = kp_strdup(basename(tmp)); + free(tmp); + + if (!file->f) +@@ -67,7 +76,7 @@ int read_file(struct kp_file *file, const char *fname) + break; + + trim_crlf(buf); +- file->lines[file->nr_lines++] = strdup(buf); ++ file->lines[file->nr_lines++] = kp_strdup(buf); + } + file->lines[0] = ""; /* make line with index 0 to be empty, so that our line numbers would match and editor for easier debugging, i.e. we start from index=1 */ + fclose(file->f); +-- +2.27.0 + diff --git a/0146-process-Revert-codedex-fix-double-free.patch b/0146-process-Revert-codedex-fix-double-free.patch new file mode 100644 index 0000000..e6df4a5 --- /dev/null +++ b/0146-process-Revert-codedex-fix-double-free.patch @@ -0,0 +1,53 @@ +From 5b9a00d2ea3d9d51784d077846913d6f87bf0e5b Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Tue, 3 Aug 2021 19:45:51 +0800 +Subject: [PATCH 146/165] process: Revert "codedex: fix double free" + +Revert "codedex: fix double free" +This reverts commit 501ad445eced2d4297fa2cb6ee4bceb94300d7f7. + +Signed-off-by: yubihong +Signed-off-by: imxcc +--- + src/include/kpatch_process.h | 3 --- + src/kpatch_process.c | 3 +-- + 2 files changed, 1 insertion(+), 5 deletions(-) + +diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h +index 2e23f00..56b4be1 100644 +--- a/src/include/kpatch_process.h ++++ b/src/include/kpatch_process.h +@@ -136,9 +136,6 @@ struct object_file { + + /* Is it an unpatch target */ + unsigned int is_unpatch_target_elf:1; +- +- /* Is kpfile duplicated */ +- unsigned int is_kpfile_dup:1; + }; + + struct kpatch_process { +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index 04c02f2..aa5ce27 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -166,7 +166,6 @@ process_new_object(kpatch_process_t *proc, + o->ndynsyms = 0; + o->dynsymnames = NULL; + init_kp_file(&o->kpfile); +- o->is_kpfile_dup = 0; + + list_add(&o->list, &proc->objs); + proc->num_objs++; +@@ -350,7 +349,7 @@ object_destroy(struct object_file *o) + if (o->is_patch) { + free(o->info); + } +- if (o->is_kpfile_dup && o->kpfile.patch) { ++ if (o->kpfile.patch) { + free(o->kpfile.patch); + } + free(o); +-- +2.27.0 + diff --git a/0147-process-malloc-new-memory-to-store-target-object-s-k.patch b/0147-process-malloc-new-memory-to-store-target-object-s-k.patch new file mode 100644 index 0000000..e4261cd --- /dev/null +++ b/0147-process-malloc-new-memory-to-store-target-object-s-k.patch @@ -0,0 +1,50 @@ +From 542777ed3322898fe6ffee4fe4d1a75ffd356468 Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Tue, 3 Aug 2021 20:20:58 +0800 +Subject: [PATCH 147/165] process: malloc new memory to store target object's + kpfile.patch during unpatching + +During unapply processing, the kpfile.patch pointed adderss of the kpatch +object is also assign to the target object's kpfile.patch. It's high +risk to do this which will cause double free. So we mallocate new memory +to store target object's kpfile.patch during unpatching. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_process.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index aa5ce27..d8cf6ad 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -425,6 +425,7 @@ kpatch_process_associate_patches(kpatch_process_t *proc, const char *patch_id) + struct object_file *o, *objpatch; + size_t found = 0; + size_t unpatch_target_elf_num = 0; ++ struct kpatch_file *patch = NULL; + + list_for_each_entry(objpatch, &proc->objs, list) { + +@@ -448,8 +449,16 @@ kpatch_process_associate_patches(kpatch_process_t *proc, const char *patch_id) + struct obj_vm_area, + list); + o->kpta = patchvma->inmem.start; +- o->kpfile = objpatch->kpfile; + o->is_unpatch_target_elf = 1; ++ ++ /* copy kpatch object kpfile information */ ++ patch = malloc(sizeof(struct kpatch_file)); ++ if (patch == NULL) ++ return -1; ++ memcpy(patch, objpatch->kpfile.patch, sizeof(struct kpatch_file)); ++ o->kpfile.patch = patch; ++ o->kpfile.size = objpatch->kpfile.size; ++ + unpatch_target_elf_num++; + } + +-- +2.27.0 + diff --git a/0148-ptrace-fix-NULL-pointer-access-problem.patch b/0148-ptrace-fix-NULL-pointer-access-problem.patch new file mode 100644 index 0000000..fa3eac8 --- /dev/null +++ b/0148-ptrace-fix-NULL-pointer-access-problem.patch @@ -0,0 +1,53 @@ +From 8b1a45726675020196922e6e12d2f7596a20dc7e Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Mon, 9 Aug 2021 16:16:27 +0800 +Subject: [PATCH 148/165] ptrace: fix NULL pointer access problem + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/arch/aarch64/arch_ptrace.c | 7 ++++++- + src/arch/x86/arch_ptrace.c | 7 ++++++- + 2 files changed, 12 insertions(+), 2 deletions(-) + +diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c +index e43a96d..72e5853 100644 +--- a/src/arch/aarch64/arch_ptrace.c ++++ b/src/arch/aarch64/arch_ptrace.c +@@ -451,8 +451,13 @@ kpatch_arch_ptrace_waitpid(kpatch_process_t *proc, + * Bail out. + */ + pctx = kpatch_ptrace_find_thread(proc, pid, 0); +- if (pctx != NULL) ++ if (pctx != NULL) { + pctx->running = 0; ++ kperr("the thread ran out: %d, pc= %llx, expected = %lx\n", ++ pid, regs.pc, pctx->execute_until); ++ } else { ++ kperr("the thread ran out: %d, pc= %llx\n", pid, regs.pc); ++ } + + /* TODO: fix the latter by SINGLESTEPping such a thread with + * the original instruction in place */ +diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c +index 3e3d497..e208fda 100644 +--- a/src/arch/x86/arch_ptrace.c ++++ b/src/arch/x86/arch_ptrace.c +@@ -478,8 +478,13 @@ int kpatch_arch_ptrace_waitpid(kpatch_process_t *proc, + * Bail out. + */ + pctx = kpatch_ptrace_find_thread(proc, pid, 0); +- if (pctx != NULL) ++ if (pctx != NULL) { + pctx->running = 0; ++ kperr("the thread ran out: %d, rip = %llx, expected = %lx\n", ++ pid, regs.rip, pctx->execute_until); ++ } else { ++ kperr("the thread ran out: %d, rip = %llx\n", pid, regs.rip); ++ } + + /* TODO: fix the latter by SINGLESTEPping such a thread with + * the original instruction in place */ +-- +2.27.0 + diff --git a/0149-ptrace-check-the-return-value-of-open-function.patch b/0149-ptrace-check-the-return-value-of-open-function.patch new file mode 100644 index 0000000..22c27df --- /dev/null +++ b/0149-ptrace-check-the-return-value-of-open-function.patch @@ -0,0 +1,45 @@ +From 701b62f3ffef12dcfef3184cc65650de710f85ac Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Mon, 9 Aug 2021 20:35:48 +0800 +Subject: [PATCH 149/165] ptrace: check the return value of open function + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/arch/aarch64/arch_ptrace.c | 4 ++++ + src/arch/x86/arch_ptrace.c | 4 ++++ + 2 files changed, 8 insertions(+) + +diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c +index 72e5853..774dc21 100644 +--- a/src/arch/aarch64/arch_ptrace.c ++++ b/src/arch/aarch64/arch_ptrace.c +@@ -129,6 +129,10 @@ kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) + + snprintf(buf, sizeof(buf), "/proc/%d/mem", proc->pid); + proc->memfd = open(buf, O_RDWR); ++ if (proc->memfd < 0) { ++ kplogerror("Failed to open proc mem\n"); ++ return -1; ++ } + } + + kpdebug("...done\n"); +diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c +index e208fda..9069484 100644 +--- a/src/arch/x86/arch_ptrace.c ++++ b/src/arch/x86/arch_ptrace.c +@@ -126,6 +126,10 @@ kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) + + snprintf(buf, sizeof(buf), "/proc/%d/mem", proc->pid); + proc->memfd = open(buf, O_RDWR); ++ if (proc->memfd < 0) { ++ kplogerror("Failed to open proc mem\n"); ++ return -1; ++ } + } + + kpdebug("...done\n"); +-- +2.27.0 + diff --git a/0150-log-optimize-some-descriptions-and-formats-of-logs.patch b/0150-log-optimize-some-descriptions-and-formats-of-logs.patch new file mode 100644 index 0000000..3296fd8 --- /dev/null +++ b/0150-log-optimize-some-descriptions-and-formats-of-logs.patch @@ -0,0 +1,83 @@ +From db3a4ad5c6c75302b019f8eea166245b59d4748d Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Tue, 10 Aug 2021 09:42:37 +0800 +Subject: [PATCH 150/165] log: optimize some descriptions and formats of logs + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_common.c | 4 ++-- + src/kpatch_patch.c | 2 +- + src/kpatch_storage.c | 14 ++++++++------ + 3 files changed, 11 insertions(+), 9 deletions(-) + +diff --git a/src/kpatch_common.c b/src/kpatch_common.c +index 95d4a54..bbc9eed 100644 +--- a/src/kpatch_common.c ++++ b/src/kpatch_common.c +@@ -42,14 +42,14 @@ int kpatch_open_fd(int fd, struct kp_file *kpatch) + + kpdebug("OK\nQuerying file size..."); + if (fstat(fd, &st) == -1) { +- kpdebug("FAIL: %s\n", strerror(errno)); ++ kperr("FSTAT FAIL: %s\n", strerror(errno)); + return -1; + } + kpdebug("OK\nMapping patch file..."); + kpatch->size = st.st_size; + kpatch->patch = mmap(NULL, st.st_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); + if (kpatch->patch == MAP_FAILED) { +- kpdebug("FAIL: %s\n", strerror(errno)); ++ kperr("MMAP FAIL: %s\n", strerror(errno)); + return -1; + } + +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index 148ac29..98e8b9f 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -773,7 +773,7 @@ out_free: + if (is_calc_time) { + gettimeofday(&end_tv, NULL); + frozen_time = GET_MICROSECONDS(end_tv, start_tv); +- kpinfo("PID '%d' process unpatch frozen_time is %ld microsecond\n", pid, frozen_time); ++ kpinfo("PID '%d' process unpatch frozen_time is %lu microsecond\n", pid, frozen_time); + } + + out: +diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c +index 1569a95..8798d25 100644 +--- a/src/kpatch_storage.c ++++ b/src/kpatch_storage.c +@@ -80,11 +80,15 @@ int storage_init(kpatch_storage_t *storage, + } + + patch_fd = open(fname, O_RDONLY | O_CLOEXEC); +- if (patch_fd < 0) +- goto out_err; ++ if (patch_fd < 0) { ++ kperr("cannot open storage '%s'\n", fname); ++ return -1; ++ } + +- if (fstat(patch_fd, &stat) < 0) +- goto out_close; ++ if (fstat(patch_fd, &stat) < 0) { ++ kperr("FSTAT FAIL: %s\n", strerror(errno)); ++ goto out_close; ++ } + + storage->patch_fd = patch_fd; + storage->is_patch_dir = S_ISDIR(stat.st_mode); +@@ -113,8 +117,6 @@ int storage_init(kpatch_storage_t *storage, + out_close: + close(patch_fd); + +-out_err: +- kplogerror("cannot open storage '%s'\n", fname); + return -1; + } + +-- +2.27.0 + diff --git a/0151-security-replace-sprintf-with-snprintf-to-ensure-saf.patch b/0151-security-replace-sprintf-with-snprintf-to-ensure-saf.patch new file mode 100644 index 0000000..b51ad0b --- /dev/null +++ b/0151-security-replace-sprintf-with-snprintf-to-ensure-saf.patch @@ -0,0 +1,87 @@ +From 7065a65862d5b72f63fd28945cc65644c914f731 Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Tue, 10 Aug 2021 11:15:13 +0800 +Subject: [PATCH 151/165] security: replace sprintf with snprintf to ensure + safety + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/include/kpatch_process.h | 3 +++ + src/kpatch_process.c | 9 ++++++--- + src/kpatch_ptrace.c | 4 ++-- + 3 files changed, 11 insertions(+), 5 deletions(-) + +diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h +index 56b4be1..cdde8c8 100644 +--- a/src/include/kpatch_process.h ++++ b/src/include/kpatch_process.h +@@ -26,6 +26,9 @@ + #include "kpatch_file.h" + #include "list.h" + ++/* "[kpatch-]" string length */ ++#define KPATCH_OBJECT_NAME_LEN (KPATCH_BUILDID_LEN + sizeof("[kpatch-]")) ++ + struct kpatch_process; + typedef struct kpatch_process kpatch_process_t; + +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index d8cf6ad..243580f 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -209,7 +209,8 @@ process_get_object_type(kpatch_process_t *proc, + struct kpatch_file *pkpfile = (struct kpatch_file *)buf; + + if (!strcmp(pkpfile->magic, KPATCH_FILE_MAGIC1)) { +- sprintf(name, "[kpatch-%s]", pkpfile->buildid); ++ snprintf(name, KPATCH_OBJECT_NAME_LEN, ++ "[kpatch-%s]", pkpfile->buildid); + return type; + } + } +@@ -816,7 +817,8 @@ process_print_cmdline(kpatch_process_t *proc) + int fd; + ssize_t i, rv; + +- sprintf(buf, "/proc/%d/cmdline", proc->pid); ++ snprintf(buf, sizeof("/proc/0123456789/cmdline"), ++ "/proc/%d/cmdline", proc->pid); + fd = open(buf, O_RDONLY); + if (fd == -1) { + kplogerror("open\n"); +@@ -857,7 +859,8 @@ process_get_comm_ld_linux(kpatch_process_t *proc) + ssize_t i, rv; + + kpdebug("process_get_comm_ld_linux"); +- sprintf(buf, "/proc/%d/cmdline", proc->pid); ++ snprintf(buf, sizeof("/proc/0123456789/cmdline"), ++ "/proc/%d/cmdline", proc->pid); + fd = open(buf, O_RDONLY); + if (fd == -1) { + kplogerror("open\n"); +diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c +index dc11357..ae67ba3 100644 +--- a/src/kpatch_ptrace.c ++++ b/src/kpatch_ptrace.c +@@ -177,7 +177,7 @@ int kpatch_ptrace_get_entry_point(struct kpatch_ptrace_ctx *pctx, + + kpdebug("Looking for entry point..."); + +- sprintf(path, "/proc/%d/auxv", pctx->pid); ++ snprintf(path, sizeof(path), "/proc/%d/auxv", pctx->pid); + fd = open(path, O_RDONLY); + if (fd == -1) { + kplogerror("can't open %s\n", path); +@@ -495,7 +495,7 @@ get_threadgroup_id(int tid) + char buf[256]; + int pid = -1; + +- sprintf(buf, "/proc/%d/status", tid); ++ snprintf(buf, sizeof(buf), "/proc/%d/status", tid); + + fh = fopen(buf, "r"); + if (fh == NULL) +-- +2.27.0 + diff --git a/0152-security-replace-strcpy-with-strncpy-to-ensure-safet.patch b/0152-security-replace-strcpy-with-strncpy-to-ensure-safet.patch new file mode 100644 index 0000000..6207f81 --- /dev/null +++ b/0152-security-replace-strcpy-with-strncpy-to-ensure-safet.patch @@ -0,0 +1,31 @@ +From b5477ec955090895541ab5d2e59def0485a96e5a Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Tue, 10 Aug 2021 14:54:52 +0800 +Subject: [PATCH 152/165] security: replace strcpy with strncpy to ensure + safety + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_storage.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c +index 8798d25..d8d8864 100644 +--- a/src/kpatch_storage.c ++++ b/src/kpatch_storage.c +@@ -108,7 +108,10 @@ int storage_init(kpatch_storage_t *storage, + kpatch_close_file(&storage->patch.kpfile); + goto out_close; + } +- strcpy(storage->patch.buildid, storage->patch.kpfile.patch->buildid); ++ strncpy(storage->patch.buildid, ++ storage->patch.kpfile.patch->buildid, ++ KPATCH_BUILDID_LEN); ++ storage->patch.buildid[KPATCH_BUILDID_LEN] = '\0'; + } + + storage->path = strdup(fname); +-- +2.27.0 + diff --git a/0153-process-solve-only-can-apply-one-patch-in-left-hole-.patch b/0153-process-solve-only-can-apply-one-patch-in-left-hole-.patch new file mode 100644 index 0000000..da0f77e --- /dev/null +++ b/0153-process-solve-only-can-apply-one-patch-in-left-hole-.patch @@ -0,0 +1,46 @@ +From 678f682c0b32d73a2de7bda691f76c992c38f226 Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Sat, 14 Aug 2021 15:28:08 +0800 +Subject: [PATCH 153/165] process: solve only can apply one patch in left hole + problem + +While using left vm holes, the patient's obj_end address is bigger than +left vm hole's start address, so we should use (obj_end - left_hole->start) +to calcuate vma distance. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/arch/aarch64/arch_process.c | 2 +- + src/arch/x86/arch_process.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/arch/aarch64/arch_process.c b/src/arch/aarch64/arch_process.c +index 7ddf4aa..009a6e6 100644 +--- a/src/arch/aarch64/arch_process.c ++++ b/src/arch/aarch64/arch_process.c +@@ -91,7 +91,7 @@ object_find_patch_region(struct object_file *obj, + left_hole = NULL; + else if (hole_size(left_hole) > memsize) { + region_start = +- (left_hole->start - obj_end) <= max_distance ? ++ (obj_end - left_hole->start) <= max_distance ? + left_hole->start : obj_end > max_distance ? + obj_end - max_distance : 0; + region_end = left_hole->end - memsize; +diff --git a/src/arch/x86/arch_process.c b/src/arch/x86/arch_process.c +index 7a15252..d9e9963 100644 +--- a/src/arch/x86/arch_process.c ++++ b/src/arch/x86/arch_process.c +@@ -90,7 +90,7 @@ unsigned long object_find_patch_region(struct object_file *obj, + left_hole = NULL; + else if (hole_size(left_hole) > memsize) { + region_start = +- (left_hole->start - obj_end) <= max_distance ? ++ (obj_end - left_hole->start) <= max_distance ? + left_hole->start : obj_end > max_distance ? + obj_end - max_distance : 0; + region_end = left_hole->end - memsize; +-- +2.27.0 + diff --git a/0154-patch-fix-the-type-mismatch-problem.patch b/0154-patch-fix-the-type-mismatch-problem.patch new file mode 100644 index 0000000..c9a2775 --- /dev/null +++ b/0154-patch-fix-the-type-mismatch-problem.patch @@ -0,0 +1,29 @@ +From f76f807d8af7aa2795e51bd319abe427c93da25b Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Mon, 16 Aug 2021 20:32:29 +0800 +Subject: [PATCH 154/165] patch: fix the type mismatch problem + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_patch.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index 98e8b9f..bfa0c10 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -322,8 +322,8 @@ duplicate_kp_file(struct object_file *o) + return 0; + } + +-extern int PATCH_APPLIED; +-extern int HUNK_SIZE; ++extern unsigned int PATCH_APPLIED; ++extern unsigned int HUNK_SIZE; + + static int + object_apply_patch(struct object_file *o) +-- +2.27.0 + diff --git a/0155-optimize-fix-some-coding-problems.patch b/0155-optimize-fix-some-coding-problems.patch new file mode 100644 index 0000000..bf3e27e --- /dev/null +++ b/0155-optimize-fix-some-coding-problems.patch @@ -0,0 +1,79 @@ +From 8244998d1539351790196760e7a074267d08f99c Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Mon, 16 Aug 2021 22:16:15 +0800 +Subject: [PATCH 155/165] optimize: fix some coding problems + +solve following problems: +1. check index before using for flavor[]; +2. free pids malloc memory before return; + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_gensrc.c | 7 ++++++- + src/kpatch_process.c | 6 ++++-- + 2 files changed, 10 insertions(+), 3 deletions(-) + +diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c +index 64c2f10..c62789c 100644 +--- a/src/kpatch_gensrc.c ++++ b/src/kpatch_gensrc.c +@@ -332,11 +332,12 @@ static int is_global_rip_reference(kpstr_t *t) + + #define MOV_PREFIX "mov" + #define MOV_LENGTH (sizeof(MOV_PREFIX) - 1) ++#define MAX_FLAVOR_SIZE 16 + + void str_do_gotpcrel(struct kp_file *f, char *dst, char *src) + { + kpstr_t mov, movsrc, movdst, tmptok; +- char flavor[16], *s = src, *d = dst; ++ char flavor[MAX_FLAVOR_SIZE], *s = src, *d = dst; + + *d = 0; + +@@ -350,6 +351,10 @@ void str_do_gotpcrel(struct kp_file *f, char *dst, char *src) + if (strstr(s, "%rip") == NULL) + goto out; + ++ if (mov.l < MOV_LENGTH || ++ mov.l - MOV_LENGTH >= MAX_FLAVOR_SIZE) ++ goto out; ++ + strncpy(flavor, mov.s + MOV_LENGTH, mov.l - MOV_LENGTH); + flavor[mov.l - MOV_LENGTH] = '\0'; + +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index 243580f..94ace79 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -651,7 +651,7 @@ process_list_threads(kpatch_process_t *proc, + size_t *npids, + size_t *alloc) + { +- DIR *dir; ++ DIR *dir = NULL; + struct dirent *de; + char path[128]; + int *pids = *ppids; +@@ -660,7 +660,7 @@ process_list_threads(kpatch_process_t *proc, + dir = opendir(path); + if (!dir) { + kplogerror("can't open '%s' directory\n", path); +- return -1; ++ goto dealloc; + } + + *npids = 0; +@@ -692,6 +692,8 @@ process_list_threads(kpatch_process_t *proc, + return *npids; + + dealloc: ++ if (dir) ++ closedir(dir); + free(pids); + *ppids = NULL; + *alloc = *npids = 0; +-- +2.27.0 + diff --git a/0156-security-check-kpatch-file-size-before-using-it.patch b/0156-security-check-kpatch-file-size-before-using-it.patch new file mode 100644 index 0000000..228b1d6 --- /dev/null +++ b/0156-security-check-kpatch-file-size-before-using-it.patch @@ -0,0 +1,50 @@ +From f3eee1af4a3930d95f7faf47d5e67626a4ceed49 Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Thu, 19 Aug 2021 20:24:01 +0800 +Subject: [PATCH 156/165] security: check kpatch file size before using it + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_common.c | 6 ++++++ + src/kpatch_storage.c | 6 ++++++ + 2 files changed, 12 insertions(+) + +diff --git a/src/kpatch_common.c b/src/kpatch_common.c +index bbc9eed..14426b7 100644 +--- a/src/kpatch_common.c ++++ b/src/kpatch_common.c +@@ -45,7 +45,13 @@ int kpatch_open_fd(int fd, struct kp_file *kpatch) + kperr("FSTAT FAIL: %s\n", strerror(errno)); + return -1; + } ++ + kpdebug("OK\nMapping patch file..."); ++ if (st.st_size < sizeof(struct kpatch_file)) { ++ kperr("storage size(%jdB) is less than kaptch header size(%zuB)", ++ (intmax_t)st.st_size, sizeof(struct kpatch_file)); ++ return -1; ++ } + kpatch->size = st.st_size; + kpatch->patch = mmap(NULL, st.st_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); + if (kpatch->patch == MAP_FAILED) { +diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c +index d8d8864..6fbb739 100644 +--- a/src/kpatch_storage.c ++++ b/src/kpatch_storage.c +@@ -55,6 +55,12 @@ patch_file_verify(struct kp_file *kpfile) + return -1; + } + ++ if (k->kpatch_offset + sizeof(GElf_Ehdr) > size) { ++ kperr("'%s' patch is invalid: Invalid kpatch offset: %u\n", ++ k->modulename, k->kpatch_offset); ++ return -1; ++ } ++ + hdr = (void *)k + k->kpatch_offset; + if (memcmp(hdr->e_ident, ELFMAG, SELFMAG) || + hdr->e_type != ET_REL || +-- +2.27.0 + diff --git a/0157-objinfo-check-index-before-using.patch b/0157-objinfo-check-index-before-using.patch new file mode 100644 index 0000000..6a42b35 --- /dev/null +++ b/0157-objinfo-check-index-before-using.patch @@ -0,0 +1,27 @@ +From 0990cdffff8cf9183948cb231bd7b5baef868caf Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Mon, 23 Aug 2021 14:56:56 +0800 +Subject: [PATCH 157/165] objinfo: check index before using + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_elf_objinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/kpatch_elf_objinfo.c b/src/kpatch_elf_objinfo.c +index bc63007..85e58fe 100644 +--- a/src/kpatch_elf_objinfo.c ++++ b/src/kpatch_elf_objinfo.c +@@ -153,7 +153,7 @@ int kpatch_objinfo_is_our_section(kpatch_objinfo *oi, int secnum) + int i = 0, n = ARRAY_SIZE(oi->_kpatch_sections); + unsigned short *s = oi->_kpatch_sections; + +- for (; s[i] && i < n; i++) { ++ for (; i < n && s[i]; i++) { + if (s[i] == secnum) + return 1; + } +-- +2.27.0 + diff --git a/0158-log-log-enhancement-to-facilitate-problems-location.patch b/0158-log-log-enhancement-to-facilitate-problems-location.patch new file mode 100644 index 0000000..f314d05 --- /dev/null +++ b/0158-log-log-enhancement-to-facilitate-problems-location.patch @@ -0,0 +1,248 @@ +From c4a205208122c1201f320839600aae0f01253e9c Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Mon, 23 Aug 2021 20:20:41 +0800 +Subject: [PATCH 158/165] log: log enhancement to facilitate problems location + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/arch/aarch64/arch_patch.c | 3 +++ + src/arch/x86/arch_patch.c | 3 +++ + src/kpatch_elf.c | 2 +- + src/kpatch_patch.c | 33 ++++++++++++++++++++++++--------- + src/kpatch_process.c | 26 +++++++++++++++++--------- + 5 files changed, 48 insertions(+), 19 deletions(-) + +diff --git a/src/arch/aarch64/arch_patch.c b/src/arch/aarch64/arch_patch.c +index 461e28c..268520c 100644 +--- a/src/arch/aarch64/arch_patch.c ++++ b/src/arch/aarch64/arch_patch.c +@@ -59,6 +59,9 @@ int patch_apply_hunk(struct object_file *o, size_t nhunk) + code, + info->daddr, + sizeof(code)); ++ if (ret < 0) { ++ kperr("Failed to write remote info"); ++ } + /* + * NOTE(pboldin): This is only stored locally, as information have + * been copied to patient's memory already. +diff --git a/src/arch/x86/arch_patch.c b/src/arch/x86/arch_patch.c +index 00c52ca..0e039f6 100644 +--- a/src/arch/x86/arch_patch.c ++++ b/src/arch/x86/arch_patch.c +@@ -61,6 +61,9 @@ int patch_apply_hunk(struct object_file *o, size_t nhunk) + code, + info->daddr, + sizeof(code)); ++ if (ret < 0) { ++ kperr("Failed to write remote info"); ++ } + /* + * NOTE(pboldin): This is only stored locally, as information have + * been copied to patient's memory already. +diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c +index 7007d72..911b92e 100644 +--- a/src/kpatch_elf.c ++++ b/src/kpatch_elf.c +@@ -907,6 +907,6 @@ int kpatch_elf_load_kpatch_info(struct object_file *o) + } + } + +- kpdebug("failed\n"); ++ kperr("Failed to load kpatch info for %s", o->name); + return -1; + } +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index bfa0c10..0ec09e5 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -272,8 +272,10 @@ patch_ensure_safety(struct object_file *o, + list_for_each_entry(p, &o->proc->ptrace.pctxs, list) + nr++; + retips = malloc(nr * sizeof(unsigned long)); +- if (retips == NULL) ++ if (retips == NULL) { ++ kperr("Failed to malloc retips"); + return -1; ++ } + + memset(retips, 0, nr * sizeof(unsigned long)); + +@@ -393,16 +395,20 @@ object_apply_patch(struct object_file *o) + kp, + o->kpta, + kp->total_size); +- if (ret < 0) ++ if (ret < 0) { ++ kperr("Failed to write kpatch"); + return ret; ++ } + + if (o->jmp_table) { + ret = kpatch_process_mem_write(o->proc, + o->jmp_table, + o->kpta + kp->jmp_offset, + o->jmp_table->size); +- if (ret < 0) ++ if (ret < 0) { ++ kperr("Failed to write jmp table"); + return ret; ++ } + } + + ret = patch_ensure_safety(o, ACTION_APPLY_PATCH); +@@ -584,26 +590,32 @@ object_find_applied_patch_info(struct object_file *o) + if (o->info != NULL) + return 0; + +- if (o->kpfile.patch) ++ if (o->kpfile.patch) { + patch_id = o->kpfile.patch->id; +- else ++ } else { ++ kperr("Object(%s) kpatch file is NULL", o->name); + return -1; ++ } + + applied_patch = kpatch_object_get_applied_patch_by_id(o, patch_id); + if (!applied_patch) { +- fprintf(stderr, "Failed to find target applied patch!\n"); ++ kperr("Failed to find target applied patch!"); + return -1; + } + + iter = kpatch_process_mem_iter_init(o->proc); +- if (iter == NULL) ++ if (iter == NULL) { ++ kperr("Failed to initialize iterator"); + return -1; ++ } + + remote_info = (void *)o->kpta + o->kpfile.patch->user_info; + do { + ret = REMOTE_PEEK(iter, tmpinfo, remote_info); +- if (ret < 0) ++ if (ret < 0) { ++ kperr("Failed to get remote kpatch info"); + goto err; ++ } + + if (is_end_info(&tmpinfo)) + break; +@@ -612,6 +624,7 @@ object_find_applied_patch_info(struct object_file *o) + nalloc += 16; + if (object_kpatch_info_realloc(o, nalloc) < 0) { + ret = -1; ++ kperr("Failed to expand kpatch info mem"); + goto err; + } + } +@@ -674,8 +687,10 @@ object_unapply_patch(struct object_file *o, int check_flag) + o->kpta, + o->kpfile.size); + +- if (ret < 0) ++ if (ret < 0) { ++ kperr("Failed to unmap remote kpatch mem"); + return ret; ++ } + + return 1; + } +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index 94ace79..0a84035 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -493,14 +493,14 @@ kpatch_process_parse_proc_maps(kpatch_process_t *proc) + */ + fd = dup(proc->fdmaps); + if (fd < 0) { +- kperr("unable to dup fd %d\n", proc->fdmaps); ++ kperr("unable to dup fd %d", proc->fdmaps); + return -1; + } + + lseek(fd, 0, SEEK_SET); + f = fdopen(fd, "r"); + if (f == NULL) { +- kperr("unable to fdopen %d\n", fd); ++ kperr("unable to fdopen %d", fd); + close(fd); + return -1; + } +@@ -518,8 +518,10 @@ kpatch_process_parse_proc_maps(kpatch_process_t *proc) + r = sscanf(line, "%lx-%lx %s %lx %x:%x %d %255s", + &start, &end, perms, &offset, + &maj, &min, &inode, name_); +- if (r == EOF) ++ if (r == EOF) { ++ kperr("sscanf failed: end of file"); + goto error; ++ } + if (r != 8) + strcpy(name, "[anonymous]"); + +@@ -534,8 +536,10 @@ kpatch_process_parse_proc_maps(kpatch_process_t *proc) + hole = process_add_vm_hole(proc, + hole_start + PAGE_SIZE, + start - PAGE_SIZE); +- if (hole == NULL) ++ if (hole == NULL) { ++ kperr("Failed to add vma hole"); + goto error; ++ } + } + hole_start = end; + +@@ -543,8 +547,10 @@ kpatch_process_parse_proc_maps(kpatch_process_t *proc) + + ret = process_add_object_vma(proc, makedev(maj, min), + inode, name, &vma, hole); +- if (ret < 0) ++ if (ret < 0) { ++ kperr("Failed to add object vma"); + goto error; ++ } + + if (!is_libc_base_set && + !strncmp(basename(name), "libc", 4) && +@@ -557,12 +563,12 @@ kpatch_process_parse_proc_maps(kpatch_process_t *proc) + fclose(f); + + if (!is_libc_base_set) { +- kperr("Can't find libc_base required for manipulations: %d\n", ++ kperr("Can't find libc_base required for manipulations: %d", + proc->pid); + return -1; + } + +- kpinfo("Found %d object file(s).\n", proc->num_objs); ++ kpinfo("Found %d object file(s)", proc->num_objs); + + return 0; + +@@ -589,7 +595,7 @@ kpatch_process_map_object_files(kpatch_process_t *proc, const char *patch_id) + + ret = kpatch_process_associate_patches(proc, patch_id); + if (ret >= 0) { +- kpinfo("Found %d applied patch(es).\n", ret); ++ kpinfo("Found %d applied patch(es)", ret); + } + + return ret; +@@ -1034,8 +1040,10 @@ vm_hole_split(struct vm_hole *hole, + struct vm_hole *left = NULL; + + left = malloc(sizeof(*hole)); +- if (left == NULL) ++ if (left == NULL) { ++ kperr("Failed to malloc for vm hole"); + return -1; ++ } + + left->start = hole->start; + left->end = alloc_start; +-- +2.27.0 + diff --git a/0159-gensrc-make-sure-.kpatch.data-is-4K-page-alignment.patch b/0159-gensrc-make-sure-.kpatch.data-is-4K-page-alignment.patch new file mode 100644 index 0000000..d853aac --- /dev/null +++ b/0159-gensrc-make-sure-.kpatch.data-is-4K-page-alignment.patch @@ -0,0 +1,50 @@ +From 18713d8f8ac85ac1f812944bb977d675db1d6a55 Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Sat, 28 Aug 2021 11:14:10 +0800 +Subject: [PATCH 159/165] gensrc: make sure .kpatch.data is 4K-page alignment + +In order to use mprotect to change .kpatch.data permissions, we need to +make sure .kpatch.data is 4K-page alignment. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_gensrc.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c +index c62789c..32c7afc 100644 +--- a/src/kpatch_gensrc.c ++++ b/src/kpatch_gensrc.c +@@ -434,7 +434,9 @@ out: + + static void change_section(struct kp_file *fout, struct section_desc *sect, int flags) + { ++ static int init_data_section = 0; + char *s; ++ char *align = NULL; + + if (sect == NULL) { + kpfatal("Section description is NULL!\n"); +@@ -444,10 +446,17 @@ static void change_section(struct kp_file *fout, struct section_desc *sect, int + s = sect->outname; + else if (sect->type & SECTION_EXECUTABLE) + s = ".kpatch.text,\"ax\",@progbits"; +- else ++ else { + s = ".kpatch.data,\"aw\",@progbits"; ++ if (!init_data_section && !(flags & FLAG_PUSH_SECTION)) { ++ init_data_section = 1; ++ align = ".p2align\t12"; ++ } ++ } + + fprintf(fout->f, "\t.%ssection %s\n", (flags & FLAG_PUSH_SECTION) ? "push" : "", s); ++ if (align) ++ fprintf(fout->f, "\t%s\n", align); + } + + void get_comm_args(struct kp_file *f, int l, kpstr_t *xname, int *sz, int *align) +-- +2.27.0 + diff --git a/0160-elf-get-.kpatch.data-offset.patch b/0160-elf-get-.kpatch.data-offset.patch new file mode 100644 index 0000000..506aa63 --- /dev/null +++ b/0160-elf-get-.kpatch.data-offset.patch @@ -0,0 +1,103 @@ +From ac3f200537e70195cb1bb55beaa7e6b2249101aa Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Tue, 31 Aug 2021 10:57:56 +0800 +Subject: [PATCH 160/165] elf: get .kpatch.data offset + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/include/kpatch_elf.h | 1 + + src/include/kpatch_process.h | 3 +++ + src/kpatch_elf.c | 26 ++++++++++++++++++++++++++ + src/kpatch_patch.c | 2 ++ + src/kpatch_process.c | 1 + + 5 files changed, 33 insertions(+) + +diff --git a/src/include/kpatch_elf.h b/src/include/kpatch_elf.h +index 74efe04..0f2cdad 100644 +--- a/src/include/kpatch_elf.h ++++ b/src/include/kpatch_elf.h +@@ -18,6 +18,7 @@ kpatch_elf_object_set_ehdr(struct object_file *o, + int kpatch_elf_object_is_shared_lib(struct object_file *o); + int kpatch_elf_parse_program_header(struct object_file *o); + int kpatch_elf_load_kpatch_info(struct object_file *o); ++void kpatch_get_kpatch_data_offset(struct object_file *o); + + int kpatch_resolve(struct object_file *o); + int kpatch_relocate(struct object_file *o); +diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h +index cdde8c8..585e965 100644 +--- a/src/include/kpatch_process.h ++++ b/src/include/kpatch_process.h +@@ -111,6 +111,9 @@ struct object_file { + /* Program header */ + Elf64_Phdr *phdr; + ++ /* .kpatch.data sh_offset */ ++ Elf64_Off data_offset; ++ + /* Dynamic symbols exported by the object if it is a library */ + Elf64_Sym *dynsyms; + size_t ndynsyms; +diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c +index 911b92e..2685ff5 100644 +--- a/src/kpatch_elf.c ++++ b/src/kpatch_elf.c +@@ -910,3 +910,29 @@ int kpatch_elf_load_kpatch_info(struct object_file *o) + kperr("Failed to load kpatch info for %s", o->name); + return -1; + } ++ ++void ++kpatch_get_kpatch_data_offset(struct object_file *o) ++{ ++ GElf_Ehdr *ehdr; ++ GElf_Shdr *shdr; ++ int i; ++ ++ ehdr = (void *)o->kpfile.patch + o->kpfile.patch->kpatch_offset; ++ shdr = (void *)ehdr + ehdr->e_shoff; ++ ++ kpdebug("Geting patch .kpatch.data offset '%s'...", o->name); ++ for (i = 1; i < ehdr->e_shnum; i++) { ++ GElf_Shdr *s = shdr + i; ++ ++ if (!strcmp(secname(ehdr, s), ".kpatch.data")) { ++ o->data_offset = s->sh_offset; ++ kpdebug(".kpatch.data sh_offset: 0x%lx", s->sh_offset); ++ return; ++ } ++ } ++ ++ kpdebug("%s object doesn't have the .kpatch.data section", o->name); ++ return; ++} ++ +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index 0ec09e5..2d1e9ce 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -356,6 +356,8 @@ object_apply_patch(struct object_file *o) + if (ret < 0) + return ret; + ++ kpatch_get_kpatch_data_offset(o); ++ + kp = o->kpfile.patch; + + sz = ROUND_UP(kp->total_size, 8); +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index 0a84035..e7412d3 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -160,6 +160,7 @@ process_new_object(kpatch_process_t *proc, + o->load_offset = ~(unsigned long)0; + memset(&o->ehdr, 0, sizeof(o->ehdr)); + o->phdr = NULL; ++ o->data_offset = 0; + o->is_elf = 0; + o->is_unpatch_target_elf = 0; + o->dynsyms = NULL; +-- +2.27.0 + diff --git a/0161-process-rearrange-the-kpatch-region-memory-distribut.patch b/0161-process-rearrange-the-kpatch-region-memory-distribut.patch new file mode 100644 index 0000000..0f3b842 --- /dev/null +++ b/0161-process-rearrange-the-kpatch-region-memory-distribut.patch @@ -0,0 +1,177 @@ +From 49d28ba3384086a4eb23b129f176297aae3668f6 Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Tue, 31 Aug 2021 17:28:04 +0800 +Subject: [PATCH 161/165] process: rearrange the kpatch region memory + distribution + +The .kpatch.text section and the jmp table need executable permisson, +but their memory region are not consecutive. So we need rearrange the +kpatch region memory distribution, to make sure that The .kpatch.text +section memory region and the jmp table memory region are continuous. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/include/kpatch_file.h | 8 ++++--- + src/include/kpatch_process.h | 2 ++ + src/kpatch_elf.c | 3 ++- + src/kpatch_patch.c | 44 ++++++++++++++++++++++++++++-------- + 4 files changed, 44 insertions(+), 13 deletions(-) + +diff --git a/src/include/kpatch_file.h b/src/include/kpatch_file.h +index 963d06d..e098d67 100644 +--- a/src/include/kpatch_file.h ++++ b/src/include/kpatch_file.h +@@ -127,16 +127,18 @@ struct kpatch_file { + char pad[6]; + char modulename[64]; /* "vmlinux" or module name */ + char buildid[KPATCH_BUILDID_LEN + 1]; /* patch buildid */ +- char pad1[23]; ++ char pad1[7]; + + uint64_t build_time; /* build time */ + uint32_t csum; /* checksum of the whole kpatch */ + uint32_t nr_reloc; /* number of relocations */ + +- kpatch_offset_t kpatch_offset; /* content offset */ ++ kpatch_offset_t kpatch_offset; /* elf content offset in kpatch file */ + kpatch_offset_t rel_offset; /* relocations offset (vmlinux) */ + kpatch_offset_t total_size; /* total size = header + relocations + content */ + kpatch_offset_t jmp_offset; /* jump table offset for user-space patches */ ++ kpatch_offset_t elf_offset; /* elf content offset in patient's mem */ ++ char pad2[4]; + + /* array of entry offsets in the patch content */ + union { +@@ -162,7 +164,7 @@ struct kpatch_file { + }; + + char srcversion[25]; /* srcversion of module or zeros */ +- char pad2[231]; ++ char pad3[231]; + + /* relocations */ + /* content */ +diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h +index 585e965..6762678 100644 +--- a/src/include/kpatch_process.h ++++ b/src/include/kpatch_process.h +@@ -113,6 +113,8 @@ struct object_file { + + /* .kpatch.data sh_offset */ + Elf64_Off data_offset; ++ /* .kpatch.info sh_offset */ ++ Elf64_Off info_offset; + + /* Dynamic symbols exported by the object if it is a library */ + Elf64_Sym *dynsyms; +diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c +index 2685ff5..3ac56d9 100644 +--- a/src/kpatch_elf.c ++++ b/src/kpatch_elf.c +@@ -824,7 +824,7 @@ int kpatch_resolve(struct object_file *o) + * proper offet in *target process* region of memory + */ + s->sh_addr = (unsigned long)o->kpta + +- o->kpfile.patch->kpatch_offset + s->sh_offset; ++ o->kpfile.patch->elf_offset + s->sh_offset; + } else { + /* + * We copy the `sh_addr`esses from the original binary +@@ -899,6 +899,7 @@ int kpatch_elf_load_kpatch_info(struct object_file *o) + GElf_Shdr *s = shdr + i; + + if (!strcmp(secname(ehdr, s), ".kpatch.info")) { ++ o->info_offset = s->sh_offset; + o->info = (struct kpatch_info *)((void *)ehdr + + s->sh_offset); + o->ninfo = s->sh_size / sizeof(struct kpatch_info); +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index 2d1e9ce..7052c33 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -38,6 +38,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -359,8 +360,9 @@ object_apply_patch(struct object_file *o) + kpatch_get_kpatch_data_offset(o); + + kp = o->kpfile.patch; +- +- sz = ROUND_UP(kp->total_size, 8); ++ /* kpatch header */ ++ sz = ROUND_UP(sizeof(struct kpatch_file), 8); ++ /* jmp table */ + undef = kpatch_count_undefined(o); + if (undef) { + o->jmp_table = kpatch_new_jmp_table(undef); +@@ -368,13 +370,19 @@ object_apply_patch(struct object_file *o) + return -1; + } + kp->jmp_offset = sz; +- kpinfo("Jump table %d bytes for %d syms at offset 0x%x\n", +- o->jmp_table->size, undef, kp->jmp_offset); +- sz = ROUND_UP(sz + o->jmp_table->size, 128); ++ kpdebug("Jump table %d bytes for %d syms at offset 0x%x\n", ++ o->jmp_table->size, undef, kp->jmp_offset); ++ sz = ROUND_UP(sz + o->jmp_table->size, 4096); + } ++ sz = ROUND_UP(sz, 4096); + +- kp->user_info = (unsigned long)o->info - +- (unsigned long)o->kpfile.patch; ++ /* kpatch elf */ ++ kp->elf_offset = sz; ++ sz = ROUND_UP(sz + kp->total_size - sizeof(struct kpatch_file), 128); ++ /* Calculate the .kpatch.info offset in remote kapatch memory region ++ * and save it to kp->user_info */ ++ kp->user_info = (unsigned long)o->info_offset + (unsigned long)kp->elf_offset; ++ /* user undo */ + kp->user_undo = sz; + sz = ROUND_UP(sz + HUNK_SIZE * o->ninfo, 16); + +@@ -393,16 +401,34 @@ object_apply_patch(struct object_file *o) + ret = kpatch_relocate(o); + if (ret < 0) + return ret; ++ ++ /* Then, write kpatch elf to patient's memory */ ++ kpdebug("kpatch elf: 0x%lx + 0x%lx", o->kpta + kp->elf_offset, ++ kp->total_size - sizeof(struct kpatch_file)); ++ ret = kpatch_process_mem_write(o->proc, ++ (void *)kp + kp->kpatch_offset, ++ o->kpta + kp->elf_offset, ++ kp->total_size - sizeof(struct kpatch_file)); ++ if (ret < 0) { ++ kperr("Failed to write kpatch elf"); ++ return ret; ++ } ++ ++ /* Finally, write kpatch header to patient's memory */ ++ kpdebug("kpatch header: 0x%lx + 0x%lx", ++ o->kpta, sizeof(struct kpatch_file)); + ret = kpatch_process_mem_write(o->proc, + kp, + o->kpta, +- kp->total_size); ++ sizeof(struct kpatch_file)); + if (ret < 0) { +- kperr("Failed to write kpatch"); ++ kperr("Failed to write kpatch header"); + return ret; + } + + if (o->jmp_table) { ++ kpdebug("jmp table: 0x%lx + 0x%x", ++ o->kpta + kp->jmp_offset, o->jmp_table->size); + ret = kpatch_process_mem_write(o->proc, + o->jmp_table, + o->kpta + kp->jmp_offset, +-- +2.27.0 + diff --git a/0162-ptrace-support-remote-mprotect-syscall.patch b/0162-ptrace-support-remote-mprotect-syscall.patch new file mode 100644 index 0000000..149d160 --- /dev/null +++ b/0162-ptrace-support-remote-mprotect-syscall.patch @@ -0,0 +1,66 @@ +From b2e48fe69cfc5f3d6c42f3f2472693b9d3403e9a Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Sat, 28 Aug 2021 11:26:22 +0800 +Subject: [PATCH 162/165] ptrace: support remote mprotect syscall + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/include/kpatch_ptrace.h | 7 +++++++ + src/kpatch_ptrace.c | 22 ++++++++++++++++++++++ + 2 files changed, 29 insertions(+) + +diff --git a/src/include/kpatch_ptrace.h b/src/include/kpatch_ptrace.h +index 42869e7..43a6b02 100644 +--- a/src/include/kpatch_ptrace.h ++++ b/src/include/kpatch_ptrace.h +@@ -91,6 +91,13 @@ kpatch_mmap_remote(struct kpatch_ptrace_ctx *pctx, + int flags, + int fd, + off_t offset); ++ ++int ++kpatch_mprotect_remote(struct kpatch_ptrace_ctx *pctx, ++ unsigned long addr, ++ size_t length, ++ int prot); ++ + int + kpatch_munmap_remote(struct kpatch_ptrace_ctx *pctx, + unsigned long addr, +diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c +index ae67ba3..edf0e34 100644 +--- a/src/kpatch_ptrace.c ++++ b/src/kpatch_ptrace.c +@@ -539,6 +539,28 @@ kpatch_mmap_remote(struct kpatch_ptrace_ctx *pctx, + return res; + } + ++int ++kpatch_mprotect_remote(struct kpatch_ptrace_ctx *pctx, ++ unsigned long addr, ++ size_t length, ++ int prot) ++{ ++ int ret; ++ unsigned long res; ++ ++ kpdebug("mprotect_remote: 0x%lx+%lx\n", addr, length); ++ ret = kpatch_arch_syscall_remote(pctx, __NR_mprotect, (unsigned long)addr, ++ length, prot, 0, 0, 0, &res); ++ if (ret < 0) ++ return -1; ++ if (ret == 0 && res >= (unsigned long)-MAX_ERRNO) { ++ errno = -(long)res; ++ return -1; ++ } ++ ++ return 0; ++} ++ + int kpatch_munmap_remote(struct kpatch_ptrace_ctx *pctx, + unsigned long addr, + size_t length) +-- +2.27.0 + diff --git a/0163-patch-record-remote-malloc-total-memory-size.patch b/0163-patch-record-remote-malloc-total-memory-size.patch new file mode 100644 index 0000000..7674a8b --- /dev/null +++ b/0163-patch-record-remote-malloc-total-memory-size.patch @@ -0,0 +1,66 @@ +From 797977022335ac531585643681d59909f9364119 Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Wed, 1 Sep 2021 15:43:53 +0800 +Subject: [PATCH 163/165] patch: record remote malloc total memory size + +In order to unmap remote kpatch memory during unapplying kpatch, we need +to record remote malloc total memory size during applying kpatch. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/include/kpatch_file.h | 9 +++++++++ + src/kpatch_patch.c | 3 ++- + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/src/include/kpatch_file.h b/src/include/kpatch_file.h +index e098d67..e1f6ed9 100644 +--- a/src/include/kpatch_file.h ++++ b/src/include/kpatch_file.h +@@ -119,6 +119,14 @@ struct kpatch_payload { + char *description; // could be NULL + }; + ++/* ++ * When modifying the struct kpatch_file structure, you need to pay attention to ++ * two points: ++ * 1. make sure that the struct kpatch_file structure does not exceed ++ * 1024 bytes; ++ * 2. add pad to ensure that the start address of the ELF executable ++ * part is aligned to 8 bytes; ++ */ + struct kpatch_file { + char magic[8]; /* magic string */ + char id[8]; /* unique patch id */ +@@ -139,6 +147,7 @@ struct kpatch_file { + kpatch_offset_t jmp_offset; /* jump table offset for user-space patches */ + kpatch_offset_t elf_offset; /* elf content offset in patient's mem */ + char pad2[4]; ++ uint64_t kpatch_total_mem_sz; /* malloc total mem size for kpatch in patient's mem */ + + /* array of entry offsets in the patch content */ + union { +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index 7052c33..ff79c2c 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -387,6 +387,7 @@ object_apply_patch(struct object_file *o) + sz = ROUND_UP(sz + HUNK_SIZE * o->ninfo, 16); + + sz = ROUND_UP(sz, 4096); ++ kp->kpatch_total_mem_sz = sz; + + /* + * Map patch as close to the original code as possible. +@@ -713,7 +714,7 @@ object_unapply_patch(struct object_file *o, int check_flag) + kpinfo("munmap kpatch memory from 0x%lx\n", o->kpta); + ret = kpatch_munmap_remote(proc2pctx(o->proc), + o->kpta, +- o->kpfile.size); ++ o->kpfile.patch->kpatch_total_mem_sz); + + if (ret < 0) { + kperr("Failed to unmap remote kpatch mem"); +-- +2.27.0 + diff --git a/0164-process-change-kpatch-region-access-permission.patch b/0164-process-change-kpatch-region-access-permission.patch new file mode 100644 index 0000000..ed449b4 --- /dev/null +++ b/0164-process-change-kpatch-region-access-permission.patch @@ -0,0 +1,52 @@ +From 42b34456861a9d5d291ba471db2d2d2dc4f58a53 Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Tue, 31 Aug 2021 19:32:19 +0800 +Subject: [PATCH 164/165] process: change kpatch region access permission + +In order to minimize access permissions, we change the .kaptch.data +seciton to rw-p, the .kpatch.text and the jmp table to r-xp. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_patch.c | 10 ++++++++++ + src/kpatch_process.c | 2 +- + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c +index ff79c2c..d74299d 100644 +--- a/src/kpatch_patch.c ++++ b/src/kpatch_patch.c +@@ -450,6 +450,16 @@ object_apply_patch(struct object_file *o) + return ret; + } + ++ /* change .kpatch.text and jmp table mem to readable and executable */ ++ ret = kpatch_mprotect_remote(proc2pctx(o->proc), o->kpta, ++ o->data_offset ? kp->elf_offset + o->data_offset : kp->kpatch_total_mem_sz, ++ PROT_READ | PROT_EXEC); ++ if (ret < 0) { ++ kperr("Failed to change kpatch access protection"); ++ return ret; ++ } ++ kpinfo("r-xp: 0x%lx + 0x%lx", o->kpta, kp->elf_offset + o->data_offset); ++ + return 1; + } + +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index e7412d3..b6c25f7 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -1100,7 +1100,7 @@ kpatch_object_allocate_patch(struct object_file *o, + + addr = kpatch_mmap_remote(proc2pctx(o->proc), + addr, sz, +- PROT_READ | PROT_WRITE | PROT_EXEC, ++ PROT_READ | PROT_WRITE, + MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (addr == 0) { + kplogerror("remote alloc memory for patch failed\n"); +-- +2.27.0 + diff --git a/0165-process-adapt-to-recognize-kpatch-region.patch b/0165-process-adapt-to-recognize-kpatch-region.patch new file mode 100644 index 0000000..7c36ce0 --- /dev/null +++ b/0165-process-adapt-to-recognize-kpatch-region.patch @@ -0,0 +1,36 @@ +From e0970bd37d3374e4755d2f8bc83616d613f70804 Mon Sep 17 00:00:00 2001 +From: yubihong +Date: Tue, 31 Aug 2021 20:26:46 +0800 +Subject: [PATCH 165/165] process: adapt to recognize kpatch region + +Now the kpatch region consists of two part mem region. The first part is +kpatch header + jmp table + .kpatch.text and the access permision is r-xp, +the second part is .kpatch.data + rela + user_undo and the access +permison is rw-p. + +We just need to use the first part to recognize and get the kpatch info. + +Signed-off-by: Bihong Yu +Signed-off-by: imxcc +--- + src/kpatch_process.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/kpatch_process.c b/src/kpatch_process.c +index b6c25f7..9d6daa4 100644 +--- a/src/kpatch_process.c ++++ b/src/kpatch_process.c +@@ -194,8 +194,8 @@ process_get_object_type(kpatch_process_t *proc, + return -1; + } + +- if (!strcmp(name, "[anonymous]") && +- vma->prot == (PROT_READ | PROT_WRITE | PROT_EXEC) && ++ if (vma->prot == (PROT_READ | PROT_EXEC) && ++ !strncmp(name, "[anonymous]", strlen("[anonymous]")) && + (vma->end - vma->start) >= sizeof(struct kpatch_file)) + type = OBJECT_KPATCH; + +-- +2.27.0 + diff --git a/libcareplus.spec b/libcareplus.spec index a4a146e..e63f290 100644 --- a/libcareplus.spec +++ b/libcareplus.spec @@ -3,7 +3,7 @@ Version: 0.1.4 Name: libcareplus Summary: LibcarePlus tools -Release: 13 +Release: 14 Group: Applications/System License: GPLv2 Url: https://gitee.com/openeuler/libcareplus @@ -128,6 +128,53 @@ Patch0116: 0115-kpatch_ptrace-fix-uninitialing-buf.patch Patch0117: 0116-reliablity-avoid-double-free-in-future.patch Patch0118: 0117-process-check-running-status-if-ptrace-detach-return.patch Patch0119: 0118-kpatch_gensrc-libcare-dump-avoid-resource-leak-in-cm.patch +Patch0120: 0119-updated-the-README.en.md-file.patch +Patch0121: 0120-strip-return-1-if-get-tls-got_offset-failed.patch +Patch0122: 0121-user-print-log-before-performing-task.patch +Patch0123: 0122-process-memset-new-malloc-object.patch +Patch0124: 0123-patch-add-default-case-for-bash-case-statement.patch +Patch0125: 0124-style-fix-mismatch-code-alignment.patch +Patch0126: 0125-kpatch_cc-Avoid-buffer-out-of-bounds-write.patch +Patch0127: 0126-kpatch_make-Avoid-open-NULL.patch +Patch0128: 0127-bugfix-set-o-dynsyms-to-NULL-when-free-buffer.patch +Patch0129: 0128-codesytle-keep-the-same-size-of-proc-memfd.patch +Patch0130: 0129-optimize-Remove-unused-functions-and-add-check-for-s.patch +Patch0131: 0130-kpatch_storage-adapt-some-indent-alignment-and-descr.patch +Patch0132: 0131-tests-UT-support-aarch64-architecture.patch +Patch0133: 0132-process-fix-some-exception-handling-problem-and-code.patch +Patch0134: 0133-Fix-some-code-alignments.patch +Patch0135: 0134-kpatch_gensrc-Call-close_file-to-avoid-memory-leak.patch +Patch0136: 0135-kpatch_io-Fix-memory-leak.patch +Patch0137: 0136-kpatch_gensrc-Fix-memory-leak-of-renames.patch +Patch0138: 0137-kpatch_gensrc-Fix-memory-leak-of-cblocks.patch +Patch0139: 0138-kpatch_io-Fix-memory-leak-of-section-and-ctype.patch +Patch0140: 0139-optimize-fix-uninitialized-variable.patch +Patch0141: 0140-kpatch_patch-fix-possible-memory-leaks.patch +Patch0142: 0141-kpatch-fix-some-codeing-problems.patch +Patch0143: 0142-kpatch_process-fix-memory-leak.patch +Patch0144: 0143-kpatch_process-fix-double-free.patch +Patch0145: 0144-kpatch_gensrc-Fix-use-after-free.patch +Patch0146: 0145-kpatch_io-Fix-NULL-dereference.patch +Patch0147: 0146-process-Revert-codedex-fix-double-free.patch +Patch0148: 0147-process-malloc-new-memory-to-store-target-object-s-k.patch +Patch0149: 0148-ptrace-fix-NULL-pointer-access-problem.patch +Patch0150: 0149-ptrace-check-the-return-value-of-open-function.patch +Patch0151: 0150-log-optimize-some-descriptions-and-formats-of-logs.patch +Patch0152: 0151-security-replace-sprintf-with-snprintf-to-ensure-saf.patch +Patch0153: 0152-security-replace-strcpy-with-strncpy-to-ensure-safet.patch +Patch0154: 0153-process-solve-only-can-apply-one-patch-in-left-hole-.patch +Patch0155: 0154-patch-fix-the-type-mismatch-problem.patch +Patch0156: 0155-optimize-fix-some-coding-problems.patch +Patch0157: 0156-security-check-kpatch-file-size-before-using-it.patch +Patch0158: 0157-objinfo-check-index-before-using.patch +Patch0159: 0158-log-log-enhancement-to-facilitate-problems-location.patch +Patch0160: 0159-gensrc-make-sure-.kpatch.data-is-4K-page-alignment.patch +Patch0161: 0160-elf-get-.kpatch.data-offset.patch +Patch0162: 0161-process-rearrange-the-kpatch-region-memory-distribut.patch +Patch0163: 0162-ptrace-support-remote-mprotect-syscall.patch +Patch0164: 0163-patch-record-remote-malloc-total-memory-size.patch +Patch0165: 0164-process-change-kpatch-region-access-permission.patch +Patch0166: 0165-process-adapt-to-recognize-kpatch-region.patch BuildRequires: elfutils-libelf-devel libunwind-devel gcc systemd @@ -230,6 +277,7 @@ rm -rf $RPM_BUILD_ROOT %defattr(-,root,root) %{_bindir}/libcare-ctl %{_bindir}/libcare-client +%{_bindir}/libcare-server %{_unitdir}/libcare.service %{_unitdir}/libcare.socket %{_presetdir}/90-libcare.preset @@ -238,6 +286,7 @@ rm -rf $RPM_BUILD_ROOT %defattr(-,root,root) %{_bindir}/libcare-cc %{_bindir}/libcare-patch-make +%{_bindir}/libcare-dump %{_bindir}/kpatch_gensrc %{_bindir}/kpatch_strip %{_bindir}/kpatch_make @@ -283,6 +332,11 @@ exit 0 %endif %changelog +* Mon Feb 07 2022 imxcc - 0.1.4.14 +- some bugfix +- support aarch64 UT +- fix memory RWX problem + * Mon Feb 07 2022 imxcc - 0.1.4.13 - add libcare-dump tool - support test sets running on x86 -- Gitee From abe79d9e651f35b1c06c7258eedc283a3ebd3cde Mon Sep 17 00:00:00 2001 From: imxcc Date: Mon, 7 Feb 2022 21:57:48 +0800 Subject: [PATCH 8/9] kpatch_user: init pid in cmd_info_user Signed-off-by: imxcc --- 0119-updated-the-README.en.md-file.patch | 81 --------------- ...patch_user-init-pid-in-cmd_info_user.patch | 25 +++++ libcareplus.spec | 98 ++++++++++--------- 3 files changed, 75 insertions(+), 129 deletions(-) delete mode 100644 0119-updated-the-README.en.md-file.patch create mode 100644 0166-kpatch_user-init-pid-in-cmd_info_user.patch diff --git a/0119-updated-the-README.en.md-file.patch b/0119-updated-the-README.en.md-file.patch deleted file mode 100644 index 3277b0b..0000000 --- a/0119-updated-the-README.en.md-file.patch +++ /dev/null @@ -1,81 +0,0 @@ -From a8ba6d1e1103f22ec954bef0c2e453aead97dc41 Mon Sep 17 00:00:00 2001 -From: yanhuiling -Date: Wed, 27 Oct 2021 09:26:30 +0000 -Subject: [PATCH 119/165] =?UTF-8?q?updated=20the=20README.en.md=20file.=20?= - =?UTF-8?q?=E4=BD=A0=E5=A5=BD=E3=80=82=E6=88=91=E4=BB=AC=E8=AF=84=E5=AE=A1?= - =?UTF-8?q?=E5=92=8C=E6=9B=B4=E6=96=B0=E4=BA=86README.en=E6=96=87=E4=BB=B6?= - =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E6=AD=A3=E4=BA=86=E4=B8=80=E4=BA=9B=E6=8B=BC?= - =?UTF-8?q?=E5=86=99=E9=94=99=E8=AF=AF=E3=80=81=E8=AF=AD=E6=B3=95=E9=94=99?= - =?UTF-8?q?=E8=AF=AF=E3=80=81=E4=B8=AD=E6=96=87=E5=AD=97=E7=AC=A6=E3=80=81?= - =?UTF-8?q?=E8=A1=A8=E8=BE=BE=E9=97=AE=E9=A2=98=E3=80=82=E6=9C=89=E4=BB=BB?= - =?UTF-8?q?=E4=BD=95=E9=97=AE=E9=A2=98=EF=BC=8C=E8=AF=B7=E8=81=94=E7=B3=BB?= - =?UTF-8?q?G11N=20SIG=E3=80=82?= -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - ---- - README.en.md | 27 +++++++++++---------------- - 1 file changed, 11 insertions(+), 16 deletions(-) - -diff --git a/README.en.md b/README.en.md -index db9fc30..3077b91 100644 ---- a/README.en.md -+++ b/README.en.md -@@ -1,40 +1,35 @@ --# libcareplus -+# LibcarePlus - - #### Description --LibcarePlus delivers live patches to any of your Linux executables or libraries at the runtime, without the need for restart of your applications. -+LibcarePlus‧is‧a‧general‧user-mode‧live‧patch‧framework.‧It delivers live patches to any of your Linux executables or libraries at the runtime, without the need for restart of your applications. - --LibcarePlus is a self maintained branch derived from the LibCare project. It is released with the same LICENSE with LibCare and the original Copyright is kept. -+LibcarePlus is a self-maintained branch derived from the LibCare project. It is released with the same license with LibCare and the original copyright is kept. - - More information about LibCare can be reached at: - - [https://github.com/cloudlinux/libcare](https://github.com/cloudlinux/libcare) - --LibcarePlus aims at providing userspac livepatch ability --for popular architecture like x86_64 and aarch64. -+LibcarePlus aims at providing user-mode live patches for popular architectures like x86_64 and AArch64. - - #### Software Architecture - --For more information about the design of LibcarePlus, --please refer to the `LibcarePlus Design`. -+For more information about the design of LibcarePlus, see the `LibcarePlus Design`. - - #### Installation - --Please refer to the `LibcarePlus Intallation Guide` to --complete the installation of LibcarePlus. -+Refer to the `LibcarePlus Intallation Guide` to install LibcarePlus. - - --### User Guide -+#### User Guide - --Please refer to: -+Refer to: - - * LibcarePlus Patch Make Tutorial - * LibcarePlus Patch Apply Tutorial - --to help you to make the patch and apply it to the target process. -+to help you make the patch and apply it to the target process. - - #### Contribution - --Any contributors are wellcome to join this project, --we are glad to provide help and guide needed. --Developers can post an issue on this project and --make a pull request to join the development process. -\ No newline at end of file -+Any contributors are welcome to join this project, and we are glad to provide help and guidance needed. -+Developers can post an issue on this project and submit a pull request to join the development process. -\ No newline at end of file --- -2.27.0 - diff --git a/0166-kpatch_user-init-pid-in-cmd_info_user.patch b/0166-kpatch_user-init-pid-in-cmd_info_user.patch new file mode 100644 index 0000000..6daf941 --- /dev/null +++ b/0166-kpatch_user-init-pid-in-cmd_info_user.patch @@ -0,0 +1,25 @@ +From ec61f8f0f9fe4ae5ca0fdabe43d33d9df28aa046 Mon Sep 17 00:00:00 2001 +From: Bihong Yu +Date: Fri, 3 Dec 2021 02:19:51 -0500 +Subject: [PATCH] kpatch_user: init pid in cmd_info_user + +Signed-off-by: Bihong Yu +--- + src/kpatch_user.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/kpatch_user.c b/src/kpatch_user.c +index b982b50..0bcc219 100644 +--- a/src/kpatch_user.c ++++ b/src/kpatch_user.c +@@ -291,6 +291,7 @@ int cmd_info_user(int argc, char *argv[]) + while ((opt = getopt(argc, argv, "hp:v")) != EOF) { + switch (opt) { + case 'p': ++ pid = atoi(optarg); + break; + case 'v': + verbose = 1; +-- +2.27.0 + diff --git a/libcareplus.spec b/libcareplus.spec index e63f290..6a2bf64 100644 --- a/libcareplus.spec +++ b/libcareplus.spec @@ -3,7 +3,7 @@ Version: 0.1.4 Name: libcareplus Summary: LibcarePlus tools -Release: 14 +Release: 15 Group: Applications/System License: GPLv2 Url: https://gitee.com/openeuler/libcareplus @@ -128,53 +128,53 @@ Patch0116: 0115-kpatch_ptrace-fix-uninitialing-buf.patch Patch0117: 0116-reliablity-avoid-double-free-in-future.patch Patch0118: 0117-process-check-running-status-if-ptrace-detach-return.patch Patch0119: 0118-kpatch_gensrc-libcare-dump-avoid-resource-leak-in-cm.patch -Patch0120: 0119-updated-the-README.en.md-file.patch -Patch0121: 0120-strip-return-1-if-get-tls-got_offset-failed.patch -Patch0122: 0121-user-print-log-before-performing-task.patch -Patch0123: 0122-process-memset-new-malloc-object.patch -Patch0124: 0123-patch-add-default-case-for-bash-case-statement.patch -Patch0125: 0124-style-fix-mismatch-code-alignment.patch -Patch0126: 0125-kpatch_cc-Avoid-buffer-out-of-bounds-write.patch -Patch0127: 0126-kpatch_make-Avoid-open-NULL.patch -Patch0128: 0127-bugfix-set-o-dynsyms-to-NULL-when-free-buffer.patch -Patch0129: 0128-codesytle-keep-the-same-size-of-proc-memfd.patch -Patch0130: 0129-optimize-Remove-unused-functions-and-add-check-for-s.patch -Patch0131: 0130-kpatch_storage-adapt-some-indent-alignment-and-descr.patch -Patch0132: 0131-tests-UT-support-aarch64-architecture.patch -Patch0133: 0132-process-fix-some-exception-handling-problem-and-code.patch -Patch0134: 0133-Fix-some-code-alignments.patch -Patch0135: 0134-kpatch_gensrc-Call-close_file-to-avoid-memory-leak.patch -Patch0136: 0135-kpatch_io-Fix-memory-leak.patch -Patch0137: 0136-kpatch_gensrc-Fix-memory-leak-of-renames.patch -Patch0138: 0137-kpatch_gensrc-Fix-memory-leak-of-cblocks.patch -Patch0139: 0138-kpatch_io-Fix-memory-leak-of-section-and-ctype.patch -Patch0140: 0139-optimize-fix-uninitialized-variable.patch -Patch0141: 0140-kpatch_patch-fix-possible-memory-leaks.patch -Patch0142: 0141-kpatch-fix-some-codeing-problems.patch -Patch0143: 0142-kpatch_process-fix-memory-leak.patch -Patch0144: 0143-kpatch_process-fix-double-free.patch -Patch0145: 0144-kpatch_gensrc-Fix-use-after-free.patch -Patch0146: 0145-kpatch_io-Fix-NULL-dereference.patch -Patch0147: 0146-process-Revert-codedex-fix-double-free.patch -Patch0148: 0147-process-malloc-new-memory-to-store-target-object-s-k.patch -Patch0149: 0148-ptrace-fix-NULL-pointer-access-problem.patch -Patch0150: 0149-ptrace-check-the-return-value-of-open-function.patch -Patch0151: 0150-log-optimize-some-descriptions-and-formats-of-logs.patch -Patch0152: 0151-security-replace-sprintf-with-snprintf-to-ensure-saf.patch -Patch0153: 0152-security-replace-strcpy-with-strncpy-to-ensure-safet.patch -Patch0154: 0153-process-solve-only-can-apply-one-patch-in-left-hole-.patch -Patch0155: 0154-patch-fix-the-type-mismatch-problem.patch -Patch0156: 0155-optimize-fix-some-coding-problems.patch -Patch0157: 0156-security-check-kpatch-file-size-before-using-it.patch -Patch0158: 0157-objinfo-check-index-before-using.patch -Patch0159: 0158-log-log-enhancement-to-facilitate-problems-location.patch -Patch0160: 0159-gensrc-make-sure-.kpatch.data-is-4K-page-alignment.patch -Patch0161: 0160-elf-get-.kpatch.data-offset.patch -Patch0162: 0161-process-rearrange-the-kpatch-region-memory-distribut.patch -Patch0163: 0162-ptrace-support-remote-mprotect-syscall.patch -Patch0164: 0163-patch-record-remote-malloc-total-memory-size.patch -Patch0165: 0164-process-change-kpatch-region-access-permission.patch -Patch0166: 0165-process-adapt-to-recognize-kpatch-region.patch +Patch0120: 0120-strip-return-1-if-get-tls-got_offset-failed.patch +Patch0121: 0121-user-print-log-before-performing-task.patch +Patch0122: 0122-process-memset-new-malloc-object.patch +Patch0123: 0123-patch-add-default-case-for-bash-case-statement.patch +Patch0124: 0124-style-fix-mismatch-code-alignment.patch +Patch0125: 0125-kpatch_cc-Avoid-buffer-out-of-bounds-write.patch +Patch0126: 0126-kpatch_make-Avoid-open-NULL.patch +Patch0127: 0127-bugfix-set-o-dynsyms-to-NULL-when-free-buffer.patch +Patch0128: 0128-codesytle-keep-the-same-size-of-proc-memfd.patch +Patch0129: 0129-optimize-Remove-unused-functions-and-add-check-for-s.patch +Patch0130: 0130-kpatch_storage-adapt-some-indent-alignment-and-descr.patch +Patch0131: 0131-tests-UT-support-aarch64-architecture.patch +Patch0132: 0132-process-fix-some-exception-handling-problem-and-code.patch +Patch0133: 0133-Fix-some-code-alignments.patch +Patch0134: 0134-kpatch_gensrc-Call-close_file-to-avoid-memory-leak.patch +Patch0135: 0135-kpatch_io-Fix-memory-leak.patch +Patch0136: 0136-kpatch_gensrc-Fix-memory-leak-of-renames.patch +Patch0137: 0137-kpatch_gensrc-Fix-memory-leak-of-cblocks.patch +Patch0138: 0138-kpatch_io-Fix-memory-leak-of-section-and-ctype.patch +Patch0139: 0139-optimize-fix-uninitialized-variable.patch +Patch0140: 0140-kpatch_patch-fix-possible-memory-leaks.patch +Patch0141: 0141-kpatch-fix-some-codeing-problems.patch +Patch0142: 0142-kpatch_process-fix-memory-leak.patch +Patch0143: 0143-kpatch_process-fix-double-free.patch +Patch0144: 0144-kpatch_gensrc-Fix-use-after-free.patch +Patch0145: 0145-kpatch_io-Fix-NULL-dereference.patch +Patch0146: 0146-process-Revert-codedex-fix-double-free.patch +Patch0147: 0147-process-malloc-new-memory-to-store-target-object-s-k.patch +Patch0148: 0148-ptrace-fix-NULL-pointer-access-problem.patch +Patch0149: 0149-ptrace-check-the-return-value-of-open-function.patch +Patch0150: 0150-log-optimize-some-descriptions-and-formats-of-logs.patch +Patch0151: 0151-security-replace-sprintf-with-snprintf-to-ensure-saf.patch +Patch0152: 0152-security-replace-strcpy-with-strncpy-to-ensure-safet.patch +Patch0153: 0153-process-solve-only-can-apply-one-patch-in-left-hole-.patch +Patch0154: 0154-patch-fix-the-type-mismatch-problem.patch +Patch0155: 0155-optimize-fix-some-coding-problems.patch +Patch0156: 0156-security-check-kpatch-file-size-before-using-it.patch +Patch0157: 0157-objinfo-check-index-before-using.patch +Patch0158: 0158-log-log-enhancement-to-facilitate-problems-location.patch +Patch0159: 0159-gensrc-make-sure-.kpatch.data-is-4K-page-alignment.patch +Patch0160: 0160-elf-get-.kpatch.data-offset.patch +Patch0161: 0161-process-rearrange-the-kpatch-region-memory-distribut.patch +Patch0162: 0162-ptrace-support-remote-mprotect-syscall.patch +Patch0163: 0163-patch-record-remote-malloc-total-memory-size.patch +Patch0164: 0164-process-change-kpatch-region-access-permission.patch +Patch0165: 0165-process-adapt-to-recognize-kpatch-region.patch +Patch0166: 0166-kpatch_user-init-pid-in-cmd_info_user.patch BuildRequires: elfutils-libelf-devel libunwind-devel gcc systemd @@ -332,6 +332,8 @@ exit 0 %endif %changelog +* Mon Feb 07 2022 imxcc - 0.1.4.15 +- kpatch_user: init pid in cmd_info_user * Mon Feb 07 2022 imxcc - 0.1.4.14 - some bugfix - support aarch64 UT -- Gitee From 4e4257ffbb39897688e77d5692a512902765375c Mon Sep 17 00:00:00 2001 From: imxcc Date: Tue, 8 Feb 2022 21:49:11 +0800 Subject: [PATCH 9/9] package init 1.0.0 Signed-off-by: imxcc --- ...-kpatch_storage.c-from-kpatch_user.c.patch | 1149 ------------ ...it-kpatch_patch.c-from-kpatch_user.c.patch | 1633 ----------------- 0003-cmd_patch-pass-arguments-directly.patch | 152 -- 0004-travis-use-VM-for-now.patch | 71 - ...cripts-pkgbuild-add-prepare_env-hook.patch | 39 - ...fix-for-non-root-rpmbuild-built-root.patch | 42 - 0007-Toil-package-builder.patch | 1327 -------------- ...mdownloader-if-source-url-is-missing.patch | 30 - 0009-execve-abort-on-failure.patch | 52 - 0010-Add-test-stage-to-pkgbuild.patch | 379 ---- ...libc-minimal-readme-for-toil-builder.patch | 36 - ..._process_init-kpatch_coroutines_free.patch | 46 - 0013-Add-libcare-stresstest.patch | 206 --- 0014-read-auxv-from-proc-pid-auxv.patch | 93 - 0015-add-fail-to-unpatch-test.patch | 147 -- ...id-for-finished-threads-after-detach.patch | 67 - 0017-.gitignore-build-artefacts.patch | 28 - ...ut-an-end-to-description-string-load.patch | 29 - 0019-Fix-README-files.patch | 51 - ...e-include-directory-for-header-files.patch | 129 -- 0021-src-Update-header-file-position.patch | 373 ---- ...arch-directory-to-support-multi-arch.patch | 73 - ...onfig-configure-out-the-running-arch.patch | 26 - ...Makefile-for-different-architectures.patch | 72 - ...se-Update-asm_directives-for-aarch64.patch | 31 - ...tch_parse-Split-function-parse_ctype.patch | 154 -- ...parse-Split-function-init_multilines.patch | 249 --- ...rse-Split-function-is_variable_start.patch | 282 --- ...tch_parse-Split-function-is_data_def.patch | 180 -- ...rse-Split-function-is_function_start.patch | 149 -- ..._common.h-Factor-out-PAGE_SIZE-marco.patch | 43 - ...oro-Split-function-_UCORO_access_reg.patch | 196 -- ...ch_coro-Split-function-get_ptr_guard.patch | 148 -- ...t-function-locate_start_context_symb.patch | 307 ---- ...atch-Split-function-patch_apply_hunk.patch | 237 --- ...-Split-function-kpatch_add_jmp_entry.patch | 151 -- ...t-function-kpatch_apply_relocate_add.patch | 414 ----- ...plit-function-object_find_patch_regi.patch | 416 ----- ...Split-function-kpatch_ptrace_waitpid.patch | 501 ----- ...atch_ptrace-Split-function-copy_regs.patch | 137 -- ...lit-function-kpatch_execute_remote_f.patch | 328 ---- ...lit-function-kpatch_ptrace_resolve_i.patch | 146 -- ...lit-function-kpatch_arch_prctl_remot.patch | 213 --- ...Split-function-kpatch_syscall_remote.patch | 191 -- ..._ptrace-Split-function-wait_for_mmap.patch | 239 --- ...lit-function-kpatch_ptrace_kickstart.patch | 401 ---- 0047-Allow-init_t-create-lnk-file.patch | 30 - ...libcare-patch-make-add-j-jobs-option.patch | 89 - 0049-kpatch_user.c-fix-gcc-warning.patch | 51 - ...are-cc-add-gcc-iquote-option-support.patch | 33 - 0051-kpatch_cc.c-support-gcc-MQ-option.patch | 28 - ...ecute-config-scripts-before-building.patch | 30 - ...support-ignoring-functions-which-we-.patch | 132 -- ...h_parse-modify-is_variable_start-for.patch | 67 - ...are-ctl-implement-applied-patch-list.patch | 392 ---- 0056-libcare-ctl-introduce-patch-id.patch | 625 ------- ...h_elf-Add-LDR-and-B-instruction-relo.patch | 155 -- ...h_parse-improve-VAR_CBLOCK-start-ind.patch | 64 - ...support-for-TLS-symbol-with-IE-model.patch | 406 ---- ...add-R_AARCH64_LDST32_ABS_LO12_NC-rel.patch | 47 - ...process-fix-region-start-calculation.patch | 87 - ...-Add-ldr-and-ldrb-relocation-for-aar.patch | 62 - ...cess-add-some-checks-before-patching.patch | 85 - ...-frozen-time-count-for-patch-unpatch.patch | 103 -- ...-optimize-output-of-libcare-ctl-info.patch | 96 - ...care-patch-make-add-build-id-options.patch | 73 - ...ke-add-j-option-to-accelarate-make-p.patch | 46 - ...file-make-binfiles-permission-as-500.patch | 42 - ...ove-useless-codes-for-info-interface.patch | 315 ---- ...mbine-funcitons-with-similar-functio.patch | 154 -- 0071-process_unpatch-adapt-return-value.patch | 61 - ...elf-enhance-kpatch_elf-and-arch_elf-.patch | 269 --- ...ve-deprecated-code-for-tls-and-prctl.patch | 300 --- ...x-possible-Null-pointer-dereferences.patch | 93 - ...timize-libcare-code-to-make-checker-.patch | 489 ----- ...rse-fix-wrong-return-in-is_data_sect.patch | 39 - ...ch-make-export-libcare-env-variables.patch | 34 - ...rage-strip-fix-some-bad-code-problem.patch | 162 -- ...cess-patch-fix-some-bad-code-problem.patch | 269 --- 0080-kpatch-rename-uname-to-buildid.patch | 168 -- 0081-kpatch-clear-code-checker-warnings.patch | 268 --- ...p-revert-close-fd-in-kpatch_open_elf.patch | 40 - 0083-kpatch-fix-code-checker-warning.patch | 222 --- ...patch_ptrace-fix-x86-compile-failure.patch | 61 - ...y-return-properly-other-than-direct-.patch | 1111 ----------- ...ke-check-return-for-each-patch-make-.patch | 59 - 0087-kpatch-clear-code-checker-warnings.patch | 125 -- ...tialize-fd-to-avoid-unexpected-close.patch | 39 - ...Optimize-build_multiple-a-little-bit.patch | 83 - 0090-patch-correct-time-comsume-print.patch | 128 -- ...sts-fix-tests-some-executing-problem.patch | 65 - ...mode-and-check-whether-the-conf-file.patch | 142 -- ...ump-add-libcare-dump-auxiliary-tools.patch | 207 --- ...dd-a-flag-to-mark-unpatch-target-elf.patch | 103 -- ...care-dump-output-elf-file-can-not-be.patch | 49 - 0096-kpatch_user-remove-stresstest-mode.patch | 198 -- ...plit-client-server-binary-into-devel.patch | 837 --------- ...ORTIFY_SOURCE-2-and-fix-return-check.patch | 125 -- ...ial-codex-issues-and-compile-warning.patch | 144 -- ...nfo-rename-Process-as-Target-instead.patch | 41 - ...add-support-for-dumping-patch-header.patch | 151 -- 0102-codedex-fix-codedex-warning.patch | 36 - ...error-handling-and-log-records-of-ob.patch | 110 -- 0104-test-adapt-UT-tests-in-x86_64.patch | 276 --- 0105-arch.desc-delete-arch.desc.patch | 37 - 0106-test-fix-some-problems-in-UT-tests.patch | 62 - 0107-ptrace-check-pread-return-value.patch | 148 -- ...are-dump-fix-fd-leak-in-libcare-dump.patch | 45 - ...or-avoid-potential-file-leak-in-main.patch | 89 - ...dump-avoid-file-leak-in-libcare-dump.patch | 32 - ...-kpatch_ptrace-fix-wrong-return-type.patch | 40 - ...-closing-negative-fd-in-kpatch_strip.patch | 33 - ...x-closing-negative-fd-in-kpatch_make.patch | 33 - ...n-on-gcc-Werror-and-fix-some-warning.patch | 27 - 0115-kpatch_ptrace-fix-uninitialing-buf.patch | 38 - ...liablity-avoid-double-free-in-future.patch | 33 - ...nning-status-if-ptrace-detach-return.patch | 76 - ...bcare-dump-avoid-resource-leak-in-cm.patch | 50 - ...eturn-1-if-get-tls-got_offset-failed.patch | 44 - ...ser-print-log-before-performing-task.patch | 46 - 0122-process-memset-new-malloc-object.patch | 44 - ...default-case-for-bash-case-statement.patch | 30 - 0124-style-fix-mismatch-code-alignment.patch | 174 -- ..._cc-Avoid-buffer-out-of-bounds-write.patch | 32 - 0126-kpatch_make-Avoid-open-NULL.patch | 32 - ...t-o-dynsyms-to-NULL-when-free-buffer.patch | 35 - ...tle-keep-the-same-size-of-proc-memfd.patch | 48 - ...unused-functions-and-add-check-for-s.patch | 104 -- ...dapt-some-indent-alignment-and-descr.patch | 129 -- ...ests-UT-support-aarch64-architecture.patch | 138 -- ...-exception-handling-problem-and-code.patch | 121 -- 0133-Fix-some-code-alignments.patch | 166 -- ...Call-close_file-to-avoid-memory-leak.patch | 42 - 0135-kpatch_io-Fix-memory-leak.patch | 81 - ...ch_gensrc-Fix-memory-leak-of-renames.patch | 74 - ...ch_gensrc-Fix-memory-leak-of-cblocks.patch | 68 - ...Fix-memory-leak-of-section-and-ctype.patch | 88 - ...-optimize-fix-uninitialized-variable.patch | 66 - ...atch_patch-fix-possible-memory-leaks.patch | 54 - 0141-kpatch-fix-some-codeing-problems.patch | 70 - 0142-kpatch_process-fix-memory-leak.patch | 31 - 0143-kpatch_process-fix-double-free.patch | 52 - 0144-kpatch_gensrc-Fix-use-after-free.patch | 32 - 0145-kpatch_io-Fix-NULL-dereference.patch | 65 - ...ocess-Revert-codedex-fix-double-free.patch | 53 - ...ew-memory-to-store-target-object-s-k.patch | 50 - ...race-fix-NULL-pointer-access-problem.patch | 53 - ...ck-the-return-value-of-open-function.patch | 45 - ...ome-descriptions-and-formats-of-logs.patch | 83 - ...-sprintf-with-snprintf-to-ensure-saf.patch | 87 - ...-strcpy-with-strncpy-to-ensure-safet.patch | 31 - ...ly-can-apply-one-patch-in-left-hole-.patch | 46 - ...-patch-fix-the-type-mismatch-problem.patch | 29 - 0155-optimize-fix-some-coding-problems.patch | 79 - ...eck-kpatch-file-size-before-using-it.patch | 50 - 0157-objinfo-check-index-before-using.patch | 27 - ...ment-to-facilitate-problems-location.patch | 248 --- ...re-.kpatch.data-is-4K-page-alignment.patch | 50 - 0160-elf-get-.kpatch.data-offset.patch | 103 -- ...e-the-kpatch-region-memory-distribut.patch | 177 -- ...race-support-remote-mprotect-syscall.patch | 66 - ...cord-remote-malloc-total-memory-size.patch | 66 - ...ange-kpatch-region-access-permission.patch | 52 - ...ess-adapt-to-recognize-kpatch-region.patch | 36 - ...patch_user-init-pid-in-cmd_info_user.patch | 25 - LICENSE | 339 ---- README.en.md | 35 - README.md | 33 - libcareplus-0.1.4.tar.gz | Bin 571831 -> 0 bytes libcareplus-1.0.0.spec | 226 +++ libcareplus-1.0.0.tar.gz | Bin 0 -> 2467167 bytes libcareplus.spec | 170 +- ...le-install-kpatch_gensrc-into-bindir.patch | 31 - 173 files changed, 228 insertions(+), 25750 deletions(-) delete mode 100644 0001-Split-kpatch_storage.c-from-kpatch_user.c.patch delete mode 100644 0002-Split-kpatch_patch.c-from-kpatch_user.c.patch delete mode 100644 0003-cmd_patch-pass-arguments-directly.patch delete mode 100644 0004-travis-use-VM-for-now.patch delete mode 100644 0005-scripts-pkgbuild-add-prepare_env-hook.patch delete mode 100644 0006-pkgbuild-fix-for-non-root-rpmbuild-built-root.patch delete mode 100644 0007-Toil-package-builder.patch delete mode 100644 0008-pkgbuild-use-yumdownloader-if-source-url-is-missing.patch delete mode 100644 0009-execve-abort-on-failure.patch delete mode 100644 0010-Add-test-stage-to-pkgbuild.patch delete mode 100644 0011-glibc-minimal-readme-for-toil-builder.patch delete mode 100644 0012-Fix-kpatch_process_init-kpatch_coroutines_free.patch delete mode 100644 0013-Add-libcare-stresstest.patch delete mode 100644 0014-read-auxv-from-proc-pid-auxv.patch delete mode 100644 0015-add-fail-to-unpatch-test.patch delete mode 100644 0016-Waitpid-for-finished-threads-after-detach.patch delete mode 100644 0017-.gitignore-build-artefacts.patch delete mode 100644 0018-kpatch_storage-put-an-end-to-description-string-load.patch delete mode 100644 0019-Fix-README-files.patch delete mode 100644 0020-include-Create-include-directory-for-header-files.patch delete mode 100644 0021-src-Update-header-file-position.patch delete mode 100644 0022-arch-Create-arch-directory-to-support-multi-arch.patch delete mode 100644 0023-config-configure-out-the-running-arch.patch delete mode 100644 0024-Makefile-Adapt-Makefile-for-different-architectures.patch delete mode 100644 0025-kpatch_parse-Update-asm_directives-for-aarch64.patch delete mode 100644 0026-kpatch_parse-Split-function-parse_ctype.patch delete mode 100644 0027-kpatch_parse-Split-function-init_multilines.patch delete mode 100644 0028-kpatch_parse-Split-function-is_variable_start.patch delete mode 100644 0029-kpatch_parse-Split-function-is_data_def.patch delete mode 100644 0030-kpatch_parse-Split-function-is_function_start.patch delete mode 100644 0031-kpatch_common.h-Factor-out-PAGE_SIZE-marco.patch delete mode 100644 0032-kpatch_coro-Split-function-_UCORO_access_reg.patch delete mode 100644 0033-kpatch_coro-Split-function-get_ptr_guard.patch delete mode 100644 0034-kpatch_coro-Split-function-locate_start_context_symb.patch delete mode 100644 0035-kpatch_patch-Split-function-patch_apply_hunk.patch delete mode 100644 0036-kpatch_elf-Split-function-kpatch_add_jmp_entry.patch delete mode 100644 0037-kpatch_elf-Split-function-kpatch_apply_relocate_add.patch delete mode 100644 0038-kpatch_process-Split-function-object_find_patch_regi.patch delete mode 100644 0039-kpatch_ptrace-Split-function-kpatch_ptrace_waitpid.patch delete mode 100644 0040-kpatch_ptrace-Split-function-copy_regs.patch delete mode 100644 0041-kpatch_ptrace-Split-function-kpatch_execute_remote_f.patch delete mode 100644 0042-kpatch_ptrace-Split-function-kpatch_ptrace_resolve_i.patch delete mode 100644 0043-kpatch_ptrace-Split-function-kpatch_arch_prctl_remot.patch delete mode 100644 0044-kpatch_ptrace-Split-function-kpatch_syscall_remote.patch delete mode 100644 0045-kpatch_ptrace-Split-function-wait_for_mmap.patch delete mode 100644 0046-kpatch_ptrace-Split-function-kpatch_ptrace_kickstart.patch delete mode 100644 0047-Allow-init_t-create-lnk-file.patch delete mode 100644 0048-libcare-patch-make-add-j-jobs-option.patch delete mode 100644 0049-kpatch_user.c-fix-gcc-warning.patch delete mode 100644 0050-libcare-cc-add-gcc-iquote-option-support.patch delete mode 100644 0051-kpatch_cc.c-support-gcc-MQ-option.patch delete mode 100644 0052-src-Makefile-execute-config-scripts-before-building.patch delete mode 100644 0053-kpatch_gensrc.c-support-ignoring-functions-which-we-.patch delete mode 100644 0054-arch-aarch64-arch_parse-modify-is_variable_start-for.patch delete mode 100644 0055-libcare-ctl-implement-applied-patch-list.patch delete mode 100644 0056-libcare-ctl-introduce-patch-id.patch delete mode 100644 0057-arch-aarch64-arch_elf-Add-LDR-and-B-instruction-relo.patch delete mode 100644 0058-arch-aarch64-arch_parse-improve-VAR_CBLOCK-start-ind.patch delete mode 100644 0059-tls-add-support-for-TLS-symbol-with-IE-model.patch delete mode 100644 0060-arch64-arch_elf-add-R_AARCH64_LDST32_ABS_LO12_NC-rel.patch delete mode 100644 0061-process-fix-region-start-calculation.patch delete mode 100644 0062-aarch64-arch_elf-Add-ldr-and-ldrb-relocation-for-aar.patch delete mode 100644 0063-process-add-some-checks-before-patching.patch delete mode 100644 0064-time-add-frozen-time-count-for-patch-unpatch.patch delete mode 100644 0065-libcare-ctl-optimize-output-of-libcare-ctl-info.patch delete mode 100644 0066-libcare-patch-make-add-build-id-options.patch delete mode 100644 0067-libcare-patch-make-add-j-option-to-accelarate-make-p.patch delete mode 100644 0068-Makefile-make-binfiles-permission-as-500.patch delete mode 100644 0069-libcare-ctl-remove-useless-codes-for-info-interface.patch delete mode 100644 0070-kpatch_object-combine-funcitons-with-similar-functio.patch delete mode 100644 0071-process_unpatch-adapt-return-value.patch delete mode 100644 0072-kpatch_elf-arch_elf-enhance-kpatch_elf-and-arch_elf-.patch delete mode 100644 0073-tls-prctl-remove-deprecated-code-for-tls-and-prctl.patch delete mode 100644 0074-kpatch_parse-fix-possible-Null-pointer-dereferences.patch delete mode 100644 0075-gensrc-cc-elf-optimize-libcare-code-to-make-checker-.patch delete mode 100644 0076-kpatch_parse-fix-wrong-return-in-is_data_sect.patch delete mode 100644 0077-libcare-patch-make-export-libcare-env-variables.patch delete mode 100644 0078-storage-strip-fix-some-bad-code-problem.patch delete mode 100644 0079-ptrace-process-patch-fix-some-bad-code-problem.patch delete mode 100644 0080-kpatch-rename-uname-to-buildid.patch delete mode 100644 0081-kpatch-clear-code-checker-warnings.patch delete mode 100644 0082-kpatch_strip-revert-close-fd-in-kpatch_open_elf.patch delete mode 100644 0083-kpatch-fix-code-checker-warning.patch delete mode 100644 0084-kpatch_ptrace-fix-x86-compile-failure.patch delete mode 100644 0085-return-make-every-return-properly-other-than-direct-.patch delete mode 100644 0086-libcare-patch-make-check-return-for-each-patch-make-.patch delete mode 100644 0087-kpatch-clear-code-checker-warnings.patch delete mode 100644 0088-kpatch_make-initialize-fd-to-avoid-unexpected-close.patch delete mode 100644 0089-kpatch_cc-Optimize-build_multiple-a-little-bit.patch delete mode 100644 0090-patch-correct-time-comsume-print.patch delete mode 100644 0091-tests-fix-tests-some-executing-problem.patch delete mode 100644 0092-gensrc-add-test-mode-and-check-whether-the-conf-file.patch delete mode 100644 0093-libcare-dump-add-libcare-dump-auxiliary-tools.patch delete mode 100644 0094-process-add-a-flag-to-mark-unpatch-target-elf.patch delete mode 100644 0095-strip-settle-libcare-dump-output-elf-file-can-not-be.patch delete mode 100644 0096-kpatch_user-remove-stresstest-mode.patch delete mode 100644 0097-tests-Split-client-server-binary-into-devel.patch delete mode 100644 0098-misc-add-D_FORTIFY_SOURCE-2-and-fix-return-check.patch delete mode 100644 0099-misc-fix-trivial-codex-issues-and-compile-warning.patch delete mode 100644 0100-libcare-info-rename-Process-as-Target-instead.patch delete mode 100644 0101-libcare-dump-add-support-for-dumping-patch-header.patch delete mode 100644 0102-codedex-fix-codedex-warning.patch delete mode 100644 0103-unpatch-enhance-error-handling-and-log-records-of-ob.patch delete mode 100644 0104-test-adapt-UT-tests-in-x86_64.patch delete mode 100644 0105-arch.desc-delete-arch.desc.patch delete mode 100644 0106-test-fix-some-problems-in-UT-tests.patch delete mode 100644 0107-ptrace-check-pread-return-value.patch delete mode 100644 0108-libcare-dump-fix-fd-leak-in-libcare-dump.patch delete mode 100644 0109-refactor-avoid-potential-file-leak-in-main.patch delete mode 100644 0110-libcare-dump-avoid-file-leak-in-libcare-dump.patch delete mode 100644 0111-kpatch_ptrace-fix-wrong-return-type.patch delete mode 100644 0112-kpatch_strip-fix-closing-negative-fd-in-kpatch_strip.patch delete mode 100644 0113-kpatch_make-fix-closing-negative-fd-in-kpatch_make.patch delete mode 100644 0114-process-turn-on-gcc-Werror-and-fix-some-warning.patch delete mode 100644 0115-kpatch_ptrace-fix-uninitialing-buf.patch delete mode 100644 0116-reliablity-avoid-double-free-in-future.patch delete mode 100644 0117-process-check-running-status-if-ptrace-detach-return.patch delete mode 100644 0118-kpatch_gensrc-libcare-dump-avoid-resource-leak-in-cm.patch delete mode 100644 0120-strip-return-1-if-get-tls-got_offset-failed.patch delete mode 100644 0121-user-print-log-before-performing-task.patch delete mode 100644 0122-process-memset-new-malloc-object.patch delete mode 100644 0123-patch-add-default-case-for-bash-case-statement.patch delete mode 100644 0124-style-fix-mismatch-code-alignment.patch delete mode 100644 0125-kpatch_cc-Avoid-buffer-out-of-bounds-write.patch delete mode 100644 0126-kpatch_make-Avoid-open-NULL.patch delete mode 100644 0127-bugfix-set-o-dynsyms-to-NULL-when-free-buffer.patch delete mode 100644 0128-codesytle-keep-the-same-size-of-proc-memfd.patch delete mode 100644 0129-optimize-Remove-unused-functions-and-add-check-for-s.patch delete mode 100644 0130-kpatch_storage-adapt-some-indent-alignment-and-descr.patch delete mode 100644 0131-tests-UT-support-aarch64-architecture.patch delete mode 100644 0132-process-fix-some-exception-handling-problem-and-code.patch delete mode 100644 0133-Fix-some-code-alignments.patch delete mode 100644 0134-kpatch_gensrc-Call-close_file-to-avoid-memory-leak.patch delete mode 100644 0135-kpatch_io-Fix-memory-leak.patch delete mode 100644 0136-kpatch_gensrc-Fix-memory-leak-of-renames.patch delete mode 100644 0137-kpatch_gensrc-Fix-memory-leak-of-cblocks.patch delete mode 100644 0138-kpatch_io-Fix-memory-leak-of-section-and-ctype.patch delete mode 100644 0139-optimize-fix-uninitialized-variable.patch delete mode 100644 0140-kpatch_patch-fix-possible-memory-leaks.patch delete mode 100644 0141-kpatch-fix-some-codeing-problems.patch delete mode 100644 0142-kpatch_process-fix-memory-leak.patch delete mode 100644 0143-kpatch_process-fix-double-free.patch delete mode 100644 0144-kpatch_gensrc-Fix-use-after-free.patch delete mode 100644 0145-kpatch_io-Fix-NULL-dereference.patch delete mode 100644 0146-process-Revert-codedex-fix-double-free.patch delete mode 100644 0147-process-malloc-new-memory-to-store-target-object-s-k.patch delete mode 100644 0148-ptrace-fix-NULL-pointer-access-problem.patch delete mode 100644 0149-ptrace-check-the-return-value-of-open-function.patch delete mode 100644 0150-log-optimize-some-descriptions-and-formats-of-logs.patch delete mode 100644 0151-security-replace-sprintf-with-snprintf-to-ensure-saf.patch delete mode 100644 0152-security-replace-strcpy-with-strncpy-to-ensure-safet.patch delete mode 100644 0153-process-solve-only-can-apply-one-patch-in-left-hole-.patch delete mode 100644 0154-patch-fix-the-type-mismatch-problem.patch delete mode 100644 0155-optimize-fix-some-coding-problems.patch delete mode 100644 0156-security-check-kpatch-file-size-before-using-it.patch delete mode 100644 0157-objinfo-check-index-before-using.patch delete mode 100644 0158-log-log-enhancement-to-facilitate-problems-location.patch delete mode 100644 0159-gensrc-make-sure-.kpatch.data-is-4K-page-alignment.patch delete mode 100644 0160-elf-get-.kpatch.data-offset.patch delete mode 100644 0161-process-rearrange-the-kpatch-region-memory-distribut.patch delete mode 100644 0162-ptrace-support-remote-mprotect-syscall.patch delete mode 100644 0163-patch-record-remote-malloc-total-memory-size.patch delete mode 100644 0164-process-change-kpatch-region-access-permission.patch delete mode 100644 0165-process-adapt-to-recognize-kpatch-region.patch delete mode 100644 0166-kpatch_user-init-pid-in-cmd_info_user.patch delete mode 100644 LICENSE delete mode 100644 README.en.md delete mode 100644 README.md delete mode 100644 libcareplus-0.1.4.tar.gz create mode 100644 libcareplus-1.0.0.spec create mode 100644 libcareplus-1.0.0.tar.gz delete mode 100644 src-Makefile-install-kpatch_gensrc-into-bindir.patch diff --git a/0001-Split-kpatch_storage.c-from-kpatch_user.c.patch b/0001-Split-kpatch_storage.c-from-kpatch_user.c.patch deleted file mode 100644 index 15d9868..0000000 --- a/0001-Split-kpatch_storage.c-from-kpatch_user.c.patch +++ /dev/null @@ -1,1149 +0,0 @@ -From 252f1bdb9a5ab1c1793e213f97389d79e55838b3 Mon Sep 17 00:00:00 2001 -From: Roman Rashchupkin -Date: Wed, 17 Jan 2018 13:34:50 +0300 -Subject: [PATCH 01/89] Split kpatch_storage.c from kpatch_user.c - ---- - src/Makefile | 4 +- - src/kpatch_storage.c | 488 +++++++++++++++++++++++++++++++++++++++++++ - src/kpatch_storage.h | 66 ++++++ - src/kpatch_user.c | 482 +----------------------------------------- - src/kpatch_user.h | 39 ---- - 5 files changed, 557 insertions(+), 522 deletions(-) - create mode 100644 src/kpatch_storage.c - create mode 100644 src/kpatch_storage.h - -diff --git a/src/Makefile b/src/Makefile -index 72ec073..c008535 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -35,8 +35,8 @@ kpatch_make: kpatch_make.o - LIBUNWIND_LIBS := $(shell pkg-config --libs libunwind libunwind-ptrace) - - --libcare-ctl: kpatch_user.o kpatch_elf.o kpatch_ptrace.o kpatch_coro.o rbtree.o kpatch_log.o --libcare-ctl: kpatch_process.o kpatch_common.o -+libcare-ctl: kpatch_user.o kpatch_storage.o kpatch_elf.o kpatch_ptrace.o kpatch_coro.o -+libcare-ctl: kpatch_process.o kpatch_common.o rbtree.o kpatch_log.o - libcare-ctl: LDLIBS += -lelf -lrt $(LIBUNWIND_LIBS) - - libcare-client: libcare-client.o -diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c -new file mode 100644 -index 0000000..a466460 ---- /dev/null -+++ b/src/kpatch_storage.c -@@ -0,0 +1,488 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "kpatch_storage.h" -+#include "kpatch_file.h" -+#include "kpatch_common.h" -+#include "kpatch_elf.h" -+#include "kpatch_ptrace.h" -+#include "list.h" -+#include "kpatch_log.h" -+ -+ -+/***************************************************************************** -+ * Patch storage subroutines. -+ ****************************************************************************/ -+ -+static int -+patch_file_verify(struct kp_file *kpfile) -+{ -+ GElf_Ehdr *hdr; -+ struct kpatch_file *k = kpfile->patch; -+ ssize_t size = kpfile->size; -+ -+ kpdebug("Verifying patch for '%s'...", k->modulename); -+ -+ if (memcmp(k->magic, KPATCH_FILE_MAGIC1, sizeof(k->magic))) { -+ kperr("'%s' patch is invalid: Invalid magic.\n", -+ k->modulename); -+ return -1; -+ } -+ if (k->total_size > size) { -+ kperr("'%s' patch is invalid: Invalid size: %u/%ld.\n", -+ k->modulename, k->total_size, size); -+ return -1; -+ } -+ hdr = (void *)k + k->kpatch_offset; -+ if (memcmp(hdr->e_ident, ELFMAG, SELFMAG) || -+ hdr->e_type != ET_REL || -+ hdr->e_shentsize != sizeof(GElf_Shdr)) { -+ kperr("'%s' patch is invalid: Wrong ELF header or not ET_REL\n", -+ k->modulename); -+ return -1; -+ } -+ kpdebug("OK\n"); -+ return 1; -+} -+ -+int storage_init(kpatch_storage_t *storage, -+ const char *fname) -+{ -+ int patch_fd = -1; -+ struct stat stat = { .st_mode = 0 }; -+ -+ if (fname != NULL) { -+ patch_fd = open(fname, O_RDONLY | O_CLOEXEC); -+ if (patch_fd < 0) -+ goto out_err; -+ -+ if (fstat(patch_fd, &stat) < 0) -+ goto out_close; -+ } -+ -+ storage->patch_fd = patch_fd; -+ storage->is_patch_dir = S_ISDIR(stat.st_mode); -+ storage->path = NULL; -+ -+ if (storage->is_patch_dir) { -+ rb_init(&storage->tree); -+ } else { -+ int ret; -+ -+ ret = kpatch_open_fd(storage->patch_fd, &storage->patch.kpfile); -+ if (ret < 0) -+ goto out_close; -+ -+ ret = patch_file_verify(&storage->patch.kpfile); -+ if (ret < 0) { -+ kpatch_close_file(&storage->patch.kpfile); -+ goto out_close; -+ } -+ strcpy(storage->patch.buildid, storage->patch.kpfile.patch->uname); -+ } -+ -+ storage->path = strdup(fname); -+ -+ return 0; -+ -+out_close: -+ close(patch_fd); -+out_err: -+ kplogerror("cannot open storage '%s'\n", fname); -+ return -1; -+} -+ -+static void -+free_storage_patch_cb(struct rb_node *node) -+{ -+ struct kpatch_storage_patch *patch; -+ -+ patch = rb_entry(node, struct kpatch_storage_patch, node); -+ kpatch_close_file(&patch->kpfile); -+ -+ free(patch->desc); -+ free(patch); -+} -+ -+void storage_free(kpatch_storage_t *storage) -+{ -+ close(storage->patch_fd); -+ if (storage->is_patch_dir) -+ rb_destroy(&storage->tree, free_storage_patch_cb); -+ free(storage->path); -+} -+ -+static int -+cmp_buildid(struct rb_node *node, unsigned long key) -+{ -+ const char *bid = (const char *)key; -+ struct kpatch_storage_patch *patch; -+ -+ patch = rb_entry(node, struct kpatch_storage_patch, node); -+ -+ return strcmp(patch->buildid, bid); -+} -+ -+#define PATCHLEVEL_TEMPLATE_NUM 0 -+ -+static char *pathtemplates[] = { -+ "%s/latest/kpatch.bin", -+ "%s.kpatch" -+}; -+ -+static int -+readlink_patchlevel(int dirfd, const char *fname) -+{ -+ ssize_t r; -+ char buf[32]; -+ -+ *strrchr(fname, '/') = '\0'; -+ r = readlinkat(dirfd, fname, buf, sizeof(buf)); -+ if (r > 0 && r < 32) { -+ buf[r] = '\0'; -+ return atoi(buf); -+ } else if (r >= 32) { -+ r = -1; -+ errno = ERANGE; -+ } -+ -+ kplogerror("can't readlink '%s' to find patchlevel\n", -+ fname); -+ return -1; -+} -+ -+static inline int -+storage_open_patch(kpatch_storage_t *storage, -+ const char *buildid, -+ struct kpatch_storage_patch* patch) -+{ -+ char fname[96]; -+ int i, rv; -+ -+ for (i = 0; i < ARRAY_SIZE(pathtemplates); i++) { -+ sprintf(fname, pathtemplates[i], buildid); -+ -+ rv = kpatch_openat_file(storage->patch_fd, fname, &patch->kpfile); -+ if (rv == 0) { -+ rv = patch_file_verify(&patch->kpfile); -+ -+ if (rv < 0) -+ kpatch_close_file(&patch->kpfile); -+ else -+ rv = PATCH_FOUND; -+ break; -+ } -+ } -+ -+ if (rv == PATCH_FOUND && i == PATCHLEVEL_TEMPLATE_NUM) { -+ rv = readlink_patchlevel(storage->patch_fd, fname); -+ if (rv < 0) { -+ rv = PATCH_OPEN_ERROR; -+ kpatch_close_file(&patch->kpfile); -+ } else { -+ patch->patchlevel = rv; -+ patch->kpfile.patch->user_level = patch->patchlevel; -+ rv = PATCH_FOUND; -+ } -+ -+ } -+ -+ return rv; -+} -+ -+static inline int -+storage_stat_patch(kpatch_storage_t *storage, -+ const char *buildid, -+ struct kpatch_storage_patch* patch) -+{ -+ char fname[96]; -+ struct stat buf; -+ int i, rv; -+ -+ for (i = 0; i < ARRAY_SIZE(pathtemplates); i++) { -+ sprintf(fname, pathtemplates[i], buildid); -+ -+ rv = fstatat(storage->patch_fd, fname, &buf, /* flags */ 0); -+ -+ if (rv == 0) { -+ rv = PATCH_FOUND; -+ patch->kpfile.size = buf.st_size; -+ break; -+ } else if (rv < 0 && errno == ENOENT) { -+ rv = PATCH_NOT_FOUND; -+ } -+ } -+ -+ if (rv == PATCH_FOUND && i == PATCHLEVEL_TEMPLATE_NUM) { -+ rv = readlink_patchlevel(storage->patch_fd, fname); -+ if (rv < 0) { -+ rv = PATCH_OPEN_ERROR; -+ } else { -+ patch->patchlevel = rv; -+ rv = PATCH_FOUND; -+ } -+ } -+ -+ return rv; -+} -+ -+/* -+ * TODO(pboldin) I duplicate a lot of code kernel has for filesystems already. -+ * Should we avoid this caching at all? -+ */ -+#define ERR_PATCH ((struct kpatch_storage_patch *)1) -+static struct kpatch_storage_patch * -+storage_get_patch(kpatch_storage_t *storage, const char *buildid, -+ int load) -+{ -+ struct kpatch_storage_patch *patch = NULL; -+ struct rb_node *node; -+ int rv; -+ -+ if (!storage->is_patch_dir) { -+ if (!strcmp(storage->patch.buildid, buildid)) { -+ return &storage->patch; -+ } -+ return NULL; -+ } -+ -+ /* Look here, could be loaded already */ -+ node = rb_search_node(&storage->tree, cmp_buildid, -+ (unsigned long)buildid); -+ if (node != NULL) -+ return rb_entry(node, struct kpatch_storage_patch, node); -+ -+ /* OK, look at the filesystem */ -+ patch = malloc(sizeof(*patch)); -+ if (patch == NULL) -+ return ERR_PATCH; -+ -+ memset(patch, 0, sizeof(*patch)); -+ patch->patchlevel = -1; -+ init_kp_file(&patch->kpfile); -+ -+ if (load) -+ rv = storage_open_patch(storage, buildid, patch); -+ else -+ rv = storage_stat_patch(storage, buildid, patch); -+ -+ if (rv == PATCH_OPEN_ERROR) { -+ free(patch); -+ return ERR_PATCH; -+ } -+ -+ strcpy(patch->buildid, buildid); -+ -+ rb_insert_node(&storage->tree, -+ &patch->node, -+ cmp_buildid, -+ (unsigned long)patch->buildid); -+ -+ return patch; -+} -+ -+int storage_patch_found(struct kpatch_storage_patch *patch) -+{ -+ return patch && patch->kpfile.size >= 0; -+} -+ -+static int -+storage_load_patch(kpatch_storage_t *storage, const char *buildid, -+ struct kp_file **pkpfile) -+{ -+ struct kpatch_storage_patch *patch = NULL; -+ -+ if (pkpfile == NULL) { -+ kperr("pkpfile == NULL\n"); -+ return PATCH_OPEN_ERROR; -+ } -+ -+ patch = storage_get_patch(storage, buildid, /* load */ 1); -+ if (patch == ERR_PATCH) -+ return PATCH_OPEN_ERROR; -+ if (patch == NULL) -+ return PATCH_NOT_FOUND; -+ -+ *pkpfile = &patch->kpfile; -+ -+ return storage_patch_found(patch) ? PATCH_FOUND : PATCH_NOT_FOUND; -+} -+ -+int storage_have_patch(kpatch_storage_t *storage, const char *buildid, -+ struct kpatch_storage_patch **ppatch) -+{ -+ struct kpatch_storage_patch *patch = NULL; -+ -+ if (ppatch) -+ *ppatch = NULL; -+ -+ patch = storage_get_patch(storage, buildid, /* load */ 0); -+ if (patch == ERR_PATCH) -+ return PATCH_OPEN_ERROR; -+ -+ if (!storage_patch_found(patch)) -+ return PATCH_NOT_FOUND; -+ -+ if (ppatch) -+ *ppatch = patch; -+ return PATCH_FOUND; -+} -+ -+char *storage_get_description(kpatch_storage_t *storage, -+ struct kpatch_storage_patch *patch) -+{ -+ char *desc = NULL; -+ char path[PATH_MAX]; -+ int fd, rv, alloc = 0, sz = 0; -+ -+ if (!storage->is_patch_dir) -+ return NULL; -+ -+ if (patch->desc) -+ return patch->desc; -+ -+ sprintf(path, "%s/%d/description", patch->buildid, patch->patchlevel); -+ fd = openat(storage->patch_fd, path, O_RDONLY); -+ if (fd == -1) -+ return NULL; -+ -+ while (1) { -+ if (sz + 1024 >= alloc) { -+ char *olddesc = desc; -+ alloc += PAGE_SIZE; -+ -+ desc = malloc(alloc); -+ -+ if (olddesc != NULL) { -+ memcpy(desc, olddesc, sz); -+ free(olddesc); -+ } -+ -+ olddesc = desc; -+ } -+ -+ rv = read(fd, desc + sz, alloc - sz); -+ if (rv == -1 && errno == EINTR) -+ continue; -+ -+ if (rv == -1) -+ goto err_free; -+ -+ if (rv == 0) -+ break; -+ -+ sz += rv; -+ } -+ -+ patch->desc = desc; -+ -+ return desc; -+ -+err_free: -+ free(desc); -+ close(fd); -+ return NULL; -+} -+ -+int storage_lookup_patches(kpatch_storage_t *storage, kpatch_process_t *proc) -+{ -+ struct kp_file *pkpfile; -+ struct object_file *o; -+ const char *bid; -+ int found = 0, ret; -+ -+ list_for_each_entry(o, &proc->objs, list) { -+ if (!o->is_elf || is_kernel_object_name(o->name)) -+ continue; -+ -+ bid = kpatch_get_buildid(o); -+ if (bid == NULL) { -+ kpinfo("can't get buildid for %s\n", -+ o->name); -+ continue; -+ } -+ -+ ret = storage_load_patch(storage, bid, &pkpfile); -+ if (ret == PATCH_OPEN_ERROR) { -+ if (errno != ENOENT) -+ kplogerror("error finding patch for %s (%s)\n", -+ o->name, bid); -+ continue; -+ } -+ -+ if (ret == PATCH_FOUND) { -+ o->skpfile = pkpfile; -+ found++; -+ } -+ } -+ -+ kpinfo("%d object(s) have valid patch(es)\n", found); -+ -+ kpdebug("Object files dump:\n"); -+ list_for_each_entry(o, &proc->objs, list) -+ kpatch_object_dump(o); -+ -+ return found; -+} -+ -+static int -+storage_execute_script(kpatch_storage_t *storage, -+ kpatch_process_t *proc, -+ const char *name) -+{ -+ int childpid, rv = 0, status; -+ char pidbuf[16], pathbuf[PATH_MAX]; -+ -+ if (!storage->is_patch_dir) -+ return 0; -+ -+ sprintf(pathbuf, "%s/%s", storage->path, name); -+ -+ rv = access(pathbuf, X_OK); -+ /* No file -- no problems */ -+ if (rv < 0) -+ return errno == ENOENT ? 0 : -1; -+ -+ sprintf(pidbuf, "%d", proc->pid); -+ -+ childpid = fork(); -+ if (childpid == 0) { -+ rv = execl(pathbuf, name, pidbuf, NULL); -+ if (rv < 0) -+ kplogerror("execl failed\n"); -+ exit(EXIT_FAILURE); -+ } else { -+ rv = waitpid(childpid, &status, 0); -+ if (rv < 0) -+ kplogerror("waitpid failed for %d\n", childpid); -+ -+ if (WIFEXITED(status)) -+ rv = WEXITSTATUS(status); -+ else if (WIFSIGNALED(status)) -+ rv = WTERMSIG(status); -+ if (rv) -+ kperr("child script failed %d\n", rv); -+ } -+ -+ return -rv; -+} -+ -+int storage_execute_before_script(kpatch_storage_t *storage, kpatch_process_t *proc) -+{ -+ return storage_execute_script(storage, proc, "before"); -+} -+ -+int storage_execute_after_script(kpatch_storage_t *storage, kpatch_process_t *proc) -+{ -+ return storage_execute_script(storage, proc, "after"); -+} -+ -diff --git a/src/kpatch_storage.h b/src/kpatch_storage.h -new file mode 100644 -index 0000000..eb8064b ---- /dev/null -+++ b/src/kpatch_storage.h -@@ -0,0 +1,66 @@ -+#ifndef __KPATCH_STORAGE__ -+#define __KPATCH_STORAGE__ -+ -+#include "kpatch_common.h" -+#include "kpatch_file.h" -+#include "kpatch_process.h" -+#include "rbtree.h" -+ -+struct kpatch_storage_patch { -+ /* Pointer to the object's patch (if any) */ -+ struct kp_file kpfile; -+ -+ /* Build id kept here for negative caching */ -+ char buildid[41]; -+ -+ /* Patch level */ -+ int patchlevel; -+ -+ /* Description cache */ -+ char *desc; -+ -+ /* Node for rb_root */ -+ struct rb_node node; -+}; -+ -+struct kpatch_storage { -+ /* Patch storage path */ -+ char *path; -+ -+ /* Patch file (or directory) descriptor */ -+ int patch_fd; -+ -+ /* Is patch_fd a directory or a file? */ -+ char is_patch_dir; -+ -+ union { -+ /* Tree with BuildID keyed `kp_file's, -+ * is_patch_dir = 1 */ -+ struct rb_root tree; -+ -+ /* A single file, is_patch_dir = 0 */ -+ struct kpatch_storage_patch patch; -+ }; -+}; -+ -+typedef struct kpatch_storage kpatch_storage_t; -+ -+int storage_init(kpatch_storage_t *storage, -+ const char *fname); -+void storage_free(kpatch_storage_t *storage); -+ -+enum { -+ PATCH_OPEN_ERROR = -1, -+ PATCH_NOT_FOUND = 0, -+ PATCH_FOUND = 1, -+}; -+int storage_lookup_patches(kpatch_storage_t *storage, kpatch_process_t *proc); -+int storage_have_patch(kpatch_storage_t *storage, const char *buildid, -+ struct kpatch_storage_patch **ppatch); -+int storage_patch_found(struct kpatch_storage_patch *patch); -+int storage_execute_before_script(kpatch_storage_t *storage, kpatch_process_t *proc); -+int storage_execute_after_script(kpatch_storage_t *storage, kpatch_process_t *proc); -+char *storage_get_description(kpatch_storage_t *storage, -+ struct kpatch_storage_patch *patch); -+ -+#endif -diff --git a/src/kpatch_user.c b/src/kpatch_user.c -index 21a90ab..672b4d4 100644 ---- a/src/kpatch_user.c -+++ b/src/kpatch_user.c -@@ -19,6 +19,7 @@ - #include - - #include "kpatch_user.h" -+#include "kpatch_storage.h" - #include "kpatch_process.h" - #include "kpatch_file.h" - #include "kpatch_common.h" -@@ -41,487 +42,6 @@ typedef int (callback_t)(int pid, void *data); - static int - processes_do(int pid, callback_t callback, void *data); - --/***************************************************************************** -- * Patch storage subroutines. -- ****************************************************************************/ -- --static int --patch_file_verify(struct kp_file *kpfile) --{ -- GElf_Ehdr *hdr; -- struct kpatch_file *k = kpfile->patch; -- ssize_t size = kpfile->size; -- -- kpdebug("Verifying patch for '%s'...", k->modulename); -- -- if (memcmp(k->magic, KPATCH_FILE_MAGIC1, sizeof(k->magic))) { -- kperr("'%s' patch is invalid: Invalid magic.\n", -- k->modulename); -- return -1; -- } -- if (k->total_size > size) { -- kperr("'%s' patch is invalid: Invalid size: %u/%ld.\n", -- k->modulename, k->total_size, size); -- return -1; -- } -- hdr = (void *)k + k->kpatch_offset; -- if (memcmp(hdr->e_ident, ELFMAG, SELFMAG) || -- hdr->e_type != ET_REL || -- hdr->e_shentsize != sizeof(GElf_Shdr)) { -- kperr("'%s' patch is invalid: Wrong ELF header or not ET_REL\n", -- k->modulename); -- return -1; -- } -- kpdebug("OK\n"); -- return 1; --} -- --static int --storage_init(kpatch_storage_t *storage, -- const char *fname) --{ -- int patch_fd = -1; -- struct stat stat = { .st_mode = 0 }; -- -- if (fname != NULL) { -- patch_fd = open(fname, O_RDONLY | O_CLOEXEC); -- if (patch_fd < 0) -- goto out_err; -- -- if (fstat(patch_fd, &stat) < 0) -- goto out_close; -- } -- -- storage->patch_fd = patch_fd; -- storage->is_patch_dir = S_ISDIR(stat.st_mode); -- storage->path = NULL; -- -- if (storage->is_patch_dir) { -- rb_init(&storage->tree); -- } else { -- int ret; -- -- ret = kpatch_open_fd(storage->patch_fd, &storage->patch.kpfile); -- if (ret < 0) -- goto out_close; -- -- ret = patch_file_verify(&storage->patch.kpfile); -- if (ret < 0) { -- kpatch_close_file(&storage->patch.kpfile); -- goto out_close; -- } -- strcpy(storage->patch.buildid, storage->patch.kpfile.patch->uname); -- } -- -- storage->path = strdup(fname); -- -- return 0; -- --out_close: -- close(patch_fd); --out_err: -- kplogerror("cannot open storage '%s'\n", fname); -- return -1; --} -- --static void --free_storage_patch_cb(struct rb_node *node) --{ -- struct kpatch_storage_patch *patch; -- -- patch = rb_entry(node, struct kpatch_storage_patch, node); -- kpatch_close_file(&patch->kpfile); -- -- free(patch->desc); -- free(patch); --} -- --static void --storage_free(kpatch_storage_t *storage) --{ -- close(storage->patch_fd); -- if (storage->is_patch_dir) -- rb_destroy(&storage->tree, free_storage_patch_cb); -- free(storage->path); --} -- --static int --cmp_buildid(struct rb_node *node, unsigned long key) --{ -- const char *bid = (const char *)key; -- struct kpatch_storage_patch *patch; -- -- patch = rb_entry(node, struct kpatch_storage_patch, node); -- -- return strcmp(patch->buildid, bid); --} -- --#define PATCHLEVEL_TEMPLATE_NUM 0 -- --static char *pathtemplates[] = { -- "%s/latest/kpatch.bin", -- "%s.kpatch" --}; -- --static int --readlink_patchlevel(int dirfd, const char *fname) --{ -- ssize_t r; -- char buf[32]; -- -- *strrchr(fname, '/') = '\0'; -- r = readlinkat(dirfd, fname, buf, sizeof(buf)); -- if (r > 0 && r < 32) { -- buf[r] = '\0'; -- return atoi(buf); -- } else if (r >= 32) { -- r = -1; -- errno = ERANGE; -- } -- -- kplogerror("can't readlink '%s' to find patchlevel\n", -- fname); -- return -1; --} -- --enum { -- PATCH_OPEN_ERROR = -1, -- PATCH_NOT_FOUND = 0, -- PATCH_FOUND = 1, --}; -- --static inline int --storage_open_patch(kpatch_storage_t *storage, -- const char *buildid, -- struct kpatch_storage_patch* patch) --{ -- char fname[96]; -- int i, rv; -- -- for (i = 0; i < ARRAY_SIZE(pathtemplates); i++) { -- sprintf(fname, pathtemplates[i], buildid); -- -- rv = kpatch_openat_file(storage->patch_fd, fname, &patch->kpfile); -- if (rv == 0) { -- rv = patch_file_verify(&patch->kpfile); -- -- if (rv < 0) -- kpatch_close_file(&patch->kpfile); -- else -- rv = PATCH_FOUND; -- break; -- } -- } -- -- if (rv == PATCH_FOUND && i == PATCHLEVEL_TEMPLATE_NUM) { -- rv = readlink_patchlevel(storage->patch_fd, fname); -- if (rv < 0) { -- rv = PATCH_OPEN_ERROR; -- kpatch_close_file(&patch->kpfile); -- } else { -- patch->patchlevel = rv; -- patch->kpfile.patch->user_level = patch->patchlevel; -- rv = PATCH_FOUND; -- } -- -- } -- -- return rv; --} -- --static inline int --storage_stat_patch(kpatch_storage_t *storage, -- const char *buildid, -- struct kpatch_storage_patch* patch) --{ -- char fname[96]; -- struct stat buf; -- int i, rv; -- -- for (i = 0; i < ARRAY_SIZE(pathtemplates); i++) { -- sprintf(fname, pathtemplates[i], buildid); -- -- rv = fstatat(storage->patch_fd, fname, &buf, /* flags */ 0); -- -- if (rv == 0) { -- rv = PATCH_FOUND; -- patch->kpfile.size = buf.st_size; -- break; -- } else if (rv < 0 && errno == ENOENT) { -- rv = PATCH_NOT_FOUND; -- } -- } -- -- if (rv == PATCH_FOUND && i == PATCHLEVEL_TEMPLATE_NUM) { -- rv = readlink_patchlevel(storage->patch_fd, fname); -- if (rv < 0) { -- rv = PATCH_OPEN_ERROR; -- } else { -- patch->patchlevel = rv; -- rv = PATCH_FOUND; -- } -- } -- -- return rv; --} -- --/* -- * TODO(pboldin) I duplicate a lot of code kernel has for filesystems already. -- * Should we avoid this caching at all? -- */ --#define ERR_PATCH ((struct kpatch_storage_patch *)1) --static struct kpatch_storage_patch * --storage_get_patch(kpatch_storage_t *storage, const char *buildid, -- int load) --{ -- struct kpatch_storage_patch *patch = NULL; -- struct rb_node *node; -- int rv; -- -- if (!storage->is_patch_dir) { -- if (!strcmp(storage->patch.buildid, buildid)) { -- return &storage->patch; -- } -- return NULL; -- } -- -- /* Look here, could be loaded already */ -- node = rb_search_node(&storage->tree, cmp_buildid, -- (unsigned long)buildid); -- if (node != NULL) -- return rb_entry(node, struct kpatch_storage_patch, node); -- -- /* OK, look at the filesystem */ -- patch = malloc(sizeof(*patch)); -- if (patch == NULL) -- return ERR_PATCH; -- -- memset(patch, 0, sizeof(*patch)); -- patch->patchlevel = -1; -- init_kp_file(&patch->kpfile); -- -- if (load) -- rv = storage_open_patch(storage, buildid, patch); -- else -- rv = storage_stat_patch(storage, buildid, patch); -- -- if (rv == PATCH_OPEN_ERROR) { -- free(patch); -- return ERR_PATCH; -- } -- -- strcpy(patch->buildid, buildid); -- -- rb_insert_node(&storage->tree, -- &patch->node, -- cmp_buildid, -- (unsigned long)patch->buildid); -- -- return patch; --} -- --static int --storage_patch_found(struct kpatch_storage_patch *patch) --{ -- return patch && patch->kpfile.size >= 0; --} -- --static int --storage_load_patch(kpatch_storage_t *storage, const char *buildid, -- struct kp_file **pkpfile) --{ -- struct kpatch_storage_patch *patch = NULL; -- -- if (pkpfile == NULL) { -- kperr("pkpfile == NULL\n"); -- return PATCH_OPEN_ERROR; -- } -- -- patch = storage_get_patch(storage, buildid, /* load */ 1); -- if (patch == ERR_PATCH) -- return PATCH_OPEN_ERROR; -- if (patch == NULL) -- return PATCH_NOT_FOUND; -- -- *pkpfile = &patch->kpfile; -- -- return storage_patch_found(patch) ? PATCH_FOUND : PATCH_NOT_FOUND; --} -- --static int --storage_have_patch(kpatch_storage_t *storage, const char *buildid, -- struct kpatch_storage_patch **ppatch) --{ -- struct kpatch_storage_patch *patch = NULL; -- -- if (ppatch) -- *ppatch = NULL; -- -- patch = storage_get_patch(storage, buildid, /* load */ 0); -- if (patch == ERR_PATCH) -- return PATCH_OPEN_ERROR; -- -- if (!storage_patch_found(patch)) -- return PATCH_NOT_FOUND; -- -- if (ppatch) -- *ppatch = patch; -- return PATCH_FOUND; --} -- --static char * --storage_get_description(kpatch_storage_t *storage, -- struct kpatch_storage_patch *patch) --{ -- char *desc = NULL; -- char path[PATH_MAX]; -- int fd, rv, alloc = 0, sz = 0; -- -- if (!storage->is_patch_dir) -- return NULL; -- -- if (patch->desc) -- return patch->desc; -- -- sprintf(path, "%s/%d/description", patch->buildid, patch->patchlevel); -- fd = openat(storage->patch_fd, path, O_RDONLY); -- if (fd == -1) -- return NULL; -- -- while (1) { -- if (sz + 1024 >= alloc) { -- char *olddesc = desc; -- alloc += PAGE_SIZE; -- -- desc = malloc(alloc); -- -- if (olddesc != NULL) { -- memcpy(desc, olddesc, sz); -- free(olddesc); -- } -- -- olddesc = desc; -- } -- -- rv = read(fd, desc + sz, alloc - sz); -- if (rv == -1 && errno == EINTR) -- continue; -- -- if (rv == -1) -- goto err_free; -- -- if (rv == 0) -- break; -- -- sz += rv; -- } -- -- patch->desc = desc; -- -- return desc; -- --err_free: -- free(desc); -- close(fd); -- return NULL; --} -- --static int --storage_lookup_patches(kpatch_storage_t *storage, kpatch_process_t *proc) --{ -- struct kp_file *pkpfile; -- struct object_file *o; -- const char *bid; -- int found = 0, ret; -- -- list_for_each_entry(o, &proc->objs, list) { -- if (!o->is_elf || is_kernel_object_name(o->name)) -- continue; -- -- bid = kpatch_get_buildid(o); -- if (bid == NULL) { -- kpinfo("can't get buildid for %s\n", -- o->name); -- continue; -- } -- -- ret = storage_load_patch(storage, bid, &pkpfile); -- if (ret == PATCH_OPEN_ERROR) { -- if (errno != ENOENT) -- kplogerror("error finding patch for %s (%s)\n", -- o->name, bid); -- continue; -- } -- -- if (ret == PATCH_FOUND) { -- o->skpfile = pkpfile; -- found++; -- } -- } -- -- kpinfo("%d object(s) have valid patch(es)\n", found); -- -- kpdebug("Object files dump:\n"); -- list_for_each_entry(o, &proc->objs, list) -- kpatch_object_dump(o); -- -- return found; --} -- --static int --storage_execute_script(kpatch_storage_t *storage, -- kpatch_process_t *proc, -- const char *name) --{ -- int childpid, rv = 0, status; -- char pidbuf[16], pathbuf[PATH_MAX]; -- -- if (!storage->is_patch_dir) -- return 0; -- -- sprintf(pathbuf, "%s/%s", storage->path, name); -- -- rv = access(pathbuf, X_OK); -- /* No file -- no problems */ -- if (rv < 0) -- return errno == ENOENT ? 0 : -1; -- -- sprintf(pidbuf, "%d", proc->pid); -- -- childpid = fork(); -- if (childpid == 0) { -- rv = execl(pathbuf, name, pidbuf, NULL); -- if (rv < 0) -- kplogerror("execl failed\n"); -- exit(EXIT_FAILURE); -- } else { -- rv = waitpid(childpid, &status, 0); -- if (rv < 0) -- kplogerror("waitpid failed for %d\n", childpid); -- -- if (WIFEXITED(status)) -- rv = WEXITSTATUS(status); -- else if (WIFSIGNALED(status)) -- rv = WTERMSIG(status); -- if (rv) -- kperr("child script failed %d\n", rv); -- } -- -- return -rv; --} -- --static int --storage_execute_before_script(kpatch_storage_t *storage, kpatch_process_t *proc) --{ -- return storage_execute_script(storage, proc, "before"); --} -- --static int --storage_execute_after_script(kpatch_storage_t *storage, kpatch_process_t *proc) --{ -- return storage_execute_script(storage, proc, "after"); --} -- - enum { - ACTION_APPLY_PATCH, - ACTION_UNAPPLY_PATCH -diff --git a/src/kpatch_user.h b/src/kpatch_user.h -index 091c463..c0b52ff 100644 ---- a/src/kpatch_user.h -+++ b/src/kpatch_user.h -@@ -5,45 +5,6 @@ - #include "kpatch_file.h" - #include "rbtree.h" - --struct kpatch_storage_patch { -- /* Pointer to the object's patch (if any) */ -- struct kp_file kpfile; -- -- /* Build id kept here for negative caching */ -- char buildid[41]; -- -- /* Patch level */ -- int patchlevel; -- -- /* Description cache */ -- char *desc; -- -- /* Node for rb_root */ -- struct rb_node node; --}; -- --struct kpatch_storage { -- /* Patch storage path */ -- char *path; -- -- /* Patch file (or directory) descriptor */ -- int patch_fd; -- -- /* Is patch_fd a directory or a file? */ -- char is_patch_dir; -- -- union { -- /* Tree with BuildID keyed `kp_file's, -- * is_patch_dir = 1 */ -- struct rb_root tree; -- -- /* A single file, is_patch_dir = 0 */ -- struct kpatch_storage_patch patch; -- }; --}; -- --typedef struct kpatch_storage kpatch_storage_t; -- - int cmd_patch_user(int argc, char *argv[]); - int cmd_unpatch_user(int argc, char *argv[]); - --- -2.23.0 - diff --git a/0002-Split-kpatch_patch.c-from-kpatch_user.c.patch b/0002-Split-kpatch_patch.c-from-kpatch_user.c.patch deleted file mode 100644 index 922b055..0000000 --- a/0002-Split-kpatch_patch.c-from-kpatch_user.c.patch +++ /dev/null @@ -1,1633 +0,0 @@ -From 03cbe62f9376144991f5593c89500174b86341e7 Mon Sep 17 00:00:00 2001 -From: Roman Rashchupkin -Date: Wed, 17 Jan 2018 13:45:34 +0300 -Subject: [PATCH 02/89] Split kpatch_patch.c from kpatch_user.c - ---- - .gitignore | 1 + - src/Makefile | 2 +- - src/kpatch_patch.c | 761 +++++++++++++++++++++++++++++++++++++++++++++ - src/kpatch_patch.h | 28 ++ - src/kpatch_user.c | 757 +------------------------------------------- - 5 files changed, 792 insertions(+), 757 deletions(-) - create mode 100644 .gitignore - create mode 100644 src/kpatch_patch.c - create mode 100644 src/kpatch_patch.h - -diff --git a/.gitignore b/.gitignore -new file mode 100644 -index 0000000..5761abc ---- /dev/null -+++ b/.gitignore -@@ -0,0 +1 @@ -+*.o -diff --git a/src/Makefile b/src/Makefile -index c008535..cd766e1 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -35,7 +35,7 @@ kpatch_make: kpatch_make.o - LIBUNWIND_LIBS := $(shell pkg-config --libs libunwind libunwind-ptrace) - - --libcare-ctl: kpatch_user.o kpatch_storage.o kpatch_elf.o kpatch_ptrace.o kpatch_coro.o -+libcare-ctl: kpatch_user.o kpatch_storage.o kpatch_patch.c kpatch_elf.o kpatch_ptrace.o kpatch_coro.o - libcare-ctl: kpatch_process.o kpatch_common.o rbtree.o kpatch_log.o - libcare-ctl: LDLIBS += -lelf -lrt $(LIBUNWIND_LIBS) - -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -new file mode 100644 -index 0000000..e32c702 ---- /dev/null -+++ b/src/kpatch_patch.c -@@ -0,0 +1,761 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+ -+#include "kpatch_patch.h" -+#include "kpatch_user.h" -+#include "kpatch_storage.h" -+#include "kpatch_process.h" -+#include "kpatch_file.h" -+#include "kpatch_common.h" -+#include "kpatch_elf.h" -+#include "kpatch_ptrace.h" -+#include "list.h" -+#include "kpatch_log.h" -+ -+ -+static inline int -+is_addr_in_info(unsigned long addr, -+ struct kpatch_info *info, -+ int direction) -+{ -+#define IS_ADDR_IN_HALF_INTERVAL(addr, start, len) ((addr >= start) && (addr < start + len)) -+ if (direction == ACTION_APPLY_PATCH) -+ return IS_ADDR_IN_HALF_INTERVAL(addr, info->daddr, info->dlen); -+ if (direction == ACTION_UNAPPLY_PATCH) -+ return IS_ADDR_IN_HALF_INTERVAL(addr, info->saddr, info->slen); -+ return 0; -+} -+ -+static void print_address_closest_func(int log_level, struct object_file *o, unw_cursor_t *cur, int in_oldpatch) -+{ -+ unsigned long address, offset; -+ char fname[128]; -+ -+ unw_get_reg(cur, UNW_REG_IP, &address); -+ -+ if (in_oldpatch) -+ if (address >= o->kpta && address < o->kpta + o->kpfile.size) { -+ kplog(log_level, "\t[0x%lx](patch)\n", address); -+ return; -+ } -+ -+ if (!unw_get_proc_name(cur, fname, 128, &offset)) -+ kplog(log_level, "\t[0x%lx] %s+0x%lx\n", address, fname, offset); -+ else -+ kplog(log_level, "\t[0x%lx]\n", address); -+} -+ -+/** -+ * Verify that the function from file `o' is safe to be patched. -+ * -+ * If retip is given then the safe address is returned in it. -+ * What is considered a safe address depends on the `paranoid' value. When it -+ * is true, safe address is the upper of ALL functions that do have a patch. -+ * When it is false, safe address is the address of the first function -+ * instruction that have no patch. -+ * -+ * That is, for the call chain from left to right with functions that have -+ * patch marked with '+': -+ * -+ * foo -> bar+ -> baz -> qux+ -+ * -+ * With `paranoid=true' this function will return address of the `bar+' -+ * instruction being executed with *retip pointing to the `foo' instruction -+ * that comes after the call to `bar+'. With `paranoid=false' this function -+ * will return address of the `qux+' instruction being executed with *retip -+ * pointing to the `baz' instruction that comes after call to `qux+'. -+ */ -+static unsigned long -+object_patch_verify_safety_single(struct object_file *o, -+ unw_cursor_t *cur, -+ unsigned long *retip, -+ int paranoid, -+ int direction) -+{ -+ unw_word_t ip; -+ struct kpatch_info *info = o->info; -+ size_t i, ninfo = o->ninfo; -+ int prev = 0, rv; -+ unsigned long last = 0; -+ -+ if (direction != ACTION_APPLY_PATCH && -+ direction != ACTION_UNAPPLY_PATCH) -+ kpfatal("unknown direction"); -+ -+ do { -+ print_address_closest_func(LOG_INFO, o, cur, direction == ACTION_UNAPPLY_PATCH); -+ -+ unw_get_reg(cur, UNW_REG_IP, &ip); -+ -+ for (i = 0; i < ninfo; i++) { -+ if (is_new_func(&info[i])) -+ continue; -+ -+ if (is_addr_in_info((long)ip, &info[i], direction)) { -+ if (direction == ACTION_APPLY_PATCH) -+ last = info[i].daddr; -+ else if (direction == ACTION_UNAPPLY_PATCH) -+ last = info[i].saddr; -+ prev = 1; -+ break; -+ } -+ } -+ -+ if (prev && i == ninfo) { -+ prev = 0; -+ if (retip) -+ *retip = ip; -+ if (!paranoid) -+ break; -+ } -+ -+ rv = unw_step(cur); -+ } while (rv > 0); -+ -+ if (rv < 0) -+ kperr("unw_step = %d\n", rv); -+ -+ return last; -+} -+ -+#define KPATCH_CORO_STACK_UNSAFE (1 << 20) -+ -+static int -+patch_verify_safety(struct object_file *o, -+ unsigned long *retips, -+ int direction) -+{ -+ size_t nr = 0, failed = 0, count = 0; -+ struct kpatch_ptrace_ctx *p; -+ struct kpatch_coro *c; -+ unsigned long retip, ret; -+ unw_cursor_t cur; -+ -+ list_for_each_entry(c, &o->proc->coro.coros, list) { -+ void *ucoro; -+ -+ kpdebug("Verifying safety for coroutine %zd...\n", count); -+ kpinfo("Stacktrace to verify safety for coroutine %zd:\n", count); -+ ucoro = _UCORO_create(c, proc2pctx(o->proc)->pid); -+ if (!ucoro) { -+ kplogerror("can't create unwind coro context\n"); -+ return -1; -+ } -+ -+ ret = unw_init_remote(&cur, o->proc->coro.unwd, ucoro); -+ if (ret) { -+ kplogerror("can't create unwind remote context\n"); -+ _UCORO_destroy(ucoro); -+ return -1; -+ } -+ -+ ret = object_patch_verify_safety_single(o, &cur, NULL, 0, direction); -+ _UCORO_destroy(ucoro); -+ if (ret) { -+ kperr("safety check failed to %lx\n", ret); -+ failed++; -+ } else { -+ kpdebug("OK\n"); -+ } -+ count++; -+ } -+ if (failed) -+ return failed | KPATCH_CORO_STACK_UNSAFE; -+ -+ list_for_each_entry(p, &o->proc->ptrace.pctxs, list) { -+ void *upt; -+ -+ kpdebug("Verifying safety for pid %d...\n", p->pid); -+ kpinfo("Stacktrace to verify safety for pid %d:\n", p->pid); -+ upt = _UPT_create(p->pid); -+ if (!upt) { -+ kplogerror("can't create unwind ptrace context\n"); -+ return -1; -+ } -+ -+ ret = unw_init_remote(&cur, o->proc->ptrace.unwd, upt); -+ if (ret) { -+ kplogerror("can't create unwind remote context\n"); -+ _UPT_destroy(upt); -+ return -1; -+ } -+ -+ ret = object_patch_verify_safety_single(o, &cur, &retip, 0, direction); -+ _UPT_destroy(upt); -+ if (ret) { -+ /* TODO: dump full backtrace, with symbols where possible (shared libs) */ -+ if (retips) { -+ kperr("safety check failed for %lx, will continue until %lx\n", -+ ret, retip); -+ retips[nr] = retip; -+ } else { -+ kperr("safety check failed for %lx\n", ret); -+ errno = -EBUSY; -+ } -+ failed++; -+ } -+ kpdebug("OK\n"); -+ nr++; -+ } -+ -+ return failed; -+} -+ -+/* -+ * Ensure that it is safe to apply/unapply patch for the object file `o`. -+ * -+ * First, we verify the safety of the patch. -+ * -+ * It is safe to apply patch (ACTION_APPLY_PATCH) when no threads or coroutines -+ * are executing the functions to be patched. -+ * -+ * It is safe to unapply patch (ACTION_UNAPPLY_PATCH) when no threads or -+ * coroutines are executing the patched functions. -+ * -+ * If it is not safe to do the action we continue threads execution until they -+ * are out of the functions that we want to patch/unpatch. This is done using -+ * `kpatch_ptrace_execute_until` function with default timeout of 3000 seconds -+ * and checking for action safety again. -+ */ -+static int -+patch_ensure_safety(struct object_file *o, -+ int action) -+{ -+ struct kpatch_ptrace_ctx *p; -+ unsigned long ret, *retips; -+ size_t nr = 0, i; -+ -+ list_for_each_entry(p, &o->proc->ptrace.pctxs, list) -+ nr++; -+ retips = malloc(nr * sizeof(unsigned long)); -+ if (retips == NULL) -+ return -1; -+ -+ memset(retips, 0, nr * sizeof(unsigned long)); -+ -+ ret = patch_verify_safety(o, retips, action); -+ /* -+ * For coroutines we can't "execute until" -+ */ -+ if (ret && !(ret & KPATCH_CORO_STACK_UNSAFE)) { -+ i = 0; -+ list_for_each_entry(p, &o->proc->ptrace.pctxs, list) { -+ p->execute_until = retips[i]; -+ i++; -+ } -+ -+ ret = kpatch_ptrace_execute_until(o->proc, 3000, 0); -+ -+ /* OK, at this point we may have new threads, discover them */ -+ if (ret == 0) -+ ret = kpatch_process_attach(o->proc); -+ if (ret == 0) -+ ret = patch_verify_safety(o, NULL, action); -+ } -+ -+ free(retips); -+ -+ return ret ? -1 : 0; -+} -+ -+/***************************************************************************** -+ * Patch application subroutines -+ ****************************************************************************/ -+/* -+ * This flag is local, i.e. it is never stored to the -+ * patch applied to patient's memory. -+ */ -+#define PATCH_APPLIED (1 << 31) -+ -+#define HUNK_SIZE 5 -+ -+static int -+patch_apply_hunk(struct object_file *o, size_t nhunk) -+{ -+ int ret; -+ char code[HUNK_SIZE] = {0xe9, 0x00, 0x00, 0x00, 0x00}; /* jmp IMM */ -+ struct kpatch_info *info = &o->info[nhunk]; -+ unsigned long pundo; -+ -+ if (is_new_func(info)) -+ return 0; -+ -+ pundo = o->kpta + o->kpfile.patch->user_undo + nhunk * HUNK_SIZE; -+ kpinfo("%s origcode from 0x%lx+0x%x to 0x%lx\n", -+ o->name, info->daddr, HUNK_SIZE, pundo); -+ ret = kpatch_process_memcpy(o->proc, pundo, -+ info->daddr, HUNK_SIZE); -+ if (ret < 0) -+ return ret; -+ -+ kpinfo("%s hunk 0x%lx+0x%x -> 0x%lx+0x%x\n", -+ o->name, info->daddr, info->dlen, info->saddr, info->slen); -+ *(unsigned int *)(code + 1) = (unsigned int)(info->saddr - info->daddr - 5); -+ ret = kpatch_process_mem_write(o->proc, -+ code, -+ info->daddr, -+ sizeof(code)); -+ /* -+ * NOTE(pboldin): This is only stored locally, as information have -+ * been copied to patient's memory already. -+ */ -+ info->flags |= PATCH_APPLIED; -+ return ret ? -1 : 0; -+} -+ -+static int -+duplicate_kp_file(struct object_file *o) -+{ -+ struct kpatch_file *patch; -+ -+ patch = malloc(o->skpfile->size); -+ if (patch == NULL) -+ return -1; -+ -+ memcpy(patch, o->skpfile->patch, o->skpfile->size); -+ o->kpfile.patch = patch; -+ o->kpfile.size = o->skpfile->size; -+ -+ return 0; -+} -+ -+static int -+object_apply_patch(struct object_file *o) -+{ -+ struct kpatch_file *kp; -+ size_t sz, i; -+ int undef, ret; -+ -+ if (o->skpfile == NULL || o->is_patch) -+ return 0; -+ -+ if (o->applied_patch) { -+ kpinfo("Object '%s' already have a patch, not patching\n", -+ o->name); -+ return 0; -+ } -+ -+ ret = duplicate_kp_file(o); -+ if (ret < 0) { -+ kplogerror("can't duplicate kp_file\n"); -+ return -1; -+ } -+ -+ ret = kpatch_elf_load_kpatch_info(o); -+ if (ret < 0) -+ return ret; -+ -+ kp = o->kpfile.patch; -+ -+ sz = ROUND_UP(kp->total_size, 8); -+ undef = kpatch_count_undefined(o); -+ if (undef) { -+ o->jmp_table = kpatch_new_jmp_table(undef); -+ kp->jmp_offset = sz; -+ kpinfo("Jump table %d bytes for %d syms at offset 0x%x\n", -+ o->jmp_table->size, undef, kp->jmp_offset); -+ sz = ROUND_UP(sz + o->jmp_table->size, 128); -+ } -+ -+ kp->user_info = (unsigned long)o->info - -+ (unsigned long)o->kpfile.patch; -+ kp->user_undo = sz; -+ sz = ROUND_UP(sz + HUNK_SIZE * o->ninfo, 16); -+ -+ sz = ROUND_UP(sz, 4096); -+ -+ /* -+ * Map patch as close to the original code as possible. -+ * Otherwise we can't use 32-bit jumps. -+ */ -+ ret = kpatch_object_allocate_patch(o, sz); -+ if (ret < 0) -+ return ret; -+ ret = kpatch_resolve(o); -+ if (ret < 0) -+ return ret; -+ ret = kpatch_relocate(o); -+ if (ret < 0) -+ return ret; -+ ret = kpatch_process_mem_write(o->proc, -+ kp, -+ o->kpta, -+ kp->total_size); -+ if (ret < 0) -+ return -1; -+ if (o->jmp_table) { -+ ret = kpatch_process_mem_write(o->proc, -+ o->jmp_table, -+ o->kpta + kp->jmp_offset, -+ o->jmp_table->size); -+ if (ret < 0) -+ return ret; -+ } -+ -+ ret = patch_ensure_safety(o, ACTION_APPLY_PATCH); -+ if (ret < 0) -+ return ret; -+ -+ for (i = 0; i < o->ninfo; i++) { -+ ret = patch_apply_hunk(o, i); -+ if (ret < 0) -+ return ret; -+ } -+ -+ return 1; -+} -+ -+static int -+object_unapply_patch(struct object_file *o, int check_flag); -+ -+static int -+object_unapply_old_patch(struct object_file *o) -+{ -+ struct kpatch_file *kpatch_applied, *kpatch_storage; -+ int ret; -+ -+ if (o->skpfile == NULL || o->is_patch || o->applied_patch == NULL) -+ return 0; -+ -+ kpatch_applied = o->applied_patch->kpfile.patch; -+ kpatch_storage = o->skpfile->patch; -+ -+ if (kpatch_applied->user_level >= kpatch_storage->user_level) { -+ kpinfo("'%s' applied patch level is %d (storage has %d\n)\n", -+ o->name, -+ kpatch_applied->user_level, -+ kpatch_storage->user_level); -+ return 1; -+ } -+ -+ printf("%s: replacing patch level %d with level %d\n", -+ o->name, -+ kpatch_applied->user_level, -+ kpatch_storage->user_level); -+ ret = object_unapply_patch(o, /* check_flag */ 0); -+ if (ret < 0) -+ kperr("can't unapply patch for %s\n", o->name); -+ else { -+ /* TODO(pboldin): handle joining the holes here */ -+ o->applied_patch = NULL; -+ o->info = NULL; -+ o->ninfo = 0; -+ } -+ -+ return ret; -+} -+ -+static int -+kpatch_apply_patches(kpatch_process_t *proc) -+{ -+ struct object_file *o; -+ int applied = 0, ret; -+ -+ list_for_each_entry(o, &proc->objs, list) { -+ -+ ret = object_unapply_old_patch(o); -+ if (ret < 0) -+ break; -+ -+ ret = object_apply_patch(o); -+ if (ret < 0) -+ goto unpatch; -+ if (ret) -+ applied++; -+ } -+ return applied; -+ -+unpatch: -+ kperr("Patching %s failed, unapplying partially applied patch\n", o->name); -+ /* -+ * TODO(pboldin): close the holes so the state is the same -+ * after unpatch -+ */ -+ ret = object_unapply_patch(o, /* check_flag */ 1); -+ if (ret < 0) { -+ kperr("Can't unapply patch for %s\n", o->name); -+ } -+ return -1; -+} -+ -+int process_patch(int pid, void *_data) -+{ -+ int ret; -+ kpatch_process_t _proc, *proc = &_proc; -+ struct patch_data *data = _data; -+ -+ kpatch_storage_t *storage = data->storage; -+ int is_just_started = data->is_just_started; -+ int send_fd = data->send_fd; -+ -+ ret = kpatch_process_init(proc, pid, is_just_started, send_fd); -+ if (ret < 0) { -+ kperr("cannot init process %d\n", pid); -+ goto out; -+ } -+ -+ kpatch_process_print_short(proc); -+ -+ ret = kpatch_process_mem_open(proc, MEM_READ); -+ if (ret < 0) -+ goto out_free; -+ -+ /* -+ * In case the process was just started we continue execution up to the -+ * entry point of a program just to allow ld.so to load up libraries -+ */ -+ ret = kpatch_process_load_libraries(proc); -+ if (ret < 0) -+ goto out_free; -+ -+ /* -+ * In case we got there from startup send_fd != -1. -+ */ -+ ret = kpatch_process_kick_send_fd(proc); -+ if (ret < 0) -+ goto out_free; -+ -+ /* -+ * For each object file that we want to patch (either binary itself or -+ * shared library) we need its ELF structure to perform relocations. -+ * Because we know uniq BuildID of the object the section addresses -+ * stored in the patch are valid for the original object. -+ */ -+ ret = kpatch_process_map_object_files(proc); -+ if (ret < 0) -+ goto out_free; -+ -+ /* -+ * Lookup for patches appicable for proc in storage. -+ */ -+ ret = storage_lookup_patches(storage, proc); -+ if (ret <= 0) -+ goto out_free; -+ -+ /* Finally, attach to process */ -+ ret = kpatch_process_attach(proc); -+ if (ret < 0) -+ goto out_free; -+ -+ ret = kpatch_coroutines_find(proc); -+ if (ret < 0) -+ goto out_free; -+ -+ ret = storage_execute_before_script(storage, proc); -+ if (ret < 0) -+ goto out_free; -+ -+ ret = kpatch_apply_patches(proc); -+ -+ if (storage_execute_after_script(storage, proc) < 0) -+ kperr("after script failed\n"); -+ -+ -+out_free: -+ kpatch_process_free(proc); -+ -+out: -+ if (ret < 0) { -+ printf("Failed to apply patch '%s'\n", storage->path); -+ kperr("Failed to apply patch '%s'\n", storage->path); -+ } else if (ret == 0) -+ printf("No patch(es) applicable to PID '%d' have been found\n", pid); -+ else { -+ printf("%d patch hunk(s) have been successfully applied to PID '%d'\n", ret, pid); -+ ret = 0; -+ } -+ -+ return ret; -+} -+ -+ -+/***************************************************************************** -+ * Patch cancellcation subroutines and cmd_unpatch_user -+ ****************************************************************************/ -+static int -+object_find_applied_patch_info(struct object_file *o) -+{ -+ struct kpatch_info tmpinfo; -+ struct kpatch_info *remote_info; -+ size_t nalloc = 0; -+ struct process_mem_iter *iter; -+ int ret; -+ -+ if (o->info != NULL) -+ return 0; -+ -+ iter = kpatch_process_mem_iter_init(o->proc); -+ if (iter == NULL) -+ return -1; -+ -+ remote_info = (void *)o->kpta + o->kpfile.patch->user_info; -+ do { -+ ret = REMOTE_PEEK(iter, tmpinfo, remote_info); -+ if (ret < 0) -+ goto err; -+ -+ if (is_end_info(&tmpinfo)) -+ break; -+ -+ if (o->ninfo == nalloc) { -+ nalloc += 16; -+ o->info = realloc(o->info, nalloc * sizeof(tmpinfo)); -+ } -+ -+ o->info[o->ninfo] = tmpinfo; -+ -+ remote_info++; -+ o->ninfo++; -+ } while (1); -+ -+ o->applied_patch->info = o->info; -+ o->applied_patch->ninfo = o->ninfo; -+ -+err: -+ kpatch_process_mem_iter_free(iter); -+ -+ return ret; -+} -+ -+static int -+object_unapply_patch(struct object_file *o, int check_flag) -+{ -+ int ret; -+ size_t i; -+ unsigned long orig_code_addr; -+ -+ ret = object_find_applied_patch_info(o); -+ if (ret < 0) -+ return ret; -+ -+ ret = patch_ensure_safety(o, ACTION_UNAPPLY_PATCH); -+ if (ret < 0) -+ return ret; -+ -+ orig_code_addr = o->kpta + o->kpfile.patch->user_undo; -+ -+ for (i = 0; i < o->ninfo; i++) { -+ if (is_new_func(&o->info[i])) -+ continue; -+ -+ if (check_flag && !(o->info[i].flags & PATCH_APPLIED)) -+ continue; -+ -+ ret = kpatch_process_memcpy(o->proc, -+ o->info[i].daddr, -+ orig_code_addr + i * HUNK_SIZE, -+ HUNK_SIZE); -+ /* XXX(pboldin) We are in deep trouble here, handle it -+ * by restoring the patch back */ -+ if (ret < 0) -+ return ret; -+ } -+ -+ ret = kpatch_munmap_remote(proc2pctx(o->proc), -+ o->kpta, -+ o->kpfile.size); -+ -+ return ret; -+} -+ -+static int -+kpatch_should_unapply_patch(struct object_file *o, -+ char *buildids[], -+ int nbuildids) -+{ -+ int i; -+ const char *bid; -+ -+ if (nbuildids == 0) -+ return 1; -+ -+ bid = kpatch_get_buildid(o); -+ -+ for (i = 0; i < nbuildids; i++) { -+ if (!strcmp(bid, buildids[i]) || -+ !strcmp(o->name, buildids[i])) -+ return 1; -+ } -+ -+ return 0; -+} -+ -+static int -+kpatch_unapply_patches(kpatch_process_t *proc, -+ char *buildids[], -+ int nbuildids) -+{ -+ struct object_file *o; -+ int ret; -+ size_t unapplied = 0; -+ -+ ret = kpatch_process_associate_patches(proc); -+ if (ret < 0) -+ return ret; -+ -+ list_for_each_entry(o, &proc->objs, list) { -+ if (o->applied_patch == NULL) -+ continue; -+ -+ if (!kpatch_should_unapply_patch(o, buildids, nbuildids)) -+ continue; -+ -+ ret = object_unapply_patch(o, /* check_flag */ 0); -+ if (ret < 0) -+ return ret; -+ unapplied++; -+ } -+ -+ return unapplied; -+} -+ -+int process_unpatch(int pid, void *_data) -+{ -+ int ret; -+ kpatch_process_t _proc, *proc = &_proc; -+ struct unpatch_data *data = _data; -+ char **buildids = data->buildids; -+ int nbuildids = data->nbuildids; -+ -+ ret = kpatch_process_init(proc, pid, /* start */ 0, /* send_fd */ -1); -+ if (ret < 0) -+ return -1; -+ -+ kpatch_process_print_short(proc); -+ -+ ret = kpatch_process_attach(proc); -+ if (ret < 0) -+ goto out; -+ -+ ret = kpatch_process_map_object_files(proc); -+ if (ret < 0) -+ goto out; -+ -+ ret = kpatch_coroutines_find(proc); -+ if (ret < 0) -+ goto out; -+ -+ ret = kpatch_unapply_patches(proc, buildids, nbuildids); -+ -+out: -+ kpatch_process_free(proc); -+ -+ if (ret < 0) -+ printf("Failed to cancel patches for %d\n", pid); -+ else if (ret == 0) -+ printf("No patch(es) cancellable from PID '%d' were found\n", pid); -+ else -+ printf("%d patch hunk(s) were successfully cancelled from PID '%d'\n", ret, pid); -+ -+ return ret; -+} -+ -diff --git a/src/kpatch_patch.h b/src/kpatch_patch.h -new file mode 100644 -index 0000000..44806ab ---- /dev/null -+++ b/src/kpatch_patch.h -@@ -0,0 +1,28 @@ -+#ifndef __KPATCH_PATCH__ -+#define __KPATCH_PATCH__ -+ -+#include "kpatch_common.h" -+#include "kpatch_storage.h" -+#include "kpatch_file.h" -+#include "rbtree.h" -+ -+enum { -+ ACTION_APPLY_PATCH, -+ ACTION_UNAPPLY_PATCH -+}; -+ -+struct patch_data { -+ kpatch_storage_t *storage; -+ int is_just_started; -+ int send_fd; -+}; -+ -+struct unpatch_data { -+ char **buildids; -+ int nbuildids; -+}; -+ -+int process_patch(int pid, void *_data); -+int process_unpatch(int pid, void *_data); -+ -+#endif -diff --git a/src/kpatch_user.c b/src/kpatch_user.c -index 672b4d4..9ab77b9 100644 ---- a/src/kpatch_user.c -+++ b/src/kpatch_user.c -@@ -7,9 +7,6 @@ - #include - #include - #include --#include --#include --#include - #include - #include - #include -@@ -20,11 +17,11 @@ - - #include "kpatch_user.h" - #include "kpatch_storage.h" -+#include "kpatch_patch.h" - #include "kpatch_process.h" - #include "kpatch_file.h" - #include "kpatch_common.h" - #include "kpatch_elf.h" --#include "kpatch_ptrace.h" - #include "list.h" - #include "kpatch_log.h" - -@@ -42,571 +39,6 @@ typedef int (callback_t)(int pid, void *data); - static int - processes_do(int pid, callback_t callback, void *data); - --enum { -- ACTION_APPLY_PATCH, -- ACTION_UNAPPLY_PATCH --}; -- --static inline int --is_addr_in_info(unsigned long addr, -- struct kpatch_info *info, -- int direction) --{ --#define IS_ADDR_IN_HALF_INTERVAL(addr, start, len) ((addr >= start) && (addr < start + len)) -- if (direction == ACTION_APPLY_PATCH) -- return IS_ADDR_IN_HALF_INTERVAL(addr, info->daddr, info->dlen); -- if (direction == ACTION_UNAPPLY_PATCH) -- return IS_ADDR_IN_HALF_INTERVAL(addr, info->saddr, info->slen); -- return 0; --} -- --static void print_address_closest_func(int log_level, struct object_file *o, unw_cursor_t *cur, int in_oldpatch) --{ -- unsigned long address, offset; -- char fname[128]; -- -- unw_get_reg(cur, UNW_REG_IP, &address); -- -- if (in_oldpatch) -- if (address >= o->kpta && address < o->kpta + o->kpfile.size) { -- kplog(log_level, "\t[0x%lx](patch)\n", address); -- return; -- } -- -- if (!unw_get_proc_name(cur, fname, 128, &offset)) -- kplog(log_level, "\t[0x%lx] %s+0x%lx\n", address, fname, offset); -- else -- kplog(log_level, "\t[0x%lx]\n", address); --} -- --/** -- * Verify that the function from file `o' is safe to be patched. -- * -- * If retip is given then the safe address is returned in it. -- * What is considered a safe address depends on the `paranoid' value. When it -- * is true, safe address is the upper of ALL functions that do have a patch. -- * When it is false, safe address is the address of the first function -- * instruction that have no patch. -- * -- * That is, for the call chain from left to right with functions that have -- * patch marked with '+': -- * -- * foo -> bar+ -> baz -> qux+ -- * -- * With `paranoid=true' this function will return address of the `bar+' -- * instruction being executed with *retip pointing to the `foo' instruction -- * that comes after the call to `bar+'. With `paranoid=false' this function -- * will return address of the `qux+' instruction being executed with *retip -- * pointing to the `baz' instruction that comes after call to `qux+'. -- */ --static unsigned long --object_patch_verify_safety_single(struct object_file *o, -- unw_cursor_t *cur, -- unsigned long *retip, -- int paranoid, -- int direction) --{ -- unw_word_t ip; -- struct kpatch_info *info = o->info; -- size_t i, ninfo = o->ninfo; -- int prev = 0, rv; -- unsigned long last = 0; -- -- if (direction != ACTION_APPLY_PATCH && -- direction != ACTION_UNAPPLY_PATCH) -- kpfatal("unknown direction"); -- -- do { -- print_address_closest_func(LOG_INFO, o, cur, direction == ACTION_UNAPPLY_PATCH); -- -- unw_get_reg(cur, UNW_REG_IP, &ip); -- -- for (i = 0; i < ninfo; i++) { -- if (is_new_func(&info[i])) -- continue; -- -- if (is_addr_in_info((long)ip, &info[i], direction)) { -- if (direction == ACTION_APPLY_PATCH) -- last = info[i].daddr; -- else if (direction == ACTION_UNAPPLY_PATCH) -- last = info[i].saddr; -- prev = 1; -- break; -- } -- } -- -- if (prev && i == ninfo) { -- prev = 0; -- if (retip) -- *retip = ip; -- if (!paranoid) -- break; -- } -- -- rv = unw_step(cur); -- } while (rv > 0); -- -- if (rv < 0) -- kperr("unw_step = %d\n", rv); -- -- return last; --} -- --#define KPATCH_CORO_STACK_UNSAFE (1 << 20) -- --static int --patch_verify_safety(struct object_file *o, -- unsigned long *retips, -- int direction) --{ -- size_t nr = 0, failed = 0, count = 0; -- struct kpatch_ptrace_ctx *p; -- struct kpatch_coro *c; -- unsigned long retip, ret; -- unw_cursor_t cur; -- -- list_for_each_entry(c, &o->proc->coro.coros, list) { -- void *ucoro; -- -- kpdebug("Verifying safety for coroutine %zd...\n", count); -- kpinfo("Stacktrace to verify safety for coroutine %zd:\n", count); -- ucoro = _UCORO_create(c, proc2pctx(o->proc)->pid); -- if (!ucoro) { -- kplogerror("can't create unwind coro context\n"); -- return -1; -- } -- -- ret = unw_init_remote(&cur, o->proc->coro.unwd, ucoro); -- if (ret) { -- kplogerror("can't create unwind remote context\n"); -- _UCORO_destroy(ucoro); -- return -1; -- } -- -- ret = object_patch_verify_safety_single(o, &cur, NULL, 0, direction); -- _UCORO_destroy(ucoro); -- if (ret) { -- kperr("safety check failed to %lx\n", ret); -- failed++; -- } else { -- kpdebug("OK\n"); -- } -- count++; -- } -- if (failed) -- return failed | KPATCH_CORO_STACK_UNSAFE; -- -- list_for_each_entry(p, &o->proc->ptrace.pctxs, list) { -- void *upt; -- -- kpdebug("Verifying safety for pid %d...\n", p->pid); -- kpinfo("Stacktrace to verify safety for pid %d:\n", p->pid); -- upt = _UPT_create(p->pid); -- if (!upt) { -- kplogerror("can't create unwind ptrace context\n"); -- return -1; -- } -- -- ret = unw_init_remote(&cur, o->proc->ptrace.unwd, upt); -- if (ret) { -- kplogerror("can't create unwind remote context\n"); -- _UPT_destroy(upt); -- return -1; -- } -- -- ret = object_patch_verify_safety_single(o, &cur, &retip, 0, direction); -- _UPT_destroy(upt); -- if (ret) { -- /* TODO: dump full backtrace, with symbols where possible (shared libs) */ -- if (retips) { -- kperr("safety check failed for %lx, will continue until %lx\n", -- ret, retip); -- retips[nr] = retip; -- } else { -- kperr("safety check failed for %lx\n", ret); -- errno = -EBUSY; -- } -- failed++; -- } -- kpdebug("OK\n"); -- nr++; -- } -- -- return failed; --} -- --/* -- * Ensure that it is safe to apply/unapply patch for the object file `o`. -- * -- * First, we verify the safety of the patch. -- * -- * It is safe to apply patch (ACTION_APPLY_PATCH) when no threads or coroutines -- * are executing the functions to be patched. -- * -- * It is safe to unapply patch (ACTION_UNAPPLY_PATCH) when no threads or -- * coroutines are executing the patched functions. -- * -- * If it is not safe to do the action we continue threads execution until they -- * are out of the functions that we want to patch/unpatch. This is done using -- * `kpatch_ptrace_execute_until` function with default timeout of 3000 seconds -- * and checking for action safety again. -- */ --static int --patch_ensure_safety(struct object_file *o, -- int action) --{ -- struct kpatch_ptrace_ctx *p; -- unsigned long ret, *retips; -- size_t nr = 0, i; -- -- list_for_each_entry(p, &o->proc->ptrace.pctxs, list) -- nr++; -- retips = malloc(nr * sizeof(unsigned long)); -- if (retips == NULL) -- return -1; -- -- memset(retips, 0, nr * sizeof(unsigned long)); -- -- ret = patch_verify_safety(o, retips, action); -- /* -- * For coroutines we can't "execute until" -- */ -- if (ret && !(ret & KPATCH_CORO_STACK_UNSAFE)) { -- i = 0; -- list_for_each_entry(p, &o->proc->ptrace.pctxs, list) { -- p->execute_until = retips[i]; -- i++; -- } -- -- ret = kpatch_ptrace_execute_until(o->proc, 3000, 0); -- -- /* OK, at this point we may have new threads, discover them */ -- if (ret == 0) -- ret = kpatch_process_attach(o->proc); -- if (ret == 0) -- ret = patch_verify_safety(o, NULL, action); -- } -- -- free(retips); -- -- return ret ? -1 : 0; --} -- --/***************************************************************************** -- * Patch application subroutines and cmd_patch_user -- ****************************************************************************/ --/* -- * This flag is local, i.e. it is never stored to the -- * patch applied to patient's memory. -- */ --#define PATCH_APPLIED (1 << 31) -- --#define HUNK_SIZE 5 -- --static int --patch_apply_hunk(struct object_file *o, size_t nhunk) --{ -- int ret; -- char code[HUNK_SIZE] = {0xe9, 0x00, 0x00, 0x00, 0x00}; /* jmp IMM */ -- struct kpatch_info *info = &o->info[nhunk]; -- unsigned long pundo; -- -- if (is_new_func(info)) -- return 0; -- -- pundo = o->kpta + o->kpfile.patch->user_undo + nhunk * HUNK_SIZE; -- kpinfo("%s origcode from 0x%lx+0x%x to 0x%lx\n", -- o->name, info->daddr, HUNK_SIZE, pundo); -- ret = kpatch_process_memcpy(o->proc, pundo, -- info->daddr, HUNK_SIZE); -- if (ret < 0) -- return ret; -- -- kpinfo("%s hunk 0x%lx+0x%x -> 0x%lx+0x%x\n", -- o->name, info->daddr, info->dlen, info->saddr, info->slen); -- *(unsigned int *)(code + 1) = (unsigned int)(info->saddr - info->daddr - 5); -- ret = kpatch_process_mem_write(o->proc, -- code, -- info->daddr, -- sizeof(code)); -- /* -- * NOTE(pboldin): This is only stored locally, as information have -- * been copied to patient's memory already. -- */ -- info->flags |= PATCH_APPLIED; -- return ret ? -1 : 0; --} -- --static int --duplicate_kp_file(struct object_file *o) --{ -- struct kpatch_file *patch; -- -- patch = malloc(o->skpfile->size); -- if (patch == NULL) -- return -1; -- -- memcpy(patch, o->skpfile->patch, o->skpfile->size); -- o->kpfile.patch = patch; -- o->kpfile.size = o->skpfile->size; -- -- return 0; --} -- --static int --object_apply_patch(struct object_file *o) --{ -- struct kpatch_file *kp; -- size_t sz, i; -- int undef, ret; -- -- if (o->skpfile == NULL || o->is_patch) -- return 0; -- -- if (o->applied_patch) { -- kpinfo("Object '%s' already have a patch, not patching\n", -- o->name); -- return 0; -- } -- -- ret = duplicate_kp_file(o); -- if (ret < 0) { -- kplogerror("can't duplicate kp_file\n"); -- return -1; -- } -- -- ret = kpatch_elf_load_kpatch_info(o); -- if (ret < 0) -- return ret; -- -- kp = o->kpfile.patch; -- -- sz = ROUND_UP(kp->total_size, 8); -- undef = kpatch_count_undefined(o); -- if (undef) { -- o->jmp_table = kpatch_new_jmp_table(undef); -- kp->jmp_offset = sz; -- kpinfo("Jump table %d bytes for %d syms at offset 0x%x\n", -- o->jmp_table->size, undef, kp->jmp_offset); -- sz = ROUND_UP(sz + o->jmp_table->size, 128); -- } -- -- kp->user_info = (unsigned long)o->info - -- (unsigned long)o->kpfile.patch; -- kp->user_undo = sz; -- sz = ROUND_UP(sz + HUNK_SIZE * o->ninfo, 16); -- -- sz = ROUND_UP(sz, 4096); -- -- /* -- * Map patch as close to the original code as possible. -- * Otherwise we can't use 32-bit jumps. -- */ -- ret = kpatch_object_allocate_patch(o, sz); -- if (ret < 0) -- return ret; -- ret = kpatch_resolve(o); -- if (ret < 0) -- return ret; -- ret = kpatch_relocate(o); -- if (ret < 0) -- return ret; -- ret = kpatch_process_mem_write(o->proc, -- kp, -- o->kpta, -- kp->total_size); -- if (ret < 0) -- return -1; -- if (o->jmp_table) { -- ret = kpatch_process_mem_write(o->proc, -- o->jmp_table, -- o->kpta + kp->jmp_offset, -- o->jmp_table->size); -- if (ret < 0) -- return ret; -- } -- -- ret = patch_ensure_safety(o, ACTION_APPLY_PATCH); -- if (ret < 0) -- return ret; -- -- for (i = 0; i < o->ninfo; i++) { -- ret = patch_apply_hunk(o, i); -- if (ret < 0) -- return ret; -- } -- -- return 1; --} -- --static int --object_unapply_patch(struct object_file *o, int check_flag); -- --static int --object_unapply_old_patch(struct object_file *o) --{ -- struct kpatch_file *kpatch_applied, *kpatch_storage; -- int ret; -- -- if (o->skpfile == NULL || o->is_patch || o->applied_patch == NULL) -- return 0; -- -- kpatch_applied = o->applied_patch->kpfile.patch; -- kpatch_storage = o->skpfile->patch; -- -- if (kpatch_applied->user_level >= kpatch_storage->user_level) { -- kpinfo("'%s' applied patch level is %d (storage has %d\n)\n", -- o->name, -- kpatch_applied->user_level, -- kpatch_storage->user_level); -- return 1; -- } -- -- printf("%s: replacing patch level %d with level %d\n", -- o->name, -- kpatch_applied->user_level, -- kpatch_storage->user_level); -- ret = object_unapply_patch(o, /* check_flag */ 0); -- if (ret < 0) -- kperr("can't unapply patch for %s\n", o->name); -- else { -- /* TODO(pboldin): handle joining the holes here */ -- o->applied_patch = NULL; -- o->info = NULL; -- o->ninfo = 0; -- } -- -- return ret; --} -- --static int --kpatch_apply_patches(kpatch_process_t *proc) --{ -- struct object_file *o; -- int applied = 0, ret; -- -- list_for_each_entry(o, &proc->objs, list) { -- -- ret = object_unapply_old_patch(o); -- if (ret < 0) -- break; -- -- ret = object_apply_patch(o); -- if (ret < 0) -- goto unpatch; -- if (ret) -- applied++; -- } -- return applied; -- --unpatch: -- kperr("Patching %s failed, unapplying partially applied patch\n", o->name); -- /* -- * TODO(pboldin): close the holes so the state is the same -- * after unpatch -- */ -- ret = object_unapply_patch(o, /* check_flag */ 1); -- if (ret < 0) { -- kperr("Can't unapply patch for %s\n", o->name); -- } -- return -1; --} -- --struct patch_data { -- kpatch_storage_t *storage; -- int is_just_started; -- int send_fd; --}; -- --static int process_patch(int pid, void *_data) --{ -- int ret; -- kpatch_process_t _proc, *proc = &_proc; -- struct patch_data *data = _data; -- -- kpatch_storage_t *storage = data->storage; -- int is_just_started = data->is_just_started; -- int send_fd = data->send_fd; -- -- ret = kpatch_process_init(proc, pid, is_just_started, send_fd); -- if (ret < 0) { -- kperr("cannot init process %d\n", pid); -- goto out; -- } -- -- kpatch_process_print_short(proc); -- -- ret = kpatch_process_mem_open(proc, MEM_READ); -- if (ret < 0) -- goto out_free; -- -- /* -- * In case the process was just started we continue execution up to the -- * entry point of a program just to allow ld.so to load up libraries -- */ -- ret = kpatch_process_load_libraries(proc); -- if (ret < 0) -- goto out_free; -- -- /* -- * In case we got there from startup send_fd != -1. -- */ -- ret = kpatch_process_kick_send_fd(proc); -- if (ret < 0) -- goto out_free; -- -- /* -- * For each object file that we want to patch (either binary itself or -- * shared library) we need its ELF structure to perform relocations. -- * Because we know uniq BuildID of the object the section addresses -- * stored in the patch are valid for the original object. -- */ -- ret = kpatch_process_map_object_files(proc); -- if (ret < 0) -- goto out_free; -- -- /* -- * Lookup for patches appicable for proc in storage. -- */ -- ret = storage_lookup_patches(storage, proc); -- if (ret <= 0) -- goto out_free; -- -- /* Finally, attach to process */ -- ret = kpatch_process_attach(proc); -- if (ret < 0) -- goto out_free; -- -- ret = kpatch_coroutines_find(proc); -- if (ret < 0) -- goto out_free; -- -- ret = storage_execute_before_script(storage, proc); -- if (ret < 0) -- goto out_free; -- -- ret = kpatch_apply_patches(proc); -- -- if (storage_execute_after_script(storage, proc) < 0) -- kperr("after script failed\n"); -- -- --out_free: -- kpatch_process_free(proc); -- --out: -- if (ret < 0) { -- printf("Failed to apply patch '%s'\n", storage->path); -- kperr("Failed to apply patch '%s'\n", storage->path); -- } else if (ret == 0) -- printf("No patch(es) applicable to PID '%d' have been found\n", pid); -- else { -- printf("%d patch hunk(s) have been successfully applied to PID '%d'\n", ret, pid); -- ret = 0; -- } -- -- return ret; --} - - static int - processes_patch(kpatch_storage_t *storage, -@@ -690,193 +122,6 @@ out_err: - return ret; - } - --/***************************************************************************** -- * Patch cancellcation subroutines and cmd_unpatch_user -- ****************************************************************************/ --static int --object_find_applied_patch_info(struct object_file *o) --{ -- struct kpatch_info tmpinfo; -- struct kpatch_info *remote_info; -- size_t nalloc = 0; -- struct process_mem_iter *iter; -- int ret; -- -- if (o->info != NULL) -- return 0; -- -- iter = kpatch_process_mem_iter_init(o->proc); -- if (iter == NULL) -- return -1; -- -- remote_info = (void *)o->kpta + o->kpfile.patch->user_info; -- do { -- ret = REMOTE_PEEK(iter, tmpinfo, remote_info); -- if (ret < 0) -- goto err; -- -- if (is_end_info(&tmpinfo)) -- break; -- -- if (o->ninfo == nalloc) { -- nalloc += 16; -- o->info = realloc(o->info, nalloc * sizeof(tmpinfo)); -- } -- -- o->info[o->ninfo] = tmpinfo; -- -- remote_info++; -- o->ninfo++; -- } while (1); -- -- o->applied_patch->info = o->info; -- o->applied_patch->ninfo = o->ninfo; -- --err: -- kpatch_process_mem_iter_free(iter); -- -- return ret; --} -- --static int --object_unapply_patch(struct object_file *o, int check_flag) --{ -- int ret; -- size_t i; -- unsigned long orig_code_addr; -- -- ret = object_find_applied_patch_info(o); -- if (ret < 0) -- return ret; -- -- ret = patch_ensure_safety(o, ACTION_UNAPPLY_PATCH); -- if (ret < 0) -- return ret; -- -- orig_code_addr = o->kpta + o->kpfile.patch->user_undo; -- -- for (i = 0; i < o->ninfo; i++) { -- if (is_new_func(&o->info[i])) -- continue; -- -- if (check_flag && !(o->info[i].flags & PATCH_APPLIED)) -- continue; -- -- ret = kpatch_process_memcpy(o->proc, -- o->info[i].daddr, -- orig_code_addr + i * HUNK_SIZE, -- HUNK_SIZE); -- /* XXX(pboldin) We are in deep trouble here, handle it -- * by restoring the patch back */ -- if (ret < 0) -- return ret; -- } -- -- ret = kpatch_munmap_remote(proc2pctx(o->proc), -- o->kpta, -- o->kpfile.size); -- -- return ret; --} -- --static int --kpatch_should_unapply_patch(struct object_file *o, -- char *buildids[], -- int nbuildids) --{ -- int i; -- const char *bid; -- -- if (nbuildids == 0) -- return 1; -- -- bid = kpatch_get_buildid(o); -- -- for (i = 0; i < nbuildids; i++) { -- if (!strcmp(bid, buildids[i]) || -- !strcmp(o->name, buildids[i])) -- return 1; -- } -- -- return 0; --} -- --static int --kpatch_unapply_patches(kpatch_process_t *proc, -- char *buildids[], -- int nbuildids) --{ -- struct object_file *o; -- int ret; -- size_t unapplied = 0; -- -- ret = kpatch_process_associate_patches(proc); -- if (ret < 0) -- return ret; -- -- list_for_each_entry(o, &proc->objs, list) { -- if (o->applied_patch == NULL) -- continue; -- -- if (!kpatch_should_unapply_patch(o, buildids, nbuildids)) -- continue; -- -- ret = object_unapply_patch(o, /* check_flag */ 0); -- if (ret < 0) -- return ret; -- unapplied++; -- } -- -- return unapplied; --} -- --struct unpatch_data { -- char **buildids; -- int nbuildids; --}; -- --static int --process_unpatch(int pid, void *_data) --{ -- int ret; -- kpatch_process_t _proc, *proc = &_proc; -- struct unpatch_data *data = _data; -- char **buildids = data->buildids; -- int nbuildids = data->nbuildids; -- -- ret = kpatch_process_init(proc, pid, /* start */ 0, /* send_fd */ -1); -- if (ret < 0) -- return -1; -- -- kpatch_process_print_short(proc); -- -- ret = kpatch_process_attach(proc); -- if (ret < 0) -- goto out; -- -- ret = kpatch_process_map_object_files(proc); -- if (ret < 0) -- goto out; -- -- ret = kpatch_coroutines_find(proc); -- if (ret < 0) -- goto out; -- -- ret = kpatch_unapply_patches(proc, buildids, nbuildids); -- --out: -- kpatch_process_free(proc); -- -- if (ret < 0) -- printf("Failed to cancel patches for %d\n", pid); -- else if (ret == 0) -- printf("No patch(es) cancellable from PID '%d' were found\n", pid); -- else -- printf("%d patch hunk(s) were successfully cancelled from PID '%d'\n", ret, pid); -- -- return ret; --} -- - static int - processes_unpatch(int pid, char *buildids[], int nbuildids) - { --- -2.23.0 - diff --git a/0003-cmd_patch-pass-arguments-directly.patch b/0003-cmd_patch-pass-arguments-directly.patch deleted file mode 100644 index 7283818..0000000 --- a/0003-cmd_patch-pass-arguments-directly.patch +++ /dev/null @@ -1,152 +0,0 @@ -From 98833d06737a9a1128f548d15344b1cbaeed049f Mon Sep 17 00:00:00 2001 -From: Pavel Boldin -Date: Wed, 24 Jan 2018 13:14:10 +0200 -Subject: [PATCH 03/89] cmd_patch: pass arguments directly - -Signed-off-by: Pavel Boldin ---- - src/kpatch_user.c | 84 ++++++++++++++++------------------------------- - 1 file changed, 29 insertions(+), 55 deletions(-) - -diff --git a/src/kpatch_user.c b/src/kpatch_user.c -index 9ab77b9..d257b67 100644 ---- a/src/kpatch_user.c -+++ b/src/kpatch_user.c -@@ -63,19 +63,36 @@ static int usage_patch(const char *err) - { - if (err) - fprintf(stderr, "err: %s\n", err); -- fprintf(stderr, "usage: libcare-ctl patch [options] <-p PID> <-r fd> \n"); -+ fprintf(stderr, "usage: libcare-ctl patch [options] <-p PID> \n"); - fprintf(stderr, "\nOptions:\n"); - fprintf(stderr, " -h - this message\n"); -- fprintf(stderr, " -s - process was just executed\n"); - fprintf(stderr, " -p - target process\n"); -- fprintf(stderr, " -r fd - fd used with LD_PRELOAD=execve.so.\n"); - return err ? 0 : -1; - } - --int cmd_patch_user(int argc, char *argv[]) -+static int -+patch_user(const char *storage_path, int pid, -+ int is_just_started, int send_fd) - { -+ int ret; - kpatch_storage_t storage; -- int opt, pid = -1, is_pid_set = 0, ret, start = 0, send_fd = -1; -+ -+ ret = storage_init(&storage, storage_path); -+ if (ret < 0) -+ return ret; -+ -+ ret = processes_patch(&storage, pid, is_just_started, send_fd); -+ -+ storage_free(&storage); -+ -+ return ret; -+} -+ -+ -+int cmd_patch_user(int argc, char *argv[]) -+{ -+ int opt, pid = -1, is_pid_set = 0, ret; -+ const char *storage_path; - - if (argc < 4) - return usage_patch(NULL); -@@ -89,12 +106,6 @@ int cmd_patch_user(int argc, char *argv[]) - pid = atoi(optarg); - is_pid_set = 1; - break; -- case 'r': -- send_fd = atoi(optarg); -- break; -- case 's': -- start = 1; -- break; - default: - return usage_patch("unknown option"); - } -@@ -109,14 +120,9 @@ int cmd_patch_user(int argc, char *argv[]) - if (!kpatch_check_system()) - goto out_err; - -- ret = storage_init(&storage, argv[argc - 1]); -- if (ret < 0) -- goto out_err; -- -- -- ret = processes_patch(&storage, pid, start, send_fd); -- -- storage_free(&storage); -+ storage_path = argv[argc - 1]; -+ ret = patch_user(storage_path, pid, -+ /* is_just_started */ 0, /* send_fd */ -1); - - out_err: - return ret; -@@ -474,24 +480,6 @@ static int - cmd_execve_startup(int fd, int argc, char *argv[], int is_just_started) - { - int rv, pid; -- char pid_str[64], send_fd_str[64]; -- char *patch_pid_argv_execve[] = { -- "patch", -- "-s", -- "-p", -- pid_str, -- "-r", -- send_fd_str, -- storage_dir -- }; -- char *patch_pid_argv_startup[] = { -- "patch", -- "-p", -- pid_str, -- "-r", -- send_fd_str, -- storage_dir -- }; - - rv = sscanf(argv[1], "%d", &pid); - if (rv != 1) { -@@ -499,16 +487,8 @@ cmd_execve_startup(int fd, int argc, char *argv[], int is_just_started) - return -1; - } - -- sprintf(pid_str, "%d", pid); -- sprintf(send_fd_str, "%d", fd); -- - optind = 1; -- if (is_just_started) -- rv = cmd_patch_user(ARRAY_SIZE(patch_pid_argv_execve), -- patch_pid_argv_execve); -- else -- rv = cmd_patch_user(ARRAY_SIZE(patch_pid_argv_startup), -- patch_pid_argv_startup); -+ rv = patch_user(storage_dir, pid, is_just_started, fd); - - if (rv < 0) - kperr("can't patch pid %d\n", pid); -@@ -578,15 +558,9 @@ cmd_storage(int argc, char *argv[]) - static int - cmd_update(int argc, char *argv[]) - { -- char *patch_all[] = { -- "patch", -- "-p", -- "all", -- storage_dir -- }; -- -- optind = 1; -- return cmd_patch_user(ARRAY_SIZE(patch_all), patch_all); -+ return patch_user(storage_dir, /* pid */ -1, -+ /* is_just_started */ 0, -+ /* send_fd */ -1); - } - - static int --- -2.23.0 - diff --git a/0004-travis-use-VM-for-now.patch b/0004-travis-use-VM-for-now.patch deleted file mode 100644 index c286c1d..0000000 --- a/0004-travis-use-VM-for-now.patch +++ /dev/null @@ -1,71 +0,0 @@ -From f4b6b37575e514f3e54f08166dc14e35815a8ebb Mon Sep 17 00:00:00 2001 -From: Pavel Boldin -Date: Tue, 30 Jan 2018 08:15:11 +0200 -Subject: [PATCH 04/89] travis: use VM for now - -Attaching even to a children process is broken in travis's Docker. -Use VM until https://github.com/travis-ci/travis-ci/issues/9033 -is fixed. - -Signed-off-by: Pavel Boldin ---- - .travis.yml | 2 +- - Makefile | 2 +- - tests/run_tests.sh | 18 +++++++++++++++++- - 3 files changed, 19 insertions(+), 3 deletions(-) - -diff --git a/.travis.yml b/.travis.yml -index 4bb2614..f3ccb4e 100644 ---- a/.travis.yml -+++ b/.travis.yml -@@ -3,7 +3,7 @@ script: make tests - language: c - - dist: trusty --sudo: false -+sudo: required - - addons: - apt: -diff --git a/Makefile b/Makefile -index 2da227f..c5a2837 100644 ---- a/Makefile -+++ b/Makefile -@@ -1,4 +1,4 @@ -- -+#dummy - - all: src - -diff --git a/tests/run_tests.sh b/tests/run_tests.sh -index fcfcd56..fbfb273 100755 ---- a/tests/run_tests.sh -+++ b/tests/run_tests.sh -@@ -3,7 +3,23 @@ - set -e - - wait_file() { -- while ! test -s $1; do sleep ${2-1}; done -+ local file="$1" -+ local pause="${2-1}" -+ local i=0 -+ local timeout=60 -+ -+ while test $i -lt $timeout; do -+ if test -s $file; then -+ break -+ fi -+ sleep $pause -+ i=$((i + 1)) -+ done -+ -+ if test $i -eq $timeout; then -+ return 1 -+ fi -+ - return 0 - } - --- -2.23.0 - diff --git a/0005-scripts-pkgbuild-add-prepare_env-hook.patch b/0005-scripts-pkgbuild-add-prepare_env-hook.patch deleted file mode 100644 index cf607af..0000000 --- a/0005-scripts-pkgbuild-add-prepare_env-hook.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 8e1d1d24e39464e88e92695ea5951639e789f72d Mon Sep 17 00:00:00 2001 -From: Pavel Boldin -Date: Sat, 28 Oct 2017 03:47:48 +0300 -Subject: [PATCH 05/89] scripts/pkgbuild: add prepare_env hook - -Change-Id: Iabb96a1b9f9cd8d1415029380f825da29156a840 -Signed-off-by: Pavel Boldin ---- - scripts/pkgbuild | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/scripts/pkgbuild b/scripts/pkgbuild -index ea1f411..3697594 100755 ---- a/scripts/pkgbuild -+++ b/scripts/pkgbuild -@@ -73,6 +73,11 @@ clean_dirs() { - rm -rf $KP_PROJECT_BUILD_ROOT /root/root.original /root/root.patched - } - -+kp_prepare_env_hook() { -+ # use this to add repos -+ : -+} -+ - kp_pack_prebuilt() { - echo " packing prebuilt $KP_PROJECT into $KP_PROJECT_PREBUILT" - pushd $KP_PROJECT_BUILD_ROOT -@@ -386,6 +391,8 @@ main() { - - overwrite_utils - -+ kp_prepare_env_hook -+ - if [ "$ACTION" == "prebuild" ]; then - kp_prepare_source - kp_prebuild_hook --- -2.23.0 - diff --git a/0006-pkgbuild-fix-for-non-root-rpmbuild-built-root.patch b/0006-pkgbuild-fix-for-non-root-rpmbuild-built-root.patch deleted file mode 100644 index 3d93ea1..0000000 --- a/0006-pkgbuild-fix-for-non-root-rpmbuild-built-root.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 859be3502b57c87f3241c11d36059313cbdde46a Mon Sep 17 00:00:00 2001 -From: Pavel Boldin -Date: Tue, 31 Oct 2017 04:04:58 +0100 -Subject: [PATCH 06/89] pkgbuild: fix for non-/root/rpmbuild built root - ---- - scripts/pkgbuild | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/scripts/pkgbuild b/scripts/pkgbuild -index 3697594..e2ac7c7 100755 ---- a/scripts/pkgbuild -+++ b/scripts/pkgbuild -@@ -120,7 +120,8 @@ kp_prepare_source_rpm() { - - sed -i 's/.rpm$//g' $KP_PROJECT_BUILD_ROOT/dependencies.txt - -- rpm -ivh /kcdata/$KP_PROJECT_SOURCE -+ rpm -ivh /kcdata/$KP_PROJECT_SOURCE \ -+ --define "_topdir $KP_PROJECT_BUILD_ROOT" - } - - kp_prepare_source_deb() { -@@ -152,6 +153,7 @@ kp_prebuild_rpm() { - eval rpmbuild --nocheck --noclean \ - -bc \ - $KP_RPMBUILD_FLAGS \ -+ '--define "_topdir $KP_PROJECT_BUILD_ROOT"' \ - $KP_PROJECT_BUILD_ROOT/SPECS/$KP_PROJECT_SPEC 2>&1 | \ - tee $KP_PROJECT_BUILD_ROOT/prebuild.log - } -@@ -237,6 +239,7 @@ kp_build_rpm() { - --short-circuit \ - -bc \ - $KP_RPMBUILD_FLAGS \ -+ '--define "_topdir $KP_PROJECT_BUILD_ROOT"' \ - $KP_PROJECT_BUILD_ROOT/SPECS/$KP_PROJECT_SPEC - } - --- -2.23.0 - diff --git a/0007-Toil-package-builder.patch b/0007-Toil-package-builder.patch deleted file mode 100644 index df51f15..0000000 --- a/0007-Toil-package-builder.patch +++ /dev/null @@ -1,1327 +0,0 @@ -From 2d1416fc62016533e159f27352f17a7d97f022b1 Mon Sep 17 00:00:00 2001 -From: Pavel Boldin -Date: Fri, 13 Oct 2017 11:52:32 +0300 -Subject: [PATCH 07/89] Toil package builder - -Introduce a toil[1]-based workflow to automate patch building for -a package. - -[1] https://toil.readthedocs.io/ - -Change-Id: I7e3a11ad95781b8989d24fbf3992dcb49e4c8dba -Signed-off-by: Pavel Boldin ---- - packages/rhel7/glibc/glibc-2.17-55.el7/info | 23 +- - .../glibc/glibc-2.17-55.el7/pkgfile.yaml | 5 + - scripts/pkgbuild | 28 +- - scripts/toil/README.md | 1 + - scripts/toil/build-patch.sh | 18 + - scripts/toil/pkgbuild.py | 894 ++++++++++++++++++ - scripts/toil/requirements.txt | 4 + - scripts/toil/tests_pkgbuild.py | 218 +++++ - 8 files changed, 1175 insertions(+), 16 deletions(-) - create mode 100644 packages/rhel7/glibc/glibc-2.17-55.el7/pkgfile.yaml - create mode 100644 scripts/toil/README.md - create mode 100755 scripts/toil/build-patch.sh - create mode 100755 scripts/toil/pkgbuild.py - create mode 100644 scripts/toil/requirements.txt - create mode 100644 scripts/toil/tests_pkgbuild.py - -diff --git a/packages/rhel7/glibc/glibc-2.17-55.el7/info b/packages/rhel7/glibc/glibc-2.17-55.el7/info -index 9b13a12..8cebabb 100644 ---- a/packages/rhel7/glibc/glibc-2.17-55.el7/info -+++ b/packages/rhel7/glibc/glibc-2.17-55.el7/info -@@ -72,7 +72,16 @@ _install_originals() { - } - - _run_tests() { -- export LD_PRELOAD=/libcare/tests/execve/execve.so -+ if test -f $LIBCARE_DIR/execve/execve.so; then -+ LD_PRELOAD=$LIBCARE_DIR/execve/execve.so -+ elif test -f $LIBCARE_DIR/tests/execve/execve.so; then -+ LD_PRELOAD=$LIBCARE_DIR/tests/execve/execve.so -+ else -+ echo "Can't find execve.so required to run tests" -+ exit 1 -+ fi -+ -+ export LD_PRELOAD - - local ld_linux="$KP_PROJECT_BUILD_DIR/elf/ld*" - -@@ -110,9 +119,11 @@ kp_patch_test() { - rm -f /var/run/libcare.sock - - PATCH_ROOT=/root/${KP_PROJECT_PATCH%.*} -- /libcare/src/libcare-ctl -v server /var/run/libcare.sock $PATCH_ROOT \ -- >/root/test.log 2>&1 & : -+ $KPATCH_PATH/libcare-ctl -v server /var/run/libcare.sock $PATCH_ROOT \ -+ >/data/test.log 2>&1 & : - LISTENER_PID=$! -+ sleep 1 -+ kill -0 $LISTENER_PID - - pushd $KP_PROJECT_BUILD_DIR - -@@ -123,11 +134,11 @@ kp_patch_test() { - - popd - -- local patched=$(awk '/kpatch_ctl targeting/ { n++ } END { print n }' /root/test.log) -+ local patched=$(awk '/kpatch_ctl targeting/ { n++ } END { print n }' /data/test.log) - - test $patched -ge $executed - -- grep -vq 'No patch(es) applicable to' /root/test.log -- grep 'patch hunk(s) have been successfully applied' /root/test.log \ -+ grep -vq 'No patch(es) applicable to' /data/test.log -+ grep 'patch hunk(s) have been successfully applied' /data/test.log \ - | wc -l - } -diff --git a/packages/rhel7/glibc/glibc-2.17-55.el7/pkgfile.yaml b/packages/rhel7/glibc/glibc-2.17-55.el7/pkgfile.yaml -new file mode 100644 -index 0000000..51028ed ---- /dev/null -+++ b/packages/rhel7/glibc/glibc-2.17-55.el7/pkgfile.yaml -@@ -0,0 +1,5 @@ -+image: kernelcare/centos7:gcc-4.8.2-16.el7 -+prebuild: /tmp/build.orig-glibc-2.17-55.el7.x86_64.rpm.tgz -+input: -+- package: . -+- patches: ../../../../patches/ -diff --git a/scripts/pkgbuild b/scripts/pkgbuild -index e2ac7c7..8803db3 100755 ---- a/scripts/pkgbuild -+++ b/scripts/pkgbuild -@@ -54,8 +54,9 @@ prepare() { - - # Export env vars that are needed during the build - SCRIPTS="$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)" -- SPWD="$(realpath $SCRIPTS/../)" -- export KPATCH_PATH=$SPWD/src -+ LIBCARE_DIR="${LIBCARE_DIR:-$SCRIPTS/..}" -+ KPATCH_PATH="${KPATCH_PATH:-$LIBCARE_DIR/src}" -+ export LIBCARE_DIR KPATCH_PATH - export OLDPATH=$PATH - export KPATCH_PASSTHROUGH_ASM=1 - CPUS=`cat /proc/cpuinfo | grep ^processor | wc -l` -@@ -130,18 +131,20 @@ kp_prepare_source_deb() { - } - - kp_prepare_source() { -- echo " downloading source for $KP_PROJECT" -- kp_download_source_$KP_PROJECT_FORMAT -+ if ! test -f /kcdata/$KP_PROJECT_SOURCE; then -+ echo " downloading source for $KP_PROJECT" -+ kp_download_source_$KP_PROJECT_FORMAT -+ fi - echo " preparing source for $KP_PROJECT" - kp_prepare_source_$KP_PROJECT_FORMAT - } - - kp_patch_source() { - echo " patching project" -- PATCH_DIR=$SPWD/patches -+ PATCH_DIR=$LIBCARE_DIR/patches - #patch_list_apply requires this dir - mkdir -p /tmp/build.kpatch -- $SPWD/scripts/patch_list_apply $KP_PROJECT_DIR $PDIR/plist $PATCH_DIR -+ $SCRIPTS/patch_list_apply $KP_PROJECT_DIR $PDIR/plist $PATCH_DIR - } - - kp_prebuild_rpm() { -@@ -364,10 +367,10 @@ overwrite_utils() { - TMPBIN=$(mktemp -d --tmpdir) - - mkdir $TMPBIN/bin -- ln -fs /libcare/src/libcare-cc $TMPBIN/gcc -- ln -fs /libcare/src/libcare-cc $TMPBIN/cc -- ln -fs /libcare/src/libcare-cc $TMPBIN/g++ -- ln -fs /libcare/src/libcare-cc $TMPBIN/c++ -+ ln -fs $KPATCH_PATH/libcare-cc $TMPBIN/gcc -+ ln -fs $KPATCH_PATH/libcare-cc $TMPBIN/cc -+ ln -fs $KPATCH_PATH/libcare-cc $TMPBIN/g++ -+ ln -fs $KPATCH_PATH/libcare-cc $TMPBIN/c++ - if ! test -x /usr/bin/g++; then - rm -f $TMPBIN/g++ - fi -@@ -379,6 +382,11 @@ overwrite_utils() { - fi - - export PATH=$TMPBIN:$PATH -+ -+ if test "$(command -v cc)" != "$TMPBIN/cc"; then -+ echo "Can't install our wrappers, missing?" -+ exit 1 -+ fi - } - - kp_patch_test() { -diff --git a/scripts/toil/README.md b/scripts/toil/README.md -new file mode 100644 -index 0000000..5bc77b6 ---- /dev/null -+++ b/scripts/toil/README.md -@@ -0,0 +1 @@ -+This is where [toil](https://toil.readthedocs.io/)-based scripts do live. -diff --git a/scripts/toil/build-patch.sh b/scripts/toil/build-patch.sh -new file mode 100755 -index 0000000..0e12de4 ---- /dev/null -+++ b/scripts/toil/build-patch.sh -@@ -0,0 +1,18 @@ -+#!/bin/sh -e -+ -+exec 1>&2 -+ -+ln -fs /data /kcdata -+ -+ls -lR /data -+ -+yum install -y rpm-build -+ -+LIBCARE_DIR="/data" -+KPATCH_PATH="/data/src" -+export LIBCARE_DIR KPATCH_PATH -+make -C $KPATCH_PATH clean all -+make -C /data/execve clean all -+ -+/kcdata/scripts/pkgbuild $@ /kcdata/package -+ls /kcdata -lR -diff --git a/scripts/toil/pkgbuild.py b/scripts/toil/pkgbuild.py -new file mode 100755 -index 0000000..c4b009a ---- /dev/null -+++ b/scripts/toil/pkgbuild.py -@@ -0,0 +1,894 @@ -+#!/usr/bin/python -+""" -+Build package patches for libcare using toil[1] workflow framework. -+The basic components are the following: -+ -+#. `Storage` class that works like a filesystem directory. Changes made to it -+ are passed down the chain to all the jobs via `Promise` mechanism. The -+ `Storage` class is also responsible for importing and exporting local files. -+ -+#. `FileFetcherJob` job that downloads specified files from the net and puts them in -+ the storage. Supported are AWS S3, HTTP and FTP files. This is usually the -+ first job. -+ -+#. `DoBuild` checks presence of the object in the Storage and runs -+ `prebuildJob` chained with `uploadJob` and `buildJob` if the object is missing. -+ Only `buildJob` is run otherwise. -+ -+ This is used to build missing parts such as an archive with the baseline -+ source code called `prebuilt` which is listed as optional for the -+ `FileFetcherJob` job. -+ -+#. `DockerScriptJob` that brings up a Docker container from the specified image -+ and runs the Storage-suplied script with Storage content exposed into the -+ `/data` directory. -+ -+#. `UploadJob` that uploads specified objects from the Storage. -+ -+#. `DoIfMissing` checks presence of the object in the Storage and runs -+ specified job if it is missing. -+ -+#. `ChainJobs` is used to chain the jobs at the runtime. -+ -+ -+ -+All the updates to the Storage are carried from the children to the followOns -+via `Promise` mechanism. The root job returns Storage from the last followOn, -+this storage is then exported to a directory. -+ -+[1] https://toil.readthedocs.io/ -+""" -+ -+from __future__ import print_function -+ -+import boto3 -+import contextlib -+import collections -+import datetime -+import dateutil -+import errno -+import logging -+import os -+import requests -+import shutil -+import tarfile -+import tempfile -+import time -+import urlparse -+import yaml -+ -+from toil.common import Toil -+from toil.job import Job as toilJob -+from toil.lib.docker import dockerCall, dockerCheckOutput, STOP, RM, FORGO -+ -+ -+def myabspath(path_or_url, root=None): -+ """Return absolute path for an url or path.""" -+ if '://' not in path_or_url or path_or_url.startswith('file://'): -+ path_or_url = path_or_url.replace('file://', '') -+ if (path_or_url[0] == '.' or '/' not in path_or_url) and root: -+ path_or_url = os.path.join(root, path_or_url) -+ path_or_url = os.path.abspath(path_or_url) -+ return path_or_url -+ return -+ -+FileInfo = collections.namedtuple('FileInfo', ('fileName', 'url', 'required')) -+ -+def parseFileInfo(fileInfo): -+ """Parse fileInfo which is either an URL or a dictionary of form -+ {"fileName": "url"}. When url is prefixed with '*' the file is optional. -+ -+ Samples: -+ >>> parseFileInfo('http://kernel.org/index.html') -+ ... "index.html", "http://kernel.org/index.html", True -+ >>> parseFileInfo('*http://kernel.org/index.html') -+ ... "index.html", "http://kernel.org/index.html", False -+ >>> parseFileInfo({'foobar.html': '*http://kernel.org/index.html'}) -+ ... "foobar.html", "http://kernel.org/index.html", False -+ """ -+ if isinstance(fileInfo, basestring): -+ url = fileInfo -+ fileName = os.path.basename(url) -+ elif isinstance(fileInfo, dict): -+ items = fileInfo.items() -+ if len(items) != 1: -+ raise ValueError("only one-entry dicts are allowed as fileInfo") -+ fileName, url = items[0] -+ -+ required = True -+ if url.startswith('*'): -+ url = url.lstrip('*') -+ required = False -+ return FileInfo(fileName, url, required) -+ -+ -+class WorkflowToFileStoreProxy(object): -+ """ -+ Make File.copy and Directory.copy work with toil.common.Toil object. -+ """ -+ def __init__(self, workflow): -+ self.workflow = workflow -+ -+ def readGlobalFile(self, fileId): -+ tmpfile = tempfile.mktemp() -+ self.workflow.exportFile(fileId, 'file://' + tmpfile) -+ return tmpfile -+ -+ def writeGlobalFile(self, path): -+ return self.workflow.importFile('file:///' + path) -+ -+ def getLocalTempFile(self): -+ return tempfile.mktemp() -+ -+ -+class Storage(dict): -+ """Keeps files organized for the workflow. -+ -+ This is a dictionary that associates fileName with a file object such -+ as `File` or `Directory` class. -+ -+ Additional field `promised_updates` is used to keep track of updates -+ resulting from `Promise`s of children. -+ """ -+ def __init__(self, *args, **kwargs): -+ self.promised_updates = [] -+ if args: -+ self.promised_updates = list(args[0].promised_updates) -+ -+ super(Storage, self).__init__(*args, **kwargs) -+ -+ def update(self, other): -+ """Update this Storage with files from another.""" -+ if isinstance(other, Storage): -+ self.promised_updates.extend(other.promised_updates) -+ -+ if isinstance(other, dict): -+ super(Storage, self).update(other) -+ else: -+ self.promised_updates.append(other) -+ -+ def __setstate__(self, state): -+ """Unfold finished promised_updates.""" -+ self.promised_updates = [] -+ for promise in state['promised_updates']: -+ self.update(promise) -+ -+ def __repr__(self): -+ s = super(Storage, self).__repr__() -+ return s + (" %r" % self.promised_updates) -+ -+ @contextlib.contextmanager -+ def expose(self, rootDir=None): -+ """Expose Storage to a directory and pick up changes from it.""" -+ if rootDir is None: -+ rootDir = self.fileStore.getLocalTempDir() -+ try: -+ self.toDirectory(rootDir) -+ yield rootDir -+ finally: -+ self.cleanupDirectory(rootDir) -+ self.pickupDirectory(rootDir) -+ -+ def toDirectory(self, rootDir, export=False): -+ """Copy Storage content to the specified directory.""" -+ for fileObj in self.values(): -+ if export and isinstance(fileObj, (ImportedFile, ImportedDirectory)): -+ continue -+ fileObj.copy(self.fileStore, rootDir) -+ -+ def pickupDirectory(self, directory): -+ """Pick up content of the specified directory into the Storage.""" -+ files = ((name, os.path.join(directory, name)) -+ for name in os.listdir(directory)) -+ return self.pickupFiles(self.fileStore, files) -+ -+ def cleanupDirectory(self, rootDir): -+ """Remove storage files from the directory.""" -+ return -+ for fileName in self: -+ path = os.path.join(rootDir, fileName) -+ -+ if os.path.isdir(path): -+ shutil.rmtree(path) -+ else: -+ os.remove(path) -+ -+ def pickupFiles(self, fileStore, files): -+ """Pick up listed files into the Storage.""" -+ for fileName, path in files: -+ if fileName in self: -+ continue -+ -+ if os.path.isdir(path): -+ self[fileName] = Directory.fromFiles( -+ fileStore, [(fileName, path)]) -+ else: -+ self[fileName] = File.fromLocalFile( -+ fileStore, fileName, path) -+ -+ def importLocalFiles(self, workflow, inputs, rootDir=None): -+ """Import local files at the start of the workflow. -+ -+ This is usually a first step and is done: -+ >>> with Toil(options) as toil: -+ ... storage = Storage.importLocalFiles( -+ ... toil, -+ ... ['localfile.tar', 'secondfile', 'ascript.sh']) -+ ... rootJob = RootJob(storage) -+ """ -+ -+ localFiles = [] -+ remoteFiles = [] -+ -+ for fileInfo in inputs: -+ -+ fileName, url, required = parseFileInfo(fileInfo) -+ -+ path = myabspath(url, rootDir) -+ if path: -+ localFiles.append((fileName, path)) -+ else: -+ remoteFiles.append(fileInfo) -+ -+ for fileName, path in localFiles: -+ if fileName in self: -+ continue -+ -+ if os.path.isdir(path): -+ self[fileName] = ImportedDirectory.fromFiles( -+ workflow, fileName, [(fileName, path)]) -+ else: -+ try: -+ self[fileName] = ImportedFile.fromLocalFile( -+ workflow, fileName, path) -+ except IOError as ioerr: -+ if ioerr.errno != errno.ENOENT: -+ raise -+ -+ print("imported localFiles %s" % (", ".join(self))) -+ -+ inputs[:] = remoteFiles -+ -+ return self -+ -+ @classmethod -+ def fromLocalFiles(cls, workflow, inputs, rootDir=None): -+ storage = cls() -+ storage.importLocalFiles(workflow, inputs, rootDir) -+ return storage -+ -+ def exportLocalFiles(self, workflow, outputDir): -+ """Export local files at the end of workflow. -+ -+ This is the last step: -+ >>> with Toil(options) as toil: -+ ... ... -+ ... storage = toil.start(rootJob) -+ ... storage.exportLocalFiles(toil, 'outputDir') -+ """ -+ try: -+ self.fileStore = WorkflowToFileStoreProxy(workflow) -+ return self.toDirectory(outputDir, export=True) -+ finally: -+ del self.fileStore -+ -+ -+class File(object): -+ """A file in Storage.""" -+ def __init__(self, fileName, fileId, mode=None): -+ super(File, self).__init__() -+ self.fileName = fileName -+ self.fileId = fileId -+ self.mode = mode -+ -+ def copy(self, fileStore, dest): -+ localCopy = self.localCopy(fileStore) -+ if os.path.isdir(dest): -+ dest = os.path.join(dest, self.fileName) -+ shutil.copy(localCopy, dest) -+ if self.mode: -+ os.chmod(dest, self.mode) -+ -+ def localCopy(self, fileStore): -+ return fileStore.readGlobalFile(self.fileId) -+ -+ @contextlib.contextmanager -+ def open(self, fileStore): -+ localFile = self.localCopy(fileStore) -+ with open(localFile) as fh: -+ yield fh -+ -+ @classmethod -+ def fromLocalFile(cls, fileStore, fileName, path): -+ return cls(fileName, fileStore.writeGlobalFile(path), -+ mode=os.stat(path).st_mode) -+ -+ def __str__(self): -+ return "" % (self.fileName, self.fileId) -+ -+ __repr__ = __str__ -+ -+ -+class ImportedFile(object): -+ def __init__(self, fileName, mode=None): -+ super(ImportedFile, self).__init__() -+ self.fileName = fileName -+ self.mode = mode -+ -+ def copy(self, fileStore, dest): -+ if os.path.isdir(dest): -+ dest = os.path.join(dest, self.fileName) -+ with self.open(fileStore) as fhin: -+ with open(dest, 'w') as fhout: -+ shutil.copyfileobj(fhin, fhout) -+ if self.mode: -+ os.chmod(dest, self.mode) -+ -+ def localCopy(self, fileStore): -+ fileName = fileStore.getLocalTempFile() -+ self.copy(fileStore, fileName) -+ return fileName -+ -+ @contextlib.contextmanager -+ def open(self, fileStore): -+ with fileStore.jobStore.readSharedFileStream(self.fileName) as fh: -+ yield fh -+ -+ @classmethod -+ def fromLocalFile(cls, workflow, fileName, path): -+ workflow.importFile('file://' + path, sharedFileName=fileName) -+ -+ return cls( -+ fileName, -+ mode=os.stat(path).st_mode) -+ -+ def __str__(self): -+ return "" % self.fileName -+ -+ __repr__ = __str__ -+ -+ -+class Directory(object): -+ """A directory in Storage. Kept as an archive file.""" -+ def __init__(self, fileId): -+ super(Directory, self).__init__() -+ self.fileId = fileId -+ -+ def localCopy(self, fileStore, outDir=None): -+ localDir = outDir or fileStore.getLocalTempDir() -+ localFile = fileStore.readGlobalFile(self.fileId) -+ -+ tar = tarfile.TarFile.taropen(localFile) -+ tar.extractall(path=localDir) -+ -+ return localDir -+ -+ def copy(self, fileStore, dest): -+ self.localCopy(fileStore, dest) -+ -+ @classmethod -+ def fromFiles(cls, fileStore, files): -+ -+ with fileStore.writeGlobalFileStream() as (fh, fileId): -+ tar = tarfile.TarFile.open(fileobj=fh, mode='w') -+ -+ for fileName, path in files: -+ tar.add(path, arcname=fileName) -+ -+ return cls(fileId) -+ -+ def __str__(self): -+ return "" % self.fileId -+ -+ __repr__ = __str__ -+ -+ -+class ImportedDirectory(Directory): -+ -+ def localCopy(self, fileStore, outDir=None): -+ localDir = outDir or fileStore.getLocalTempDir() -+ -+ with fileStore.jobStore.readSharedFileStream(self.fileId) as fh: -+ tar = tarfile.TarFile(fileobj=fh, mode='r') -+ tar.extractall(path=localDir) -+ -+ return localDir -+ -+ @classmethod -+ def fromFiles(cls, workflow, dirName, files): -+ tmpfile = tempfile.mktemp() -+ -+ tar = tarfile.TarFile.open(tmpfile, mode='w') -+ -+ for fileName, path in files: -+ tar.add(path, arcname=fileName) -+ -+ tar.close() -+ -+ workflow.importFile('file://' + tmpfile, sharedFileName=dirName) -+ os.unlink(tmpfile) -+ -+ return cls(dirName) -+ -+ -+class IncorrectStorageUse(Exception): -+ message = "Child `Job`s with storage added outside of running parent " \ -+ "wont influence parent's storage. If this is not required " \ -+ "consider using addChildNoStorage and setting child's " \ -+ "storage via `self._storage = child.resultStorage`." -+ -+ def __init__(self): -+ super(IncorrectStorageUse, self).__init__(self.message) -+ -+ -+class Job(toilJob): -+ """Job with a Storage. -+ -+ This Job passes Storage down the workflow via `Promise` mechanism. -+ Updates to Storage from the children are merged and passed to the -+ followOns. -+ """ -+ -+ _running = False -+ def __init__(self, *args, **kwargs): -+ super(Job, self).__init__(*args, **kwargs) -+ self._storage = Storage() -+ self._childStorage = Storage() -+ -+ def rv(self, *path): -+ return super(Job, self).rv('rv', *path) -+ -+ @property -+ def storage(self): -+ if self._running: -+ return self._storage -+ else: -+ return super(Job, self).rv('storage') -+ -+ @property -+ def resultStorage(self): -+ return super(Job, self).rv('childStorage') -+ -+ def _updateStorage(self, succ, promise, ourStorage): -+ if not isinstance(succ, Job): -+ return -+ -+ succ._storage = promise -+ -+ if ourStorage is not None: -+ if self._running: -+ ourStorage.update(succ.storage) -+ else: -+ raise IncorrectStorageUse() -+ -+ def addChild(self, child): -+ """Add a child and update storage with it's promised storage""" -+ rv = super(Job, self).addChild(child) -+ self._updateStorage(child, self.storage, self._childStorage) -+ return rv -+ -+ def addFollowOn(self, followOn): -+ "Add a followOn. FollowOns receive storages with updates from children" -+ rv = super(Job, self).addFollowOn(followOn) -+ self._updateStorage(followOn, self.resultStorage, None) -+ return rv -+ -+ def addChildNoStorage(self, child): -+ """Add a child that won't contribute to the Storage. -+ -+ Typically used to add a child whose Storage will be used as a -+ predecessor' result. -+ """ -+ rv = super(Job, self).addChild(child) -+ self._updateStorage(child, self.storage, None) -+ return rv -+ -+ def _run(self, jobGraph, fileStore): -+ -+ self._running = True -+ -+ storage = self.storage -+ storage.fileStore = fileStore -+ -+ rv = super(Job, self)._run(jobGraph, fileStore) -+ -+ try: -+ del storage.fileStore -+ except AttributeError: -+ pass -+ self._running = False -+ -+ self._childStorage.update(self._storage) -+ -+ return { -+ 'rv': rv, -+ 'storage': self._storage, -+ 'childStorage': self._childStorage -+ } -+ -+ -+class NoSuchFile(Exception): -+ pass -+ -+ -+class FileFetcherJob(Job): -+ """Fetches files from the Web into the Storage. -+ -+ Accepts a list `fileInfo`s to download. There must be no local filesystem -+ files. Instead, fetcher should be primed with a Storage having them -+ imported via `importLocalFiles`. -+ """ -+ def __init__(self, files, storage=None, localRootDir=None): -+ super(FileFetcherJob, self).__init__(cores=1, memory="256M") -+ -+ if storage is not None: -+ self._storage = storage -+ -+ self.files = files -+ if localRootDir is None: -+ localRootDir = os.path.dirname(os.path.realpath(__file__)) -+ self.localRootDir = localRootDir -+ -+ remoteFiles = self.remoteFiles = [] -+ localFiles = [] -+ -+ for fileInfo in self.files: -+ -+ fileName, url, required = parseFileInfo(fileInfo) -+ if fileName in self._storage: -+ continue -+ -+ path = myabspath(url, self.localRootDir) -+ if path: -+ localFiles.append((fileName, path)) -+ else: -+ remoteFiles.append((fileName, url, required)) -+ -+ if localFiles: -+ raise Exception("Non-empty localFiles, did you forgot to importLocalFiles: %s?" % localFiles) -+ -+ -+ def run(self, fileStore): -+ -+ for fileInfo in self.remoteFiles: -+ -+ fileName, url, required = fileInfo -+ if fileName in self.storage: -+ continue -+ -+ try: -+ if url.startswith('s3://'): -+ child = S3DownloadJob(fileName, url) -+ else: -+ child = DownloadJob(fileName, url) -+ self.addChild(child) -+ except NoSuchFile: -+ if required: -+ raise -+ -+ -+class DownloadJob(Job): -+ """Download a HTTP or FTP file.""" -+ def __init__(self, fileName, url): -+ self.url = url -+ -+ request = requests.get(self.url, stream=True) -+ if request.status_code != 200: -+ raise NoSuchFile(self.url) -+ -+ disk = request.headers.get('Content-Length', '1G') -+ request.close() -+ self.fileName = fileName -+ -+ Job.__init__(self, unitName=url, memory="128M", cores=1, disk=disk) -+ -+ def run(self, fileStore): -+ r = requests.get(self.url, stream=True) -+ -+ with fileStore.writeGlobalFileStream() as (fh, fileId): -+ for chunk in r.iter_content(4096): -+ fh.write(chunk) -+ self.storage[self.fileName] = File(self.fileName, fileId) -+ -+ -+_CLIENT = None -+class S3FileJob(Job): -+ -+ def parseurl(self, desturl): -+ url = urlparse.urlparse(desturl) -+ if url.scheme != "s3": -+ raise Exception("URL %s is not S3 url" % desturl) -+ -+ self.url = url -+ self.bucket = self.url.netloc -+ self.key = self.url.path[1:] -+ self.desturl = desturl -+ -+ def client(cls): -+ -+ global _CLIENT -+ if _CLIENT is None: -+ _CLIENT = boto3.client('s3') -+ return _CLIENT -+ -+ -+class S3DownloadJob(S3FileJob): -+ """Download a file from AWS S3.""" -+ def __init__(self, fileName, url): -+ self.parseurl(url) -+ -+ try: -+ self.obj = self.client().get_object(Bucket=self.bucket, Key=self.key) -+ except self.client().exceptions.NoSuchKey: -+ raise NoSuchFile(url) -+ -+ self.fileName = fileName -+ super(S3DownloadJob, self).__init__( -+ memory="1M", cores=1, unitName="download %s" % url, -+ disk=self.obj['ContentLength']) -+ -+ def run(self, fileStore): -+ with fileStore.writeGlobalFileStream() as (fh, fileId): -+ self.client().download_fileobj(Bucket=self.bucket, Key=self.key, -+ Fileobj=fh) -+ self.storage[self.fileName] = File(self.fileName, fileId) -+ -+ -+class S3UploadJob(S3FileJob): -+ """Upload a file to AWS S3.""" -+ def __init__(self, fileId, url): -+ self.parseurl(url) -+ self.fileId = fileId -+ -+ super(S3UploadJob, self).__init__(memory="1M", cores=1, unitName="upload %s" % url) -+ -+ -+ def run(self, fileStore): -+ localFile = fileStore.readGlobalFile(self.fileId) -+ self.client().upload_file(localFile, self.bucket, self.key) -+ -+ -+class DockerScriptJob(Job): -+ """Run docker script on top of an exposed Storage.""" -+ -+ def __init__(self, script, image, -+ args=[], cores=4, disk="4G", -+ logfileName="docker-logfile"): -+ unitName = "image={image} script={script} args={args!r}".format( -+ image=image, script=script, args=args) -+ Job.__init__(self, cores=cores, disk=disk, unitName=unitName) -+ -+ self.script = script -+ -+ self.image = image -+ self.args = args -+ self.logfileName = logfileName -+ -+ def run(self, fileStore): -+ -+ e = None -+ with self.storage.expose() as dockerRoot: -+ logfilePath = os.path.join(dockerRoot, self.logfileName) -+ with open(logfilePath, "a") as logfilefh: -+ dockerDefer = fileStore.jobStore.config.dockerDefer -+ -+ dockerParameters = [] -+ if dockerDefer == RM: -+ dockerParameters.append('--rm') -+ -+ dockerParameters += ['-t', '-v', os.path.abspath(dockerRoot) + ':/data'] -+ #dockerParameters += ['--privileged'] -+ dockerParameters += ['--cap-add=SYS_PTRACE'] -+ -+ dockerCall(self, -+ tool=self.image, workDir=dockerRoot, -+ defer=dockerDefer, outfile=logfilefh, -+ parameters=["/data/build"] -+ + self.args, -+ dockerParameters=dockerParameters) -+ -+ return str(e) -+ -+ def __str__(self): -+ name = "build--script=%s--image=%s" % ( -+ os.path.basename(self.script), self.image) -+ return name.replace(':', '-').replace('=', '-').replace('/', '-') -+ -+ -+ -+DEFAULT_SCRIPT = './build-patch.sh' -+DEFAULT_IMAGE = 'centos:centos7' -+ -+UploadInfo = collections.namedtuple('UploadInfo', ('fileName', 'url')) -+ -+class UploadJob(Job): -+ """Upload files from the Storage. -+ -+ URLs passed are `uploadInfo` instances. -+ """ -+ def __init__(self, urls): -+ self.urls = [UploadInfo(*url) for url in urls] -+ -+ super(UploadJob, self).__init__() -+ -+ def run(self, fileStore): -+ for url in self.urls: -+ fileName, url = url -+ -+ fileObj = self.storage.get(fileName) -+ if fileObj is None: -+ continue -+ -+ path = myabspath(url) -+ if not path: -+ self.addChild(S3UploadJob(fileObj.fileId, url)) -+ else: -+ localFile = fileStore.readGlobalFile(fileObj.fileId) -+ shutil.copy(localFile, path) -+ -+ -+class DoBuild(Job): -+ """If prebuild archive is not in storage do a prebuild and upload it to the -+ specified location. Otherwise just do a build.""" -+ -+ def __init__(self, fileName, prebuildJob, uploadJob, buildJob): -+ super(DoBuild, self).__init__(memory="256M") -+ -+ self.fileName = fileName -+ self.prebuildJob = prebuildJob -+ self.buildJob = buildJob -+ self.uploadJob = uploadJob -+ -+ def run(self, fileStore): -+ if self.fileName not in self.storage: -+ self.addChild(self.prebuildJob) -+ -+ self.prebuildJob.addChildNoStorage(self.buildJob) -+ self.prebuildJob.addChildNoStorage(self.uploadJob) -+ else: -+ self.addChild(self.buildJob) -+ -+ self._storage = self.buildJob.storage -+ -+ -+class BuildPatchJob(toilJob): -+ """Root job for patch building. Fetches files and runs Docker jobs. -+ -+ The algorithm is the following: -+ 1. FileFetcherJob(inputs + optional prebuild). -+ -+ 2. If prebuild is there, just run DockerScriptJob with a build job. -+ -+ 3. If prebuild is missing, run DockerScriptJob. Chain UploadJob for it. -+ Start build job DockerScriptJob it. -+ """ -+ def __init__(self, storage, packageDescription): -+ super(BuildPatchJob, self).__init__(memory="256M") -+ -+ self.storage = storage -+ self.packageDescription = packageDescription -+ -+ self.script = packageDescription.get('script', DEFAULT_SCRIPT) -+ self.image = packageDescription.get('image', DEFAULT_IMAGE) -+ -+ self.inputs = list(packageDescription.get('input')) -+ -+ def run(self, fileStore): -+ -+ tail = self -+ -+ fetcher = FileFetcherJob(self.inputs, storage=self.storage) -+ tail.addFollowOn(fetcher) -+ tail = fetcher -+ -+ prebuildUrl = self.packageDescription['prebuild'] -+ prebuildName = os.path.basename(prebuildUrl) -+ -+ prebuildJob = DockerScriptJob( -+ script=self.script, -+ image=self.image, -+ args=['-p'], -+ logfileName="prebuild.log") -+ uploadJob = UploadJob([(prebuildName, prebuildUrl)]) -+ -+ buildJob = DockerScriptJob( -+ script=self.script, -+ image=self.image, -+ logfileName="build.log") -+ -+ -+ doBuild = DoBuild(fileName=prebuildName, prebuildJob=prebuildJob, -+ uploadJob=uploadJob, buildJob=buildJob) -+ tail.addFollowOn(doBuild) -+ tail = doBuild -+ -+ return tail.storage -+ -+ -+def get_default_outputDir(): -+ outputDir = os.path.join(os.getcwd(), 'libcare-output') -+ outputDir = os.path.join(outputDir, datetime.datetime.utcnow().isoformat()) -+ return outputDir -+ -+def readPackageDescription(packageFile): -+ with open(packageFile) as fh: -+ packageDescription = yaml.load(fh) -+ -+ inputs = packageDescription['input'] -+ -+ cwd = os.path.dirname(os.path.realpath(__file__)) -+ -+ script = packageDescription.get( -+ 'script', os.path.join(cwd, DEFAULT_SCRIPT)) -+ -+ inputs.append({'build': script}) -+ inputs.append({'scripts': os.path.join(cwd, '../../scripts')}) -+ inputs.append({'src': os.path.join(cwd, '../../src/')}) -+ inputs.append({'execve': os.path.join(cwd, '../../tests/execve')}) -+ -+ prebuildUrl = packageDescription['prebuild'] -+ if not prebuildUrl.startswith('*'): -+ prebuildUrl = '*' + prebuildUrl -+ inputs.append(prebuildUrl) -+ -+ return packageDescription -+ -+def start(toil): -+ -+ options = toil.options -+ -+ packageDescription = readPackageDescription(options.packageFile) -+ -+ path = myabspath(options.outputDir) -+ if path: -+ print("output directory is", path) -+ options.outputDir = path -+ else: -+ print("output url is", options.outputDir) -+ -+ rootDir = os.path.realpath(os.path.dirname(options.packageFile)) -+ -+ storage = Storage() -+ storage.importLocalFiles(toil, packageDescription['input'], rootDir=rootDir) -+ theJob = BuildPatchJob(storage, packageDescription) -+ -+ return toil.start(theJob) -+ -+def restart(toil): -+ packageDescription = readPackageDescription(toil.options.packageFile) -+ -+ rootDir = os.path.realpath(os.path.dirname(toil.options.packageFile)) -+ -+ Storage.fromLocalFiles(toil, packageDescription['input'], rootDir=rootDir) -+ -+ return toil.restart() -+ -+def main(): -+ parser = Job.Runner.getDefaultArgumentParser() -+ parser.add_argument('packageFile') -+ parser.add_argument('--outputDir', required=False, -+ default=get_default_outputDir()) -+ parser.add_argument('--dockerDefer', required=False, -+ default='RM') -+ options = parser.parse_args() -+ -+ options.disableCaching = True -+ -+ with Toil(options) as toil: -+ toil.config.dockerDefer = globals()[options.dockerDefer.upper()] -+ toil._jobStore.writeConfig() -+ -+ if not toil.options.restart: -+ storage = start(toil) -+ else: -+ storage = restart(toil) -+ -+ try: -+ os.makedirs(options.outputDir) -+ except OSError as e: -+ if e.errno != errno.EEXIST: -+ raise -+ storage.exportLocalFiles(toil, options.outputDir) -+ -+if __name__ == "__main__": -+ main() -diff --git a/scripts/toil/requirements.txt b/scripts/toil/requirements.txt -new file mode 100644 -index 0000000..ea481fa ---- /dev/null -+++ b/scripts/toil/requirements.txt -@@ -0,0 +1,4 @@ -+toil==3.10.1 -+boto3 -+requests -+pyyaml -diff --git a/scripts/toil/tests_pkgbuild.py b/scripts/toil/tests_pkgbuild.py -new file mode 100644 -index 0000000..f60643d ---- /dev/null -+++ b/scripts/toil/tests_pkgbuild.py -@@ -0,0 +1,218 @@ -+#!/usr/bin/python -+ -+import contextlib -+import functools -+import os -+import shutil -+from StringIO import StringIO -+import tempfile -+ -+from toil.common import Toil -+ -+import pkgbuild -+ -+def test_storage_update(): -+ Storage = pkgbuild.Storage -+ -+ storage = Storage(**{'test.sh': 'nothing'}) -+ newStorage = Storage(**{'test2.sh': 'nothing'}) -+ -+ storage.update('promised_value2') -+ newStorage.update('promised_value') -+ -+ newStorage.update(storage) -+ -+ assert newStorage == {'test.sh': 'nothing', 'test2.sh': 'nothing'} -+ assert newStorage.promised_updates == ['promised_value', 'promised_value2'] -+ assert Storage(newStorage) == newStorage -+ -+def test_storage_pickle(): -+ import cPickle -+ Storage = pkgbuild.Storage -+ -+ storage = Storage() -+ storage['abc'] = 'test' -+ storage.update('promised_value') -+ -+ storage = cPickle.loads(cPickle.dumps(storage, protocol=-1)) -+ assert storage['abc'] == 'test' -+ assert storage.promised_updates == ['promised_value'] -+ -+def test_parseFileInfo(): -+ parseFileInfo = pkgbuild.parseFileInfo -+ -+ info = parseFileInfo('http://kernel.org/index.html') -+ assert info == pkgbuild.FileInfo( -+ fileName='index.html', -+ url='http://kernel.org/index.html', -+ required=True) -+ -+ info = parseFileInfo('*http://kernel.org/index.html') -+ assert info == pkgbuild.FileInfo( -+ fileName='index.html', -+ url='http://kernel.org/index.html', -+ required=False) -+ -+ info = parseFileInfo({'foobar.html': 'http://kernel.org/index.html'}) -+ assert info == pkgbuild.FileInfo( -+ fileName='foobar.html', -+ url='http://kernel.org/index.html', -+ required=True) -+ -+ info = parseFileInfo({'foobar.html': '*http://kernel.org/index.html'}) -+ assert info == pkgbuild.FileInfo( -+ fileName='foobar.html', -+ url='http://kernel.org/index.html', -+ required=False) -+ -+ try: -+ info = parseFileInfo({ -+ 'foobar.html': '*http://kernel.org/index.html', -+ 'other': 'things'}) -+ except ValueError: -+ pass -+ else: -+ assert False -+ -+class FakeJobStorage(object): -+ def __init__(self, imported): -+ self.imported = imported -+ -+ @contextlib.contextmanager -+ def readSharedFileStream(self, fileId): -+ buf = fileId -+ if self.imported and fileId in self.imported: -+ buf = self.imported[fileId] -+ yield StringIO(buf) -+ -+class FakeFileStorage(object): -+ def __init__(self, imported=None): -+ self.localTempDir = tempfile.mkdtemp() -+ self.jobStore = FakeJobStorage(imported) -+ -+ def getLocalTempDir(self): -+ return self.localTempDir -+ -+ def readGlobalFile(self, fileId): -+ fileName = tempfile.mktemp() -+ with open(fileName, "w") as fh: -+ print(fileId) -+ fh.write(fileId) -+ return fileName -+ -+ def writeGlobalFile(self, path): -+ with open(path) as fh: -+ return fh.read() -+ -+ @contextlib.contextmanager -+ def writeGlobalFileStream(self): -+ fh_and_fileId = StringIO() -+ yield fh_and_fileId, fh_and_fileId -+ -+class FakeWorkflow(object): -+ def __init__(self): -+ self.imported = {} -+ -+ def importFile(self, path, sharedFileName): -+ self.imported[sharedFileName] = slurp(path.replace('file://', '')) -+ -+def slurp(fileName): -+ return open(fileName).read() -+ -+def test_storage(): -+ storage = pkgbuild.Storage( -+ **{ -+ 'file.txt': pkgbuild.File('file.txt', 'some content'), -+ 'imported.txt': pkgbuild.ImportedFile('imported.txt') -+ } -+ ) -+ storage.fileStore = FakeFileStorage() -+ -+ with storage.expose() as dirname: -+ -+ assert set(os.listdir(dirname)) == set(['file.txt', 'imported.txt']) -+ -+ assert slurp(os.path.join(dirname, 'file.txt')) == 'some content' -+ assert slurp(os.path.join(dirname, 'imported.txt')) == 'imported.txt' -+ -+ with open(os.path.join(dirname, 'newfile.txt'), 'w') as fh: -+ fh.write('and some content here') -+ -+ -+ assert storage['newfile.txt'].fileId == 'and some content here' -+ -+ with storage.expose() as dirname: -+ -+ -+ newdir = os.path.join(dirname, 'testdir') -+ os.mkdir(newdir) -+ with open(os.path.join(newdir, 'subfile'), "w") as fh: -+ fh.write('foobar') -+ -+ inputs = os.listdir(dirname) + ['http://somefile.com/index.html'] -+ workflow = FakeWorkflow() -+ newStorage = pkgbuild.Storage.fromLocalFiles( -+ workflow, inputs, dirname) -+ assert inputs == ['http://somefile.com/index.html'] -+ -+ -+ assert isinstance(newStorage['testdir'], pkgbuild.ImportedDirectory) -+ -+ newStorage.fileStore = FakeFileStorage(workflow.imported) -+ with newStorage.expose() as dirname: -+ -+ assert slurp(os.path.join(dirname, 'file.txt')) == 'some content' -+ assert slurp(os.path.join(dirname, 'imported.txt')) == 'imported.txt' -+ assert slurp(os.path.join(dirname, 'newfile.txt')) == 'and some content here' -+ assert slurp(os.path.join(dirname, 'testdir', 'subfile')) == 'foobar' -+ -+ -+class DummyStorageUpdate(pkgbuild.Job): -+ def __init__(self, filename): -+ super(DummyStorageUpdate, self).__init__(unitName=filename) -+ self.filename = filename -+ -+ def run(self, fileStore): -+ self.storage[self.filename] = 'something' -+ -+class DummyStorageAsChild(pkgbuild.Job): -+ def run(self, fileStore): -+ a = DummyStorageUpdate('bar') -+ self.addChild(a) -+ -+class RootJob(pkgbuild.Job): -+ def __init__(self, storage): -+ super(RootJob, self).__init__() -+ self._storage = storage -+ -+ def run(self, fileStore): -+ -+ tail = self -+ -+ a = DummyStorageUpdate('foo') -+ self.addChild(a) -+ tail = a -+ -+ b = DummyStorageAsChild() -+ tail.addFollowOn(b) -+ tail = b -+ -+ return tail.resultStorage -+ -+def test_job_storage(): -+ parser = pkgbuild.Job.Runner.getDefaultArgumentParser() -+ options = parser.parse_args(['test_job_storage']) -+ -+ options.workDir = tempfile.mkdtemp() -+ options.jobStore = os.path.join(options.workDir, 'workdir') -+ -+ storage = pkgbuild.Storage(foobar='here i go') -+ root = RootJob(storage=storage) -+ -+ try: -+ with Toil(options) as toil: -+ storage = toil.start(root) -+ finally: -+ shutil.rmtree(options.workDir) -+ -+ assert storage == {'foo': 'something', 'bar': 'something', 'foobar': 'here i go'} --- -2.23.0 - diff --git a/0008-pkgbuild-use-yumdownloader-if-source-url-is-missing.patch b/0008-pkgbuild-use-yumdownloader-if-source-url-is-missing.patch deleted file mode 100644 index 12416ff..0000000 --- a/0008-pkgbuild-use-yumdownloader-if-source-url-is-missing.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 066da27aaf6b153c215bee353e7190fe226f5b3b Mon Sep 17 00:00:00 2001 -From: Pavel Boldin -Date: Thu, 14 Dec 2017 18:02:15 +0200 -Subject: [PATCH 08/89] pkgbuild: use yumdownloader if source url is missing - -Signed-off-by: Pavel Boldin ---- - scripts/pkgbuild | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/scripts/pkgbuild b/scripts/pkgbuild -index 8803db3..97c78a9 100755 ---- a/scripts/pkgbuild -+++ b/scripts/pkgbuild -@@ -105,7 +105,11 @@ kp_prepare_source_raw() { - - kp_download_source_rpm() { - mkdir -p /kcdata -- curl $KP_PROJECT_SOURCE_URL -o /kcdata/$KP_PROJECT_SOURCE -+ if test -n "$KP_PROJECT_SOURCE_URL"; then -+ curl $KP_PROJECT_SOURCE_URL -o /kcdata/$KP_PROJECT_SOURCE -+ else -+ yumdownloader --source --destdir /kcdata ${KP_PROJECT_SOURCE%.src.rpm} -+ fi - } - - kp_prepare_source_rpm() { --- -2.23.0 - diff --git a/0009-execve-abort-on-failure.patch b/0009-execve-abort-on-failure.patch deleted file mode 100644 index df6707d..0000000 --- a/0009-execve-abort-on-failure.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 2343fef023a8cd64473161fa82a0d81cb5007cf9 Mon Sep 17 00:00:00 2001 -From: Pavel Boldin -Date: Tue, 30 Jan 2018 00:04:54 +0200 -Subject: [PATCH 09/89] execve: abort() on failure - -Signed-off-by: Pavel Boldin ---- - tests/execve/execve.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/tests/execve/execve.c b/tests/execve/execve.c -index b3df0e4..eb3e9d3 100644 ---- a/tests/execve/execve.c -+++ b/tests/execve/execve.c -@@ -81,7 +81,7 @@ notify_listener(void) - sock = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0); - if (sock == -1) { - dprintf("socket() error: %s(%d)\n", strerror(errno), errno); -- return; -+ abort(); - } - dprintf("socket()\n"); - -@@ -96,7 +96,7 @@ notify_listener(void) - if (rv == -1) { - fprintf(stderr, "libcare-execve: connect() error: %s(%d)\n", strerror(errno), errno); - (void) close(sock); -- return; -+ abort(); - } - dprintf("connect()\n"); - -@@ -113,7 +113,7 @@ notify_listener(void) - if (rv == -1) { - fprintf(stderr, "send() error: %s(%d)\n", strerror(errno), errno); - (void) close(sock); -- return; -+ abort(); - } - dprintf("send()\n"); - -@@ -123,6 +123,7 @@ notify_listener(void) - - if (rv == -1) { - fprintf(stderr, "recv() error: %s(%d)\n", strerror(errno), errno); -+ abort(); - } - dprintf("recv()\n"); - --- -2.23.0 - diff --git a/0010-Add-test-stage-to-pkgbuild.patch b/0010-Add-test-stage-to-pkgbuild.patch deleted file mode 100644 index 55f72dd..0000000 --- a/0010-Add-test-stage-to-pkgbuild.patch +++ /dev/null @@ -1,379 +0,0 @@ -From 7d431211063a9bf6c789bb67a2ed216025279a66 Mon Sep 17 00:00:00 2001 -From: Roman Rashchupkin -Date: Tue, 23 Jan 2018 13:41:38 +0300 -Subject: [PATCH 10/89] Add --test stage to pkgbuild - -Signed-off-by: Roman Rashchupkin ---- - packages/rhel7/glibc/glibc-2.17-55.el7/info | 36 ++++----- - .../glibc/glibc-2.17-55.el7/pkgfile.yaml | 1 + - scripts/pkgbuild | 81 ++++++++++++++++--- - scripts/toil/build-patch.sh | 1 - - scripts/toil/pkgbuild.py | 57 +++++++++---- - 5 files changed, 126 insertions(+), 50 deletions(-) - -diff --git a/packages/rhel7/glibc/glibc-2.17-55.el7/info b/packages/rhel7/glibc/glibc-2.17-55.el7/info -index 8cebabb..e5805c3 100644 ---- a/packages/rhel7/glibc/glibc-2.17-55.el7/info -+++ b/packages/rhel7/glibc/glibc-2.17-55.el7/info -@@ -55,21 +55,6 @@ kp_build_hook() { - $KP_PROJECT_BUILD_ROOT/SPECS/$KP_PROJECT_SPEC - } - --# Replace patch build results with original libraries for testing --_install_originals() { -- eval set -- $KP_INSTALL_FILES -- while test -n "$1"; do -- local buildpath="$1" -- local installpath="$2" -- shift 2 -- -- if test "$installpath" = "IGNORE"; then -- continue -- fi -- -- /bin/cp -r /root/root.original/$installpath $KP_PROJECT_BUILD_DIR/$buildpath -- done --} - - _run_tests() { - if test -f $LIBCARE_DIR/execve/execve.so; then -@@ -113,15 +98,22 @@ _run_tests() { - export PATH=$KCPATH - } - --kp_patch_test() { -- _install_originals -+kp_prepare_test_binaries() { -+ # Replace patch build results with original libraries for testing -+ kp_install_files /root/root.original \ -+ $KP_PROJECT_BUILD_DIR \ -+ "to_prebuild" \ -+ "$KP_INSTALL_FILES" -+} - -+kp_patch_test() { - rm -f /var/run/libcare.sock - -- PATCH_ROOT=/root/${KP_PROJECT_PATCH%.*} -+ PATCH_ROOT=$KP_PROJECT_BUILD_ROOT/storage - $KPATCH_PATH/libcare-ctl -v server /var/run/libcare.sock $PATCH_ROOT \ -- >/data/test.log 2>&1 & : -+ >/data/libcare-ctl.log 2>&1 & : - LISTENER_PID=$! -+ - sleep 1 - kill -0 $LISTENER_PID - -@@ -134,11 +126,11 @@ kp_patch_test() { - - popd - -- local patched=$(awk '/kpatch_ctl targeting/ { n++ } END { print n }' /data/test.log) -+ local patched=$(awk '/kpatch_ctl targeting/ { n++ } END { print n }' /data/libcare-ctl.log) - - test $patched -ge $executed - -- grep -vq 'No patch(es) applicable to' /data/test.log -- grep 'patch hunk(s) have been successfully applied' /data/test.log \ -+ grep -vq 'No patch(es) applicable to' /data/libcare-ctl.log -+ grep 'patch hunk(s) have been successfully applied' /data/libcare-ctl.log \ - | wc -l - } -diff --git a/packages/rhel7/glibc/glibc-2.17-55.el7/pkgfile.yaml b/packages/rhel7/glibc/glibc-2.17-55.el7/pkgfile.yaml -index 51028ed..b17e895 100644 ---- a/packages/rhel7/glibc/glibc-2.17-55.el7/pkgfile.yaml -+++ b/packages/rhel7/glibc/glibc-2.17-55.el7/pkgfile.yaml -@@ -1,5 +1,6 @@ - image: kernelcare/centos7:gcc-4.8.2-16.el7 - prebuild: /tmp/build.orig-glibc-2.17-55.el7.x86_64.rpm.tgz -+patch: /tmp/kpatch-glibc-2.17-55.el7.x86_64.tgz - input: - - package: . - - patches: ../../../../patches/ -diff --git a/scripts/pkgbuild b/scripts/pkgbuild -index 97c78a9..f91af57 100755 ---- a/scripts/pkgbuild -+++ b/scripts/pkgbuild -@@ -17,6 +17,7 @@ die() { - usage() { - echo "Usage: build [--prebuild] [--help] [--arch ARCH] DIR" - echo " -p|--prebuild prebuild project for further use" -+ echo " -t|--test run unit and stress tests" - echo " -a|--arch ARCH target architecture(x86_64 by default)" - echo " -h|--help print this message" - echo " DIR directory with project's info file and other resources" -@@ -32,6 +33,9 @@ prepare() { - -p|--prebuild) - ACTION=prebuild - ;; -+ -t|--test) -+ ACTION=test -+ ;; - -a|--arch) - shift - ARCH=$1 -@@ -247,13 +251,17 @@ kp_build_rpm() { - -bc \ - $KP_RPMBUILD_FLAGS \ - '--define "_topdir $KP_PROJECT_BUILD_ROOT"' \ -- $KP_PROJECT_BUILD_ROOT/SPECS/$KP_PROJECT_SPEC -+ $KP_PROJECT_BUILD_ROOT/SPECS/$KP_PROJECT_SPEC 2>&1 | -+ tee $KP_PROJECT_BUILD_ROOT/build.log - } - --kp_install_generic() { -- local ROOT_PATCHED="$HOME/root.patched" -+kp_install_files() { -+ local src="$1" -+ local dest="$2" -+ local direction="$3" -+ local files="$4" - -- eval set -- $KP_INSTALL_FILES -+ eval set -- $files - while test -n "$1"; do - local buildpath="$1" - local installpath="$2" -@@ -263,12 +271,16 @@ kp_install_generic() { - continue - fi - -- installpath="$ROOT_PATCHED/$installpath" -- -- mkdir -p "$(dirname "$installpath")" -- -- /bin/cp -ra $KP_PROJECT_BUILD_DIR/$buildpath $installpath -+ if test $direction = "from_prebuild"; then -+ install -D $src/$buildpath $dest/$installpath -+ else -+ install -D $src/$installpath $dest/$buildpath -+ fi - done -+} -+ -+kp_check_missing_files() { -+ local builddir="$1" - - local failed= - pushd $KP_PROJECT_BUILD_DIR -@@ -295,6 +307,16 @@ kp_install_generic() { - fi - } - -+kp_install_generic() { -+ local root_patched="$HOME/root.patched" -+ -+ kp_install_files $KP_PROJECT_BUILD_DIR \ -+ $root_patched \ -+ "from_prebuild" \ -+ "$KP_INSTALL_FILES" -+ kp_check_missing_files $KP_PROJECT_BUILD_DIR -+} -+ - kp_install_rpm() { - kp_install_orig_rpm - kp_install_generic -@@ -367,6 +389,33 @@ kp_pack_patch() { - popd - } - -+kp_unpack_patch() { -+ local tmpdir=$(mktemp -d --tmpdir) -+ -+ echo " unpacking patches for $KP_PROJECT into $KP_PROJECT_BUILD_ROOT/storage" -+ -+ tar -xf /kcdata/$KP_PROJECT_PATCH -C $tmpdir -+ -+ find $tmpdir -name \*.kpatch > $tmpdir/patchlist -+ -+ while read patchfile; do -+ local patchname=${patchfile##*/} -+ local buildid=${patchname%.kpatch} -+ -+ local KP_STORAGE=$KP_PROJECT_BUILD_ROOT/storage/$buildid -+ -+ mkdir -p $KP_STORAGE/1 -+ cp $patchfile $KP_STORAGE/1/kpatch.bin -+ ln -rs $KP_STORAGE/1 $KP_STORAGE/latest -+ done < $tmpdir/patchlist -+ -+ rm -fr $tmpdir -+} -+ -+kp_mark_tests_fail() { -+ touch /kcdata/Tests-FAIL -+} -+ - overwrite_utils() { - TMPBIN=$(mktemp -d --tmpdir) - -@@ -394,7 +443,8 @@ overwrite_utils() { - } - - kp_patch_test() { -- : -+ echo "Empty kp_patch_test called, override it!" -+ exit 1 - } - - main() { -@@ -408,20 +458,25 @@ main() { - - kp_prepare_env_hook - -- if [ "$ACTION" == "prebuild" ]; then -+ if test "$ACTION" == "prebuild"; then - kp_prepare_source - kp_prebuild_hook - kp_prebuild - kp_pack_prebuilt -- else -+ elif test "$ACTION" == "build"; then - kp_unpack_prebuilt - kp_patch_source - kp_build_hook - kp_build - kp_sanity_check - kp_gen_kpatch -- kp_patch_test - kp_pack_patch -+ elif test "$ACTION" == "test"; then -+ kp_unpack_prebuilt -+ kp_prepare_test_binaries -+ kp_unpack_patch -+ #kp_patch_source -+ kp_patch_test - fi - - #clean_dirs -diff --git a/scripts/toil/build-patch.sh b/scripts/toil/build-patch.sh -index 0e12de4..28720a1 100755 ---- a/scripts/toil/build-patch.sh -+++ b/scripts/toil/build-patch.sh -@@ -15,4 +15,3 @@ make -C $KPATCH_PATH clean all - make -C /data/execve clean all - - /kcdata/scripts/pkgbuild $@ /kcdata/package --ls /kcdata -lR -diff --git a/scripts/toil/pkgbuild.py b/scripts/toil/pkgbuild.py -index c4b009a..e091032 100755 ---- a/scripts/toil/pkgbuild.py -+++ b/scripts/toil/pkgbuild.py -@@ -12,8 +12,9 @@ The basic components are the following: - first job. - - #. `DoBuild` checks presence of the object in the Storage and runs -- `prebuildJob` chained with `uploadJob` and `buildJob` if the object is missing. -- Only `buildJob` is run otherwise. -+ `prebuildJob` chained with `uploadPrebuildJob`, `buildJob`, -+ `uploadPatchJob` and `testJob` if the object is missing. -+ Only `buildJob` and it's children are run otherwise. - - This is used to build missing parts such as an archive with the baseline - source code called `prebuilt` which is listed as optional for the -@@ -625,7 +626,7 @@ class S3DownloadJob(S3FileJob): - self.fileName = fileName - super(S3DownloadJob, self).__init__( - memory="1M", cores=1, unitName="download %s" % url, -- disk=self.obj['ContentLength']) -+ disk=max(4096, self.obj['ContentLength'])) - - def run(self, fileStore): - with fileStore.writeGlobalFileStream() as (fh, fileId): -@@ -731,24 +732,35 @@ class DoBuild(Job): - """If prebuild archive is not in storage do a prebuild and upload it to the - specified location. Otherwise just do a build.""" - -- def __init__(self, fileName, prebuildJob, uploadJob, buildJob): -+ def __init__(self, prebuildFileName, buildFileName, prebuildJob, uploadPrebuildJob, buildJob, uploadPatchJob, testJob): - super(DoBuild, self).__init__(memory="256M") - -- self.fileName = fileName -+ self.prebuildFileName = prebuildFileName -+ self.buildFileName = buildFileName - self.prebuildJob = prebuildJob - self.buildJob = buildJob -- self.uploadJob = uploadJob -+ self.uploadPrebuildJob = uploadPrebuildJob -+ self.uploadPatchJob = uploadPatchJob -+ self.testJob = testJob - - def run(self, fileStore): -- if self.fileName not in self.storage: -+ if self.prebuildFileName not in self.storage: - self.addChild(self.prebuildJob) - - self.prebuildJob.addChildNoStorage(self.buildJob) -- self.prebuildJob.addChildNoStorage(self.uploadJob) -+ self.prebuildJob.addChildNoStorage(self.uploadPrebuildJob) -+ -+ self.buildJob.addChildNoStorage(self.uploadPatchJob) -+ self.buildJob.addChildNoStorage(self.testJob) - else: -- self.addChild(self.buildJob) -+ if self.buildFileName not in self.storage: -+ self.addChild(self.buildJob) -+ self.buildJob.addChildNoStorage(self.uploadPatchJob) -+ self.buildJob.addChildNoStorage(self.testJob) -+ else: -+ self.addChild(self.testJob) - -- self._storage = self.buildJob.storage -+ self._storage = self.testJob.storage - - - class BuildPatchJob(toilJob): -@@ -784,21 +796,33 @@ class BuildPatchJob(toilJob): - prebuildUrl = self.packageDescription['prebuild'] - prebuildName = os.path.basename(prebuildUrl) - -+ patchUrl = self.packageDescription['patch'] -+ buildName = os.path.basename(patchUrl) -+ - prebuildJob = DockerScriptJob( - script=self.script, - image=self.image, -- args=['-p'], -+ args=['--prebuild'], - logfileName="prebuild.log") -- uploadJob = UploadJob([(prebuildName, prebuildUrl)]) -+ uploadPrebuildJob = UploadJob([(prebuildName, prebuildUrl)]) -+ - - buildJob = DockerScriptJob( - script=self.script, - image=self.image, - logfileName="build.log") -+ uploadPatchJob = UploadJob([(buildName, patchUrl)]) - -+ testJob = DockerScriptJob( -+ script=self.script, -+ image=self.image, -+ args=['--test'], -+ logfileName="test.log") -+ -+ doBuild = DoBuild(prebuildFileName=prebuildName, buildFileName=buildName, prebuildJob=prebuildJob, -+ uploadPrebuildJob=uploadPrebuildJob, buildJob=buildJob, -+ uploadPatchJob=uploadPatchJob, testJob=testJob) - -- doBuild = DoBuild(fileName=prebuildName, prebuildJob=prebuildJob, -- uploadJob=uploadJob, buildJob=buildJob) - tail.addFollowOn(doBuild) - tail = doBuild - -@@ -831,6 +855,11 @@ def readPackageDescription(packageFile): - prebuildUrl = '*' + prebuildUrl - inputs.append(prebuildUrl) - -+ patchUrl = packageDescription['patch'] -+ if not patchUrl.startswith('*'): -+ patchUrl = '*' + patchUrl -+ inputs.append(patchUrl) -+ - return packageDescription - - def start(toil): --- -2.23.0 - diff --git a/0011-glibc-minimal-readme-for-toil-builder.patch b/0011-glibc-minimal-readme-for-toil-builder.patch deleted file mode 100644 index 25e2f6e..0000000 --- a/0011-glibc-minimal-readme-for-toil-builder.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 0c0f6387230d6164eaa58ae4a95656539ace5159 Mon Sep 17 00:00:00 2001 -From: Pavel Boldin -Date: Tue, 30 Jan 2018 16:42:32 +0200 -Subject: [PATCH 11/89] glibc: minimal readme for toil builder - -Signed-off-by: Pavel Boldin ---- - packages/rhel7/glibc/glibc-2.17-55.el7/README.md | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - create mode 100644 packages/rhel7/glibc/glibc-2.17-55.el7/README.md - -diff --git a/packages/rhel7/glibc/glibc-2.17-55.el7/README.md b/packages/rhel7/glibc/glibc-2.17-55.el7/README.md -new file mode 100644 -index 0000000..740d294 ---- /dev/null -+++ b/packages/rhel7/glibc/glibc-2.17-55.el7/README.md -@@ -0,0 +1,16 @@ -+Use toil-based build script to build patches for the `glibc`. For that simple -+run:: -+ -+```shell -+$ LIBCARE_DIR=~/libcare-opensource -+$ pip install -r $LIBCARE_DIR/scripts/toil/requirements.txt -+$ python $LIBCARE_DIR/scripts/toil/pkgbuild.py workdir pkgfile.yaml -+... -+``` -+ -+This should build the following files: -+```shell -+$ ls /tmp/build.orig-glibc-2.17-55.el7.x86_64.rpm.tgz /tmp/kpatch-glibc-2.17-55.el7.x86_64.tgz -+/tmp/build.orig-glibc-2.17-55.el7.x86_64.rpm.tgz -+/tmp/kpatch-glibc-2.17-55.el7.x86_64.tgz -+``` --- -2.23.0 - diff --git a/0012-Fix-kpatch_process_init-kpatch_coroutines_free.patch b/0012-Fix-kpatch_process_init-kpatch_coroutines_free.patch deleted file mode 100644 index 4cad170..0000000 --- a/0012-Fix-kpatch_process_init-kpatch_coroutines_free.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 3566489ee43a348f41bb0fd9c779f1064956ea82 Mon Sep 17 00:00:00 2001 -From: Roman Rashchupkin -Date: Thu, 25 Jan 2018 10:18:33 +0300 -Subject: [PATCH 12/89] Fix kpatch_process_init/kpatch_coroutines_free - ---- - src/kpatch_coro.c | 7 ++++--- - src/kpatch_process.c | 4 ++-- - 2 files changed, 6 insertions(+), 5 deletions(-) - -diff --git a/src/kpatch_coro.c b/src/kpatch_coro.c -index ff485fc..45d4a0b 100644 ---- a/src/kpatch_coro.c -+++ b/src/kpatch_coro.c -@@ -622,7 +622,8 @@ void kpatch_coroutines_free(struct kpatch_process *proc) - if (proc->coro.unwd) - unw_destroy_addr_space(proc->coro.unwd); - -- list_for_each_entry_safe(c, tmp, &proc->coro.coros, list) { -- kpatch_coro_free(c); -- } -+ if (!list_empty(&proc->coro.coros)) -+ list_for_each_entry_safe(c, tmp, &proc->coro.coros, list) { -+ kpatch_coro_free(c); -+ } - } -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index d394925..2f85373 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -1121,10 +1121,10 @@ kpatch_process_init(kpatch_process_t *proc, - list_init(&proc->vmaholes); - proc->num_objs = 0; - -- if (process_get_comm(proc)) -- goto out_unlock; - if (kpatch_coroutines_init(proc)) - goto out_unlock; -+ if (process_get_comm(proc)) -+ goto out_unlock; - - return 0; - --- -2.23.0 - diff --git a/0013-Add-libcare-stresstest.patch b/0013-Add-libcare-stresstest.patch deleted file mode 100644 index 314113e..0000000 --- a/0013-Add-libcare-stresstest.patch +++ /dev/null @@ -1,206 +0,0 @@ -From 4cd3610aa11c7b6add5cf090127c522d8004a528 Mon Sep 17 00:00:00 2001 -From: Roman Rashchupkin -Date: Wed, 24 Jan 2018 16:01:51 +0300 -Subject: [PATCH 13/89] Add libcare-stresstest - ---- - src/Makefile | 10 ++++- - src/kpatch_user.c | 106 +++++++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 114 insertions(+), 2 deletions(-) - -diff --git a/src/Makefile b/src/Makefile -index cd766e1..58e942a 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -3,7 +3,8 @@ TARGETS = kpatch_gensrc \ - kpatch_strip \ - libcare-cc \ - libcare-client \ -- libcare-ctl -+ libcare-ctl \ -+ libcare-stresstest - DEBUG = yes # comment out this line if not debug - - CC = gcc -@@ -39,6 +40,10 @@ libcare-ctl: kpatch_user.o kpatch_storage.o kpatch_patch.c kpatch_elf.o kpatch_p - libcare-ctl: kpatch_process.o kpatch_common.o rbtree.o kpatch_log.o - libcare-ctl: LDLIBS += -lelf -lrt $(LIBUNWIND_LIBS) - -+libcare-stresstest: kpatch_user-stresstest.o kpatch_storage.o kpatch_patch.c kpatch_elf.o kpatch_ptrace.o kpatch_coro.o -+libcare-stresstest: kpatch_process.o kpatch_common.o rbtree.o kpatch_log.o -+libcare-stresstest: LDLIBS += -lelf -lrt $(LIBUNWIND_LIBS) -+ - libcare-client: libcare-client.o - - kpatch_strip: kpatch_strip.o kpatch_elf_objinfo.o kpatch_log.o -@@ -61,6 +66,9 @@ endif - %.o: %.c deps/%.d - $(CC) $(CFLAGS) $(CFLAGS_$(*)) -o $(@) -c $(<) - -+%-stresstest.o: %.c -+ $(CC) -DSTRESS_TEST=1 $(CFLAGS) $(CFLAGS_$(*)) -o $(@) -c $(<) -+ - clean: - rm -rf *.o core.* deps/*.d $(TARGETS) - for f in tests/gensrc/*.s; do \ -diff --git a/src/kpatch_user.c b/src/kpatch_user.c -index d257b67..e6649b0 100644 ---- a/src/kpatch_user.c -+++ b/src/kpatch_user.c -@@ -6,6 +6,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -563,6 +564,88 @@ cmd_update(int argc, char *argv[]) - /* send_fd */ -1); - } - -+#ifdef STRESS_TEST -+ -+struct test_data { -+ int option_period; -+ int stat_cycle_num; -+} test_info = { .option_period = 0, .stat_cycle_num = 0 }; -+ -+static int -+server_wait(int pid, int period) -+{ -+ struct timespec req, rem; -+ int i; -+ req.tv_sec = 0; -+ req.tv_nsec = 1000*1000; -+ for (i=0; i 0) -+ close(fd); -+ fd = -1; -+ if (test_info.option_period == 0) -+ return 0; -+ delay = rand() % test_info.option_period; -+ if (server_wait(pid, delay) < 0) -+ return 0; -+ -+ while (processes_unpatch(pid, 0, 0) < 0) -+ if (server_wait(pid, 1) < 0) -+ return 0; -+ test_info.stat_cycle_num++; -+ -+ delay = rand() % test_info.option_period; -+ if (server_wait(pid, delay) < 0) -+ return 0; -+ } -+ -+ return 0; -+} -+ -+static int cmd_stress_test(int fd, int argc, char *argv[]) -+{ -+ int child = fork(); -+ if (child == 0) { -+ int rv = server_stress_test(fd, argc, argv); -+ exit(rv); -+ } -+ close(fd); -+ return 0; -+} -+ -+static int usage_stresstest() -+{ -+ fprintf(stderr, "usage: libcare-stresstest PERIOD(ms, 0 - only patch) [STORAGE ROOT]\n"); -+ return -1; -+} -+ -+#endif -+ - static int - server_execute_cmd(int fd, int argc, char *argv[]) - { -@@ -572,8 +655,13 @@ server_execute_cmd(int fd, int argc, char *argv[]) - - if (!strcmp(cmd, "execve")) - return cmd_execve_startup(fd, argc, argv, 1); -- if (!strcmp(cmd, "startup")) -+ if (!strcmp(cmd, "startup")) { -+#ifdef STRESS_TEST -+ return cmd_stress_test(fd, argc, argv); -+#else - return cmd_execve_startup(fd, argc, argv, 0); -+#endif -+ } - if (!strcmp(cmd, "update")) - return cmd_update(argc, argv); - if (!strcmp(cmd, "storage")) -@@ -739,6 +827,12 @@ cmd_server(int argc, char *argv[]) - return -1; - } - -+#ifdef STRESS_TEST -+ if (sscanf(argv[0], "%d", &test_info.option_period) != 1) { -+ kplogerror("Can't parse period from %s\n", argv[0]); -+ } -+#endif -+ - sfd = server_bind_socket(argv[1]); - if (sfd < 0) - return sfd; -@@ -824,6 +918,9 @@ static int usage(const char *err) - { - if (err) - fprintf(stderr, "err: %s\n", err); -+#ifdef STRESS_TEST -+ return usage_stresstest(); -+#endif - fprintf(stderr, "usage: libcare-ctl [options] [args]\n"); - fprintf(stderr, "\nOptions:\n"); - fprintf(stderr, " -v - verbose mode\n"); -@@ -872,6 +969,12 @@ int main(int argc, char *argv[]) - argc -= optind; - argv += optind; - -+#ifdef STRESS_TEST -+ if (argc < 3) -+ return usage("not enough arguments."); -+ signal(SIGCHLD, SIG_IGN); -+ return cmd_server(argc, argv); -+#else - if (argc < 1) - return usage("not enough arguments."); - -@@ -879,4 +982,5 @@ int main(int argc, char *argv[]) - return cmd_server(argc, argv); - else - return execute_cmd(argc, argv); -+#endif - } --- -2.23.0 - diff --git a/0014-read-auxv-from-proc-pid-auxv.patch b/0014-read-auxv-from-proc-pid-auxv.patch deleted file mode 100644 index 94c7f62..0000000 --- a/0014-read-auxv-from-proc-pid-auxv.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 212e98a668117a11aa528e5669189b58dcaacd95 Mon Sep 17 00:00:00 2001 -From: Pavel Boldin -Date: Wed, 7 Feb 2018 09:14:39 +0200 -Subject: [PATCH 14/89] read auxv from /proc/pid/auxv - -Signed-off-by: Pavel Boldin ---- - src/kpatch_ptrace.c | 54 +++++++++++++++++---------------------------- - 1 file changed, 20 insertions(+), 34 deletions(-) - -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index f732004..f91b80e 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -143,55 +143,41 @@ int kpatch_process_mem_iter_peek_ulong(struct process_mem_iter *iter, - return kpatch_process_mem_iter_peek(iter, dst, sizeof(*dst), remote_addr); - } - --/* FIXME(pboldin): read these from /proc/pid/auxv */ - int kpatch_ptrace_get_entry_point(struct kpatch_ptrace_ctx *pctx, - unsigned long *pentry_point) - { -- int ret; -- unsigned long *rstack, val; -- struct user_regs_struct regs; -- struct process_mem_iter *iter; -+ int fd, ret; -+ unsigned long entry[2] = { AT_NULL, 0 }; -+ char path[sizeof("/proc/0123456789/auxv")]; - - kpdebug("Looking for entry point..."); - -- ret = ptrace(PTRACE_GETREGS, pctx->pid, NULL, ®s); -- if (ret < 0) { -- kplogerror("can't get regs\n"); -- return -1; -- } -- -- iter = kpatch_process_mem_iter_init(pctx->proc); -- if (!iter) { -- kplogerror("can't allocate iterator\n"); -+ sprintf(path, "/proc/%d/auxv", pctx->pid); -+ fd = open(path, O_RDONLY); -+ if (fd == -1) { -+ kplogerror("can't open %s\n", path); - return -1; - } - -- /* Read stack and look for AUX data */ -- rstack = (unsigned long*)regs.rsp; -- -- /* rstack now points to envs */ -- rstack += PEEK_ULONG(rstack) + 2; -- -- /* Skip envs */ -- for (; PEEK_ULONG(rstack); rstack++) -- continue; -+ do { -+ ret = read(fd, entry, sizeof(entry)); -+ if (ret < 0 && errno == EINTR) -+ continue; -+ if (ret != sizeof(entry)) -+ break; - -- /* Now got to AUX */ -- for (rstack++; (val = PEEK_ULONG(rstack)) != AT_NULL; rstack += 2) { -- if (val == AT_ENTRY) { -- *pentry_point = PEEK_ULONG(rstack + 1); -+ if (entry[0] == AT_ENTRY) { -+ *pentry_point = entry[1]; - break; - } -- } -+ } while (1); - -- if (val != AT_ENTRY) -- kpdebug("FAIL\n"); -- else -- kpdebug("OK\n"); -+ if (ret < 0) -+ kplogerror("reading %s\n", path); - -- kpatch_process_mem_iter_free(iter); -+ close(fd); - -- return val == AT_ENTRY ? 0 : -1; -+ return entry[0] == AT_ENTRY ? 0 : -1; - } - - #define BREAK_INSN_LENGTH 1 --- -2.23.0 - diff --git a/0015-add-fail-to-unpatch-test.patch b/0015-add-fail-to-unpatch-test.patch deleted file mode 100644 index d21ea94..0000000 --- a/0015-add-fail-to-unpatch-test.patch +++ /dev/null @@ -1,147 +0,0 @@ -From f25aa052cd31cab4c6301cca5eb8e5e5f129d5bd Mon Sep 17 00:00:00 2001 -From: Pavel Boldin -Date: Wed, 7 Feb 2018 23:59:39 +0200 -Subject: [PATCH 15/89] add `fail to unpatch` test - -Add a test sample where patch is always busy in the loop and cannot -be unapplied. - -Signed-off-by: Pavel Boldin ---- - tests/fail_unpatch/Makefile | 4 ++++ - tests/fail_unpatch/desc | 1 + - tests/fail_unpatch/fail_unpatch.c | 29 ++++++++++++++++++++++++++++ - tests/fail_unpatch/fail_unpatch.diff | 11 +++++++++++ - tests/run_tests.sh | 25 ++++++++++++++++++++++-- - 5 files changed, 68 insertions(+), 2 deletions(-) - create mode 100644 tests/fail_unpatch/Makefile - create mode 100644 tests/fail_unpatch/desc - create mode 100644 tests/fail_unpatch/fail_unpatch.c - create mode 100644 tests/fail_unpatch/fail_unpatch.diff - -diff --git a/tests/fail_unpatch/Makefile b/tests/fail_unpatch/Makefile -new file mode 100644 -index 0000000..d7680e9 ---- /dev/null -+++ b/tests/fail_unpatch/Makefile -@@ -0,0 +1,4 @@ -+ -+LDLIBS:=-lpthread -+ -+include ../makefile.inc -diff --git a/tests/fail_unpatch/desc b/tests/fail_unpatch/desc -new file mode 100644 -index 0000000..02151c5 ---- /dev/null -+++ b/tests/fail_unpatch/desc -@@ -0,0 +1 @@ -+fails to unpatch the code -diff --git a/tests/fail_unpatch/fail_unpatch.c b/tests/fail_unpatch/fail_unpatch.c -new file mode 100644 -index 0000000..6b5c50f ---- /dev/null -+++ b/tests/fail_unpatch/fail_unpatch.c -@@ -0,0 +1,29 @@ -+#include -+#include -+ -+void print_greetings_patched(void) -+{ -+ while (1) { -+ printf("Hello. This a PATCHED version!\n"); -+ sleep(1); -+ } -+} -+ -+void print_greetings(void) -+{ -+ printf("Hello. This is an UNPATCHED version!\n"); -+} -+ -+void do_work() { -+ while (1) { -+ print_greetings(); -+ sleep(1); -+ } -+} -+ -+int main() -+{ -+ do_work(); -+ -+ return 0; -+} -diff --git a/tests/fail_unpatch/fail_unpatch.diff b/tests/fail_unpatch/fail_unpatch.diff -new file mode 100644 -index 0000000..49738bd ---- /dev/null -+++ b/tests/fail_unpatch/fail_unpatch.diff -@@ -0,0 +1,11 @@ -+--- ./fail_unpatch.c 2018-02-07 18:39:27.145493215 +0200 -++++ ./fail_unpatch.c 2018-02-07 18:39:43.349482218 +0200 -+@@ -11,7 +11,7 @@ -+ -+ void print_greetings(void) -+ { -+- printf("Hello. This is an UNPATCHED version!\n"); -++ print_greetings_patched(); -+ } -+ -+ void do_work() { -diff --git a/tests/run_tests.sh b/tests/run_tests.sh -index fbfb273..2bdd303 100755 ---- a/tests/run_tests.sh -+++ b/tests/run_tests.sh -@@ -105,6 +105,10 @@ check_result() { - ! grep_tail 'UNPATCHED' - return $? - ;; -+ fail_unpatch) -+ grep_tail '\${outfile}_patched -+ cat ${outfile}_patched - -+ echo "============unpatching===============" >>$logfile - libcare_ctl unpatch-user -p $pid \ -- >$logfile 2>&1 || : -+ >>$logfile 2>&1 || : - - sleep 2 - --- -2.23.0 - diff --git a/0016-Waitpid-for-finished-threads-after-detach.patch b/0016-Waitpid-for-finished-threads-after-detach.patch deleted file mode 100644 index 06e525d..0000000 --- a/0016-Waitpid-for-finished-threads-after-detach.patch +++ /dev/null @@ -1,67 +0,0 @@ -From b6b35d80755caed0528dfdf3825ecf055fe9ea76 Mon Sep 17 00:00:00 2001 -From: Roman Rashchupkin -Date: Wed, 28 Feb 2018 23:05:50 +0300 -Subject: [PATCH 16/89] Waitpid for finished threads after detach. - ---- - src/kpatch_process.c | 14 +++++++++++++- - src/kpatch_ptrace.c | 2 +- - 2 files changed, 14 insertions(+), 2 deletions(-) - -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index 2f85373..5c0374a 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -12,6 +12,11 @@ - #include - #include - -+#include -+#include -+#include -+#include -+ - #include - #include - #include -@@ -537,6 +542,8 @@ static void - process_detach(kpatch_process_t *proc) - { - struct kpatch_ptrace_ctx *p, *ptmp; -+ int status; -+ pid_t pid; - - if (proc->memfd >= 0 && close(proc->memfd) < 0) - kplogerror("can't close memfd"); -@@ -546,9 +553,14 @@ process_detach(kpatch_process_t *proc) - unw_destroy_addr_space(proc->ptrace.unwd); - - list_for_each_entry_safe(p, ptmp, &proc->ptrace.pctxs, list) { -- kpatch_ptrace_detach(p); -+ if (kpatch_ptrace_detach(p) == -ESRCH) { -+ do { -+ pid = waitpid(p->pid, &status, __WALL); -+ } while (pid > 0 && !WIFEXITED(status)); -+ } - kpatch_ptrace_ctx_destroy(p); - } -+ kpinfo("Finished ptrace detaching."); - } - - static int -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index f91b80e..a5f61b3 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -1186,7 +1186,7 @@ int kpatch_ptrace_detach(struct kpatch_ptrace_ctx *pctx) - ret = ptrace(PTRACE_DETACH, pctx->pid, NULL, NULL); - if (ret < 0) { - kplogerror("can't detach from %d\n", pctx->pid); -- return -1; -+ return -errno; - } - - kpdebug("OK\n"); --- -2.23.0 - diff --git a/0017-.gitignore-build-artefacts.patch b/0017-.gitignore-build-artefacts.patch deleted file mode 100644 index 9634ca4..0000000 --- a/0017-.gitignore-build-artefacts.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 90a310f57710abb3f5e41c431d26e77fef63ad2b Mon Sep 17 00:00:00 2001 -From: Pavel Boldin -Date: Thu, 13 Sep 2018 12:00:02 +0300 -Subject: [PATCH 17/89] .gitignore build artefacts - -Signed-off-by: Pavel Boldin ---- - .gitignore | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/.gitignore b/.gitignore -index 5761abc..065f093 100644 ---- a/.gitignore -+++ b/.gitignore -@@ -1 +1,10 @@ - *.o -+*.d -+src/kpatch_gensrc -+src/kpatch_make -+src/kpatch_strip -+src/libcare-cc -+src/libcare-client -+src/libcare-ctl -+src/libcare-stresstest -+tags --- -2.23.0 - diff --git a/0018-kpatch_storage-put-an-end-to-description-string-load.patch b/0018-kpatch_storage-put-an-end-to-description-string-load.patch deleted file mode 100644 index 3bf9df5..0000000 --- a/0018-kpatch_storage-put-an-end-to-description-string-load.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 3954dd43124e87c788352ccc528cc79e8fca6f6d Mon Sep 17 00:00:00 2001 -From: YiFan -Date: Tue, 13 Aug 2019 11:02:36 +0800 -Subject: [PATCH 18/89] kpatch_storage: put an end to description string loaded - -Description string should be ended up with a '\0'. ---- - src/kpatch_storage.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c -index a466460..2375559 100644 ---- a/src/kpatch_storage.c -+++ b/src/kpatch_storage.c -@@ -377,8 +377,10 @@ char *storage_get_description(kpatch_storage_t *storage, - if (rv == -1) - goto err_free; - -- if (rv == 0) -+ if (rv == 0) { -+ desc[sz] = '\0'; - break; -+ } - - sz += rv; - } --- -2.23.0 - diff --git a/0019-Fix-README-files.patch b/0019-Fix-README-files.patch deleted file mode 100644 index 54db1ac..0000000 --- a/0019-Fix-README-files.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 43e10a5ef1db3c56a872e3a61edaf224b51822f0 Mon Sep 17 00:00:00 2001 -From: Pavel Artsishevsky -Date: Tue, 18 Feb 2020 15:21:26 +0300 -Subject: [PATCH 19/89] Fix README files - -- Update patch build instructions for GHOST sample; -- Add Travis CI status image to main readme file. ---- - README.rst | 3 +++ - samples/ghost/README.rst | 11 +++++++++++ - 2 files changed, 14 insertions(+) - -diff --git a/README.rst b/README.rst -index 927325d..932b7c5 100644 ---- a/README.rst -+++ b/README.rst -@@ -1,6 +1,9 @@ - LibCare -- Patch Userspace Code on Live Processes - ================================================= - -+.. image:: https://travis-ci.org/cloudlinux/libcare.svg?branch=master -+ :target: https://travis-ci.org/cloudlinux/libcare -+ - Welcome to LibCare --- Live Patch Updates for Userspace Processes and Libraries. - - LibCare delivers live patches to any of your Linux executables or libraries at -diff --git a/samples/ghost/README.rst b/samples/ghost/README.rst -index da97926..e274b54 100644 ---- a/samples/ghost/README.rst -+++ b/samples/ghost/README.rst -@@ -32,6 +32,17 @@ Now, from inside the container let's install vulnerable version of glibc: - glibc-headers-2.17-55.el7 glibc-common-2.17-55.el7 - ... - -+Also we have to downgrade elfutils since newer versions of ``eu-unstrip`` -+fail to work with glibc utilities: -+ -+.. code:: console -+ -+ [root@... /]# yum downgrade -y --enablerepo=C7.0.1406-base \ -+ elfutils-devel-0.158-3.el7.x86_64 elfutils-0.158-3.el7.x86_64 \ -+ elfutils-libs-0.158-3.el7.x86_64 elfutils-libelf-0.158-3.el7.x86_64 \ -+ elfutils-libelf-devel-0.158-3.el7.x86_64 -+ ... -+ - Build the ``libcare`` tools: - - .. code:: console --- -2.23.0 - diff --git a/0020-include-Create-include-directory-for-header-files.patch b/0020-include-Create-include-directory-for-header-files.patch deleted file mode 100644 index 7890a97..0000000 --- a/0020-include-Create-include-directory-for-header-files.patch +++ /dev/null @@ -1,129 +0,0 @@ -From ca5872b354b7987ce2dfd6f5268771268ad006d0 Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Sat, 10 Oct 2020 16:46:38 +0800 -Subject: [PATCH 20/89] include: Create include directory for header files - -Move all header files from src directory into newly created include directory - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/{ => include}/kpatch_common.h | 0 - src/{ => include}/kpatch_coro.h | 0 - src/{ => include}/kpatch_dbgfilter.h | 0 - src/{ => include}/kpatch_elf.h | 0 - src/{ => include}/kpatch_elf_objinfo.h | 0 - src/{ => include}/kpatch_file.h | 0 - src/{ => include}/kpatch_flags.h | 0 - src/{ => include}/kpatch_io.h | 0 - src/{ => include}/kpatch_log.h | 0 - src/{ => include}/kpatch_parse.h | 0 - src/{ => include}/kpatch_patch.h | 0 - src/{ => include}/kpatch_process.h | 0 - src/{ => include}/kpatch_ptrace.h | 0 - src/{ => include}/kpatch_storage.h | 0 - src/{ => include}/kpatch_str.h | 0 - src/{ => include}/kpatch_user.h | 0 - src/{ => include}/list.h | 0 - src/{ => include}/rbtree.h | 0 - src/{ => include}/util.h | 0 - 19 files changed, 0 insertions(+), 0 deletions(-) - rename src/{ => include}/kpatch_common.h (100%) - rename src/{ => include}/kpatch_coro.h (100%) - rename src/{ => include}/kpatch_dbgfilter.h (100%) - rename src/{ => include}/kpatch_elf.h (100%) - rename src/{ => include}/kpatch_elf_objinfo.h (100%) - rename src/{ => include}/kpatch_file.h (100%) - rename src/{ => include}/kpatch_flags.h (100%) - rename src/{ => include}/kpatch_io.h (100%) - rename src/{ => include}/kpatch_log.h (100%) - rename src/{ => include}/kpatch_parse.h (100%) - rename src/{ => include}/kpatch_patch.h (100%) - rename src/{ => include}/kpatch_process.h (100%) - rename src/{ => include}/kpatch_ptrace.h (100%) - rename src/{ => include}/kpatch_storage.h (100%) - rename src/{ => include}/kpatch_str.h (100%) - rename src/{ => include}/kpatch_user.h (100%) - rename src/{ => include}/list.h (100%) - rename src/{ => include}/rbtree.h (100%) - rename src/{ => include}/util.h (100%) - -diff --git a/src/kpatch_common.h b/src/include/kpatch_common.h -similarity index 100% -rename from src/kpatch_common.h -rename to src/include/kpatch_common.h -diff --git a/src/kpatch_coro.h b/src/include/kpatch_coro.h -similarity index 100% -rename from src/kpatch_coro.h -rename to src/include/kpatch_coro.h -diff --git a/src/kpatch_dbgfilter.h b/src/include/kpatch_dbgfilter.h -similarity index 100% -rename from src/kpatch_dbgfilter.h -rename to src/include/kpatch_dbgfilter.h -diff --git a/src/kpatch_elf.h b/src/include/kpatch_elf.h -similarity index 100% -rename from src/kpatch_elf.h -rename to src/include/kpatch_elf.h -diff --git a/src/kpatch_elf_objinfo.h b/src/include/kpatch_elf_objinfo.h -similarity index 100% -rename from src/kpatch_elf_objinfo.h -rename to src/include/kpatch_elf_objinfo.h -diff --git a/src/kpatch_file.h b/src/include/kpatch_file.h -similarity index 100% -rename from src/kpatch_file.h -rename to src/include/kpatch_file.h -diff --git a/src/kpatch_flags.h b/src/include/kpatch_flags.h -similarity index 100% -rename from src/kpatch_flags.h -rename to src/include/kpatch_flags.h -diff --git a/src/kpatch_io.h b/src/include/kpatch_io.h -similarity index 100% -rename from src/kpatch_io.h -rename to src/include/kpatch_io.h -diff --git a/src/kpatch_log.h b/src/include/kpatch_log.h -similarity index 100% -rename from src/kpatch_log.h -rename to src/include/kpatch_log.h -diff --git a/src/kpatch_parse.h b/src/include/kpatch_parse.h -similarity index 100% -rename from src/kpatch_parse.h -rename to src/include/kpatch_parse.h -diff --git a/src/kpatch_patch.h b/src/include/kpatch_patch.h -similarity index 100% -rename from src/kpatch_patch.h -rename to src/include/kpatch_patch.h -diff --git a/src/kpatch_process.h b/src/include/kpatch_process.h -similarity index 100% -rename from src/kpatch_process.h -rename to src/include/kpatch_process.h -diff --git a/src/kpatch_ptrace.h b/src/include/kpatch_ptrace.h -similarity index 100% -rename from src/kpatch_ptrace.h -rename to src/include/kpatch_ptrace.h -diff --git a/src/kpatch_storage.h b/src/include/kpatch_storage.h -similarity index 100% -rename from src/kpatch_storage.h -rename to src/include/kpatch_storage.h -diff --git a/src/kpatch_str.h b/src/include/kpatch_str.h -similarity index 100% -rename from src/kpatch_str.h -rename to src/include/kpatch_str.h -diff --git a/src/kpatch_user.h b/src/include/kpatch_user.h -similarity index 100% -rename from src/kpatch_user.h -rename to src/include/kpatch_user.h -diff --git a/src/list.h b/src/include/list.h -similarity index 100% -rename from src/list.h -rename to src/include/list.h -diff --git a/src/rbtree.h b/src/include/rbtree.h -similarity index 100% -rename from src/rbtree.h -rename to src/include/rbtree.h -diff --git a/src/util.h b/src/include/util.h -similarity index 100% -rename from src/util.h -rename to src/include/util.h --- -2.23.0 - diff --git a/0021-src-Update-header-file-position.patch b/0021-src-Update-header-file-position.patch deleted file mode 100644 index f15ef13..0000000 --- a/0021-src-Update-header-file-position.patch +++ /dev/null @@ -1,373 +0,0 @@ -From 64f163e9bd26b0af65f12e7cc4205da0d787e7fc Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Sat, 10 Oct 2020 16:50:15 +0800 -Subject: [PATCH 21/89] src: Update header file position - -Update header file positon with include prefix to source file in src directory. - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/kpatch_common.c | 6 +++--- - src/kpatch_coro.c | 12 ++++++------ - src/kpatch_dbgfilter.c | 6 +++--- - src/kpatch_elf.c | 14 +++++++------- - src/kpatch_elf_objinfo.c | 6 +++--- - src/kpatch_gensrc.c | 8 ++++---- - src/kpatch_io.c | 6 +++--- - src/kpatch_log.c | 2 +- - src/kpatch_make.c | 2 +- - src/kpatch_parse.c | 6 +++--- - src/kpatch_patch.c | 20 ++++++++++---------- - src/kpatch_process.c | 14 +++++++------- - src/kpatch_ptrace.c | 8 ++++---- - src/kpatch_storage.c | 14 +++++++------- - src/kpatch_strip.c | 8 ++++---- - src/kpatch_user.c | 18 +++++++++--------- - src/rbtree.c | 2 +- - 17 files changed, 76 insertions(+), 76 deletions(-) - -diff --git a/src/kpatch_common.c b/src/kpatch_common.c -index 99bc0b3..95d4a54 100644 ---- a/src/kpatch_common.c -+++ b/src/kpatch_common.c -@@ -6,9 +6,9 @@ - #include - #include - --#include "kpatch_file.h" --#include "kpatch_common.h" --#include "kpatch_log.h" -+#include "include/kpatch_file.h" -+#include "include/kpatch_common.h" -+#include "include/kpatch_log.h" - - int kpatch_openat_file(int atfd, const char *fname, struct kp_file *kpatch) - { -diff --git a/src/kpatch_coro.c b/src/kpatch_coro.c -index 45d4a0b..02d421b 100644 ---- a/src/kpatch_coro.c -+++ b/src/kpatch_coro.c -@@ -8,12 +8,12 @@ - - #include - --#include "kpatch_user.h" --#include "kpatch_coro.h" --#include "kpatch_common.h" --#include "kpatch_elf.h" --#include "kpatch_ptrace.h" --#include "kpatch_log.h" -+#include "include/kpatch_user.h" -+#include "include/kpatch_coro.h" -+#include "include/kpatch_common.h" -+#include "include/kpatch_elf.h" -+#include "include/kpatch_ptrace.h" -+#include "include/kpatch_log.h" - - /* Indicates that the next CORO flavours should be tried */ - #define CORO_SEARCH_NEXT (1<<31) -diff --git a/src/kpatch_dbgfilter.c b/src/kpatch_dbgfilter.c -index 73a9bc3..d385c18 100644 ---- a/src/kpatch_dbgfilter.c -+++ b/src/kpatch_dbgfilter.c -@@ -1,9 +1,9 @@ - #include - #include - --#include "kpatch_parse.h" --#include "kpatch_str.h" --#include "kpatch_dbgfilter.h" -+#include "include/kpatch_parse.h" -+#include "include/kpatch_str.h" -+#include "include/kpatch_dbgfilter.h" - - static int is_cold_hot(char *s) - { -diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c -index e42642b..b1dfed0 100644 ---- a/src/kpatch_elf.c -+++ b/src/kpatch_elf.c -@@ -7,13 +7,13 @@ - - #include - --#include "kpatch_common.h" --#include "kpatch_user.h" --#include "kpatch_process.h" --#include "kpatch_elf.h" --#include "kpatch_file.h" --#include "kpatch_ptrace.h" --#include "kpatch_log.h" -+#include "include/kpatch_common.h" -+#include "include/kpatch_user.h" -+#include "include/kpatch_process.h" -+#include "include/kpatch_elf.h" -+#include "include/kpatch_file.h" -+#include "include/kpatch_ptrace.h" -+#include "include/kpatch_log.h" - - static int - elf_object_peek_phdr(struct object_file *o) -diff --git a/src/kpatch_elf_objinfo.c b/src/kpatch_elf_objinfo.c -index 65b7144..c967c37 100644 ---- a/src/kpatch_elf_objinfo.c -+++ b/src/kpatch_elf_objinfo.c -@@ -4,9 +4,9 @@ - - #include - --#include "kpatch_common.h" --#include "kpatch_elf_objinfo.h" --#include "kpatch_log.h" -+#include "include/kpatch_common.h" -+#include "include/kpatch_elf_objinfo.h" -+#include "include/kpatch_log.h" - - const char *kpatch_objinfo_strptr(kpatch_objinfo *oi, int type, size_t nameidx) - { -diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c -index a15fa2c..a16b652 100644 ---- a/src/kpatch_gensrc.c -+++ b/src/kpatch_gensrc.c -@@ -4,10 +4,10 @@ - #include - #include - --#include "kpatch_log.h" --#include "kpatch_parse.h" --#include "kpatch_dbgfilter.h" --#include "kpatch_flags.h" -+#include "include/kpatch_log.h" -+#include "include/kpatch_parse.h" -+#include "include/kpatch_dbgfilter.h" -+#include "include/kpatch_flags.h" - - #define OS_RHEL5 1 - #define OS_RHEL6 2 -diff --git a/src/kpatch_io.c b/src/kpatch_io.c -index 663bed0..7bdc298 100644 ---- a/src/kpatch_io.c -+++ b/src/kpatch_io.c -@@ -4,9 +4,9 @@ - #include - #include - --#include "kpatch_log.h" --#include "kpatch_io.h" --#include "kpatch_str.h" -+#include "include/kpatch_log.h" -+#include "include/kpatch_io.h" -+#include "include/kpatch_str.h" - - void *kp_realloc(void *p, int oldsz, int newsz) - { -diff --git a/src/kpatch_log.c b/src/kpatch_log.c -index de80f7b..6e48de4 100644 ---- a/src/kpatch_log.c -+++ b/src/kpatch_log.c -@@ -4,7 +4,7 @@ - #include - #include - --#include "kpatch_log.h" -+#include "include/kpatch_log.h" - - int log_level = LOG_INFO; - int log_indent; -diff --git a/src/kpatch_make.c b/src/kpatch_make.c -index c584b06..6a173e6 100644 ---- a/src/kpatch_make.c -+++ b/src/kpatch_make.c -@@ -9,7 +9,7 @@ - #include - #include - --#include "kpatch_file.h" -+#include "include/kpatch_file.h" - - #define ALIGN(x, align) ((x + align - 1) & (~(align - 1))) - -diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c -index 358916b..dfb3109 100644 ---- a/src/kpatch_parse.c -+++ b/src/kpatch_parse.c -@@ -1,8 +1,8 @@ - #include - --#include "kpatch_log.h" --#include "kpatch_parse.h" --#include "kpatch_flags.h" -+#include "include/kpatch_log.h" -+#include "include/kpatch_parse.h" -+#include "include/kpatch_flags.h" - - char *cline(struct kp_file *f, int l) - { -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index e32c702..21a160a 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -10,16 +10,16 @@ - #include - #include - --#include "kpatch_patch.h" --#include "kpatch_user.h" --#include "kpatch_storage.h" --#include "kpatch_process.h" --#include "kpatch_file.h" --#include "kpatch_common.h" --#include "kpatch_elf.h" --#include "kpatch_ptrace.h" --#include "list.h" --#include "kpatch_log.h" -+#include "include/kpatch_patch.h" -+#include "include/kpatch_user.h" -+#include "include/kpatch_storage.h" -+#include "include/kpatch_process.h" -+#include "include/kpatch_file.h" -+#include "include/kpatch_common.h" -+#include "include/kpatch_elf.h" -+#include "include/kpatch_ptrace.h" -+#include "include/list.h" -+#include "include/kpatch_log.h" - - - static inline int -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index 5c0374a..3f7f2f6 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -23,13 +23,13 @@ - - #include - --#include "kpatch_process.h" --#include "kpatch_file.h" --#include "kpatch_common.h" --#include "kpatch_elf.h" --#include "kpatch_ptrace.h" --#include "list.h" --#include "kpatch_log.h" -+#include "include/kpatch_process.h" -+#include "include/kpatch_file.h" -+#include "include/kpatch_common.h" -+#include "include/kpatch_elf.h" -+#include "include/kpatch_ptrace.h" -+#include "include/list.h" -+#include "include/kpatch_log.h" - - /* - * Locks process by opening /proc//maps -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index a5f61b3..8910aa8 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -15,10 +15,10 @@ - #include - #include - --#include "kpatch_process.h" --#include "kpatch_common.h" --#include "kpatch_ptrace.h" --#include "kpatch_log.h" -+#include "include/kpatch_process.h" -+#include "include/kpatch_common.h" -+#include "include/kpatch_ptrace.h" -+#include "include/kpatch_log.h" - - #include - -diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c -index 2375559..9165cbf 100644 ---- a/src/kpatch_storage.c -+++ b/src/kpatch_storage.c -@@ -10,13 +10,13 @@ - #include - #include - --#include "kpatch_storage.h" --#include "kpatch_file.h" --#include "kpatch_common.h" --#include "kpatch_elf.h" --#include "kpatch_ptrace.h" --#include "list.h" --#include "kpatch_log.h" -+#include "include/kpatch_storage.h" -+#include "include/kpatch_file.h" -+#include "include/kpatch_common.h" -+#include "include/kpatch_elf.h" -+#include "include/kpatch_ptrace.h" -+#include "include/list.h" -+#include "include/kpatch_log.h" - - - /***************************************************************************** -diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c -index b4de32d..6ad56a3 100644 ---- a/src/kpatch_strip.c -+++ b/src/kpatch_strip.c -@@ -7,13 +7,13 @@ - #include - #include - #include --#include "kpatch_file.h" --#include "kpatch_common.h" -+#include "include/kpatch_file.h" -+#include "include/kpatch_common.h" - - #include --#include "kpatch_elf_objinfo.h" -+#include "include/kpatch_elf_objinfo.h" - --#include "kpatch_log.h" -+#include "include/kpatch_log.h" - - #define ALIGN(off,sz) (((off)+(sz)-1)&~((sz)-1)) - -diff --git a/src/kpatch_user.c b/src/kpatch_user.c -index e6649b0..11e3408 100644 ---- a/src/kpatch_user.c -+++ b/src/kpatch_user.c -@@ -16,15 +16,15 @@ - #include - #include - --#include "kpatch_user.h" --#include "kpatch_storage.h" --#include "kpatch_patch.h" --#include "kpatch_process.h" --#include "kpatch_file.h" --#include "kpatch_common.h" --#include "kpatch_elf.h" --#include "list.h" --#include "kpatch_log.h" -+#include "include/kpatch_user.h" -+#include "include/kpatch_storage.h" -+#include "include/kpatch_patch.h" -+#include "include/kpatch_process.h" -+#include "include/kpatch_file.h" -+#include "include/kpatch_common.h" -+#include "include/kpatch_elf.h" -+#include "include/list.h" -+#include "include/kpatch_log.h" - - /* Global variables */ - static char storage_dir[PATH_MAX] = "/var/lib/libcare"; -diff --git a/src/rbtree.c b/src/rbtree.c -index fee5844..6aff1d1 100644 ---- a/src/rbtree.c -+++ b/src/rbtree.c -@@ -21,7 +21,7 @@ - linux/lib/rbtree.c - */ - --#include "rbtree.h" -+#include "include/rbtree.h" - - /* - * red-black trees properties: http://en.wikipedia.org/wiki/Rbtree --- -2.23.0 - diff --git a/0022-arch-Create-arch-directory-to-support-multi-arch.patch b/0022-arch-Create-arch-directory-to-support-multi-arch.patch deleted file mode 100644 index 5399258..0000000 --- a/0022-arch-Create-arch-directory-to-support-multi-arch.patch +++ /dev/null @@ -1,73 +0,0 @@ -From b0d5f7f4e15bd19e7dc055b3f24171a3b14aa445 Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Sat, 10 Oct 2020 16:59:16 +0800 -Subject: [PATCH 22/89] arch: Create arch directory to support multi-arch - -Create directory arch/aarch64 and arch/x86 hold arch-related source files. -Create arch-related source files in libcare. -Files list below are architecture dependent: - arch_coro.c - arch_elf.c - arch_parse.c - arch_patch.c - arch_ptrace.c - arch_process.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_coro.c | 0 - src/arch/aarch64/arch_elf.c | 0 - src/arch/aarch64/arch_parse.c | 0 - src/arch/aarch64/arch_patch.c | 0 - src/arch/aarch64/arch_ptrace.c | 0 - src/arch/x86/arch_coro.c | 0 - src/arch/x86/arch_elf.c | 0 - src/arch/x86/arch_parse.c | 0 - src/arch/x86/arch_patch.c | 0 - src/arch/x86/arch_ptrace.c | 0 - 10 files changed, 0 insertions(+), 0 deletions(-) - create mode 100644 src/arch/aarch64/arch_coro.c - create mode 100644 src/arch/aarch64/arch_elf.c - create mode 100644 src/arch/aarch64/arch_parse.c - create mode 100644 src/arch/aarch64/arch_patch.c - create mode 100644 src/arch/aarch64/arch_ptrace.c - create mode 100644 src/arch/x86/arch_coro.c - create mode 100644 src/arch/x86/arch_elf.c - create mode 100644 src/arch/x86/arch_parse.c - create mode 100644 src/arch/x86/arch_patch.c - create mode 100644 src/arch/x86/arch_ptrace.c - -diff --git a/src/arch/aarch64/arch_coro.c b/src/arch/aarch64/arch_coro.c -new file mode 100644 -index 0000000..e69de29 -diff --git a/src/arch/aarch64/arch_elf.c b/src/arch/aarch64/arch_elf.c -new file mode 100644 -index 0000000..e69de29 -diff --git a/src/arch/aarch64/arch_parse.c b/src/arch/aarch64/arch_parse.c -new file mode 100644 -index 0000000..e69de29 -diff --git a/src/arch/aarch64/arch_patch.c b/src/arch/aarch64/arch_patch.c -new file mode 100644 -index 0000000..e69de29 -diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c -new file mode 100644 -index 0000000..e69de29 -diff --git a/src/arch/x86/arch_coro.c b/src/arch/x86/arch_coro.c -new file mode 100644 -index 0000000..e69de29 -diff --git a/src/arch/x86/arch_elf.c b/src/arch/x86/arch_elf.c -new file mode 100644 -index 0000000..e69de29 -diff --git a/src/arch/x86/arch_parse.c b/src/arch/x86/arch_parse.c -new file mode 100644 -index 0000000..e69de29 -diff --git a/src/arch/x86/arch_patch.c b/src/arch/x86/arch_patch.c -new file mode 100644 -index 0000000..e69de29 -diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c -new file mode 100644 -index 0000000..e69de29 --- -2.23.0 - diff --git a/0023-config-configure-out-the-running-arch.patch b/0023-config-configure-out-the-running-arch.patch deleted file mode 100644 index 6e2941e..0000000 --- a/0023-config-configure-out-the-running-arch.patch +++ /dev/null @@ -1,26 +0,0 @@ -From d9b5d88e94b8be0100b0fc2ee0054c78fb0737be Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Tue, 13 Oct 2020 09:36:24 +0800 -Subject: [PATCH 23/89] config: configure out the running arch - -To support multi-arch, we need to figure out which architecture we stands on. -So let's get arch type before running the compilation process. - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/config | 2 ++ - 1 file changed, 2 insertions(+) - create mode 100755 src/config - -diff --git a/src/config b/src/config -new file mode 100755 -index 0000000..6c44cf2 ---- /dev/null -+++ b/src/config -@@ -0,0 +1,2 @@ -+#!/bin/bash -+uname -m > arch.desc --- -2.23.0 - diff --git a/0024-Makefile-Adapt-Makefile-for-different-architectures.patch b/0024-Makefile-Adapt-Makefile-for-different-architectures.patch deleted file mode 100644 index 73cf5ad..0000000 --- a/0024-Makefile-Adapt-Makefile-for-different-architectures.patch +++ /dev/null @@ -1,72 +0,0 @@ -From d12c8e57c24649e6c8c74e6dc72f02f54e82aea7 Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Tue, 13 Oct 2020 14:55:53 +0800 -Subject: [PATCH 24/89] Makefile: Adapt Makefile for different architectures - -First take the arch information from config file. Then compile the -right file accroding to the architecture and find right header file -postion from src/include. - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/Makefile | 21 +++++++++++++++------ - 1 file changed, 15 insertions(+), 6 deletions(-) - -diff --git a/src/Makefile b/src/Makefile -index 58e942a..9108a02 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -7,8 +7,10 @@ TARGETS = kpatch_gensrc \ - libcare-stresstest - DEBUG = yes # comment out this line if not debug - -+SRC_PATH := $(shell pwd) -+ - CC = gcc --CFLAGS_MISC = -Wall -g -O2 -D_GNU_SOURCE -+CFLAGS_MISC = -Wall -g -O2 -D_GNU_SOURCE -I $(SRC_PATH) - - cc-option = $(shell if $(CC) $(CFLAGS_MISC) $(1) -S -o /dev/null -xc /dev/null \ - > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;) -@@ -18,6 +20,13 @@ CFLAGS_WARN += $(call cc-option,-Wno-builtin-macro-redefined) - CFLAGS_WARN += $(call cc-option,-Wno-deprecated-declarations) - CFLAGS = $(CFLAGS_MISC) $(CFLAGS_WARN) - -+ARCH := $(shell cat arch.desc) -+ifeq ($(ARCH),aarch64) -+VPATH = arch/aarch64 -+else -+VPATH = arch/x86 -+endif -+ - ifdef DEBUG - CFLAGS += -DDEBUG -O0 -g - endif -@@ -30,18 +39,18 @@ all: $(TARGETS) - - .SUFFIXES: - --kpatch_gensrc: kpatch_gensrc.o kpatch_dbgfilter.o kpatch_parse.o kpatch_io.o rbtree.o kpatch_log.o -+kpatch_gensrc: kpatch_gensrc.o kpatch_dbgfilter.o kpatch_parse.o kpatch_io.o rbtree.o kpatch_log.o arch_parse.o - kpatch_make: kpatch_make.o - - LIBUNWIND_LIBS := $(shell pkg-config --libs libunwind libunwind-ptrace) - - --libcare-ctl: kpatch_user.o kpatch_storage.o kpatch_patch.c kpatch_elf.o kpatch_ptrace.o kpatch_coro.o --libcare-ctl: kpatch_process.o kpatch_common.o rbtree.o kpatch_log.o -+libcare-ctl: kpatch_user.o kpatch_storage.o kpatch_patch.o kpatch_elf.o kpatch_ptrace.o kpatch_coro.o arch_patch.o arch_elf.o arch_ptrace.o arch_coro.o -+libcare-ctl: kpatch_process.o kpatch_common.o rbtree.o kpatch_log.o arch_process.o - libcare-ctl: LDLIBS += -lelf -lrt $(LIBUNWIND_LIBS) - --libcare-stresstest: kpatch_user-stresstest.o kpatch_storage.o kpatch_patch.c kpatch_elf.o kpatch_ptrace.o kpatch_coro.o --libcare-stresstest: kpatch_process.o kpatch_common.o rbtree.o kpatch_log.o -+libcare-stresstest: kpatch_user-stresstest.o kpatch_storage.o kpatch_patch.o kpatch_elf.o kpatch_ptrace.o kpatch_coro.o arch_patch.o arch_elf.o arch_ptrace.o arch_coro.o -+libcare-stresstest: kpatch_process.o kpatch_common.o rbtree.o kpatch_log.o arch_process.o - libcare-stresstest: LDLIBS += -lelf -lrt $(LIBUNWIND_LIBS) - - libcare-client: libcare-client.o --- -2.23.0 - diff --git a/0025-kpatch_parse-Update-asm_directives-for-aarch64.patch b/0025-kpatch_parse-Update-asm_directives-for-aarch64.patch deleted file mode 100644 index 3f411bc..0000000 --- a/0025-kpatch_parse-Update-asm_directives-for-aarch64.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 48a7b69f85710e1db33db994e79fdcd568ceacda Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 10:53:28 +0800 -Subject: [PATCH 25/89] kpatch_parse: Update asm_directives for aarch64 - -Update asm_directives in kpatch_parse.c, because -the golbal identifier in x86 is ".globl" -which is different from the ".global"in aarch64. - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/kpatch_parse.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c -index dfb3109..44e8a60 100644 ---- a/src/kpatch_parse.c -+++ b/src/kpatch_parse.c -@@ -82,6 +82,8 @@ static struct { - { DIRECTIVE_SUBSECTION, ".subsection"}, - - { DIRECTIVE_GLOBL, ".globl"}, -+ { DIRECTIVE_GLOBL, ".global"}, -+ - { DIRECTIVE_LOCAL, ".local"}, - { DIRECTIVE_HIDDEN, ".hidden"}, - { DIRECTIVE_PROTECTED, ".protected"}, --- -2.23.0 - diff --git a/0026-kpatch_parse-Split-function-parse_ctype.patch b/0026-kpatch_parse-Split-function-parse_ctype.patch deleted file mode 100644 index 8f6f377..0000000 --- a/0026-kpatch_parse-Split-function-parse_ctype.patch +++ /dev/null @@ -1,154 +0,0 @@ -From 13dafd93cf011d79f1f4baf2c9035faeb52f4945 Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 13:31:41 +0800 -Subject: [PATCH 26/89] kpatch_parse: Split function parse_ctype - -The parse_ctype function is arch related, so let's make two -separate definations in arch/x86/arch_parse.c and arch/aarch64/arch_parse.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_parse.c | 34 ++++++++++++++++++++++++++++++++++ - src/arch/x86/arch_parse.c | 31 +++++++++++++++++++++++++++++++ - src/include/kpatch_parse.h | 2 ++ - src/kpatch_parse.c | 28 +--------------------------- - 4 files changed, 68 insertions(+), 27 deletions(-) - -diff --git a/src/arch/aarch64/arch_parse.c b/src/arch/aarch64/arch_parse.c -index e69de29..8eb88a9 100644 ---- a/src/arch/aarch64/arch_parse.c -+++ b/src/arch/aarch64/arch_parse.c -@@ -0,0 +1,34 @@ -+#include -+ -+#include "include/kpatch_log.h" -+#include "include/kpatch_parse.h" -+#include "include/kpatch_flags.h" -+ -+int parse_ctype(char *origs, bool with_checks) -+{ -+ char *s = origs; -+ int type; -+ kpstr_t t; -+ -+ s = skip_blanks(s); -+ if (s[0] == '#') -+ return DIRECTIVE_COMMENT; /* Single-line comment */ -+ -+ if (s[0] == '/' && s[1] == '/') -+ return DIRECTIVE_COMMENT; /* Arm disassembly support c style comment */ -+ -+ get_token(&s, &t); -+ type = find_ctype(&t); -+ -+ if (type >= 0) -+ return type; -+ -+ /* -+ * Asm labels starting from digits are local labels, they can be even created multiple times in the same function. -+ * So there is no reason to handle them and bother with renaming at all. It would create conflicts at our brains -+ * and require special tracking and matching... Brrrr.... */ -+ if (s && *s == ':') -+ return !isdigit(t.s[0]) ? DIRECTIVE_LABEL : DIRECTIVE_LOCAL_LABEL; -+ -+ return DIRECTIVE_OTHER; -+} -diff --git a/src/arch/x86/arch_parse.c b/src/arch/x86/arch_parse.c -index e69de29..5a67116 100644 ---- a/src/arch/x86/arch_parse.c -+++ b/src/arch/x86/arch_parse.c -@@ -0,0 +1,31 @@ -+#include -+ -+#include "include/kpatch_log.h" -+#include "include/kpatch_parse.h" -+#include "include/kpatch_flags.h" -+ -+int parse_ctype(char *origs, bool with_checks) -+{ -+ char *s = origs; -+ int type; -+ kpstr_t t; -+ -+ s = skip_blanks(s); -+ if (s[0] == '#') -+ return DIRECTIVE_COMMENT; /* Single-line comment */ -+ -+ get_token(&s, &t); -+ type = find_ctype(&t); -+ -+ if (type >= 0) -+ return type; -+ -+ /* -+ * Asm labels starting from digits are local labels, they can be even created multiple times in the same function. -+ * So there is no reason to handle them and bother with renaming at all. It would create conflicts at our brains -+ * and require special tracking and matching... Brrrr.... */ -+ if (s && *s == ':') -+ return !isdigit(t.s[0]) ? DIRECTIVE_LABEL : DIRECTIVE_LOCAL_LABEL; -+ -+ return DIRECTIVE_OTHER; -+} -diff --git a/src/include/kpatch_parse.h b/src/include/kpatch_parse.h -index 1012d5d..e1b7501 100644 ---- a/src/include/kpatch_parse.h -+++ b/src/include/kpatch_parse.h -@@ -51,6 +51,8 @@ void init_ctypes(struct kp_file *f); - int ctype(struct kp_file *f, int l); - int is_sect_cmd(struct kp_file *f, int l); - -+ -+int find_ctype(kpstr_t *t); - int parse_ctype(char *s, bool with_checks); - - /* ----------------------------------------- sections ----------------------------------------- */ -diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c -index 44e8a60..4bafdb7 100644 ---- a/src/kpatch_parse.c -+++ b/src/kpatch_parse.c -@@ -109,7 +109,7 @@ static void get_type_args(char *s, kpstr_t *nm, kpstr_t *attr) - kpfatal("can't parse .type command"); - } - --static int find_ctype(kpstr_t *t) -+int find_ctype(kpstr_t *t) - { - int i; - for (i = 0; i < (int)(sizeof(asm_directives)/sizeof(asm_directives[0])); i++) { -@@ -119,32 +119,6 @@ static int find_ctype(kpstr_t *t) - return -1; - } - --int parse_ctype(char *origs, bool with_checks) --{ -- char *s = origs; -- int type; -- kpstr_t t; -- -- s = skip_blanks(s); -- if (s[0] == '#') -- return DIRECTIVE_COMMENT; /* Single-line comment */ -- -- get_token(&s, &t); -- type = find_ctype(&t); -- -- if (type >= 0) -- return type; -- -- /* -- * Asm labels starting from digits are local labels, they can be even created multiple times in the same function. -- * So there is no reason to handle them and bother with renaming at all. It would create conflicts at our brains -- * and require special tracking and matching... Brrrr.... */ -- if (s && *s == ':') -- return !isdigit(t.s[0]) ? DIRECTIVE_LABEL : DIRECTIVE_LOCAL_LABEL; -- -- return DIRECTIVE_OTHER; --} -- - int ctype(struct kp_file *f, int l) - { - if (l >= f->nr_lines) --- -2.23.0 - diff --git a/0027-kpatch_parse-Split-function-init_multilines.patch b/0027-kpatch_parse-Split-function-init_multilines.patch deleted file mode 100644 index e4d98b3..0000000 --- a/0027-kpatch_parse-Split-function-init_multilines.patch +++ /dev/null @@ -1,249 +0,0 @@ -From 0e0e7195fca05f706c1701484710fea9fc8b21f5 Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 13:41:06 +0800 -Subject: [PATCH 27/89] kpatch_parse: Split function init_multilines - -The function init_multilines is arch related, so let's make -two definations in arch/x86/arch_parse.c and arch/aarch64/arch_parse.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_parse.c | 67 +++++++++++++++++++++++++++++++++++ - src/arch/x86/arch_parse.c | 65 +++++++++++++++++++++++++++++++++ - src/kpatch_parse.c | 65 --------------------------------- - 3 files changed, 132 insertions(+), 65 deletions(-) - -diff --git a/src/arch/aarch64/arch_parse.c b/src/arch/aarch64/arch_parse.c -index 8eb88a9..1233e03 100644 ---- a/src/arch/aarch64/arch_parse.c -+++ b/src/arch/aarch64/arch_parse.c -@@ -4,6 +4,73 @@ - #include "include/kpatch_parse.h" - #include "include/kpatch_flags.h" - -+/* break manually crafted multiple statements separated by ; to separate lines */ -+void init_multilines(struct kp_file *f) -+{ -+ int i, nr, sz = 64, slen, first_token; -+ char **lines = NULL, *s, *se; -+ int *lines_num = NULL; -+ kpstr_t t; -+ -+ nr = 0; -+ for (i = 0; i < f->nr_lines; i++) { -+ if (nr + 1000 >= sz || !lines) { -+ sz *= 2; -+ lines = kp_realloc(lines, (sz/2) * sizeof(char *), sz * sizeof(char *)); -+ lines_num = kp_realloc(lines_num, (sz/2) * sizeof(int), sz * sizeof(int)); -+ } -+ -+ s = f->lines[i]; -+ if (strpbrk(s, ";:") != NULL) { -+ while (s && *s) { -+ se = s; -+ slen = strlen(s); -+ first_token = 1; -+ while (se) { -+ get_token(&se, &t); -+ if (t.l == 1 && t.s[0] == '#') -+ goto done; -+ if (t.l == 2 && t.s[0] == '/' && t.s[1] == '/') -+ goto done; -+ if (t.l == 1 && t.s[0] == ';') { -+ slen = t.s - s; -+ break; -+ } -+ /* first token with ':' after is -+ * the label, separate it unless -+ * it is done already (next non-blank -+ * is '\0') -+ */ -+ if (first_token && se && -+ se[0] == ':' && -+ se[1] != '\0') { -+ slen = se - s + 1; -+ se++; -+ break; -+ } -+ first_token = 0; -+ } -+ lines[nr] = strndup(s, slen); -+ s = se; -+ lines_num[nr] = i; -+ nr++; -+ if (nr >= sz) -+ kpfatal("oops, not prepared to handle >1000 asm statements in single line"); -+ } -+ free(f->lines[i]); -+ } else { -+done: -+ lines[nr] = s; -+ lines_num[nr] = i; -+ nr++; -+ } -+ } -+ free(f->lines); -+ f->lines = lines; -+ f->lines_num = lines_num; -+ f->nr_lines = nr; -+} -+ - int parse_ctype(char *origs, bool with_checks) - { - char *s = origs; -diff --git a/src/arch/x86/arch_parse.c b/src/arch/x86/arch_parse.c -index 5a67116..92ff483 100644 ---- a/src/arch/x86/arch_parse.c -+++ b/src/arch/x86/arch_parse.c -@@ -4,6 +4,71 @@ - #include "include/kpatch_parse.h" - #include "include/kpatch_flags.h" - -+/* break manually crafted multiple statements separated by ; to separate lines */ -+void init_multilines(struct kp_file *f) -+{ -+ int i, nr, sz = 64, slen, first_token; -+ char **lines = NULL, *s, *se; -+ int *lines_num = NULL; -+ kpstr_t t; -+ -+ nr = 0; -+ for (i = 0; i < f->nr_lines; i++) { -+ if (nr + 1000 >= sz || !lines) { -+ sz *= 2; -+ lines = kp_realloc(lines, (sz/2) * sizeof(char *), sz * sizeof(char *)); -+ lines_num = kp_realloc(lines_num, (sz/2) * sizeof(int), sz * sizeof(int)); -+ } -+ -+ s = f->lines[i]; -+ if (strpbrk(s, ";:") != NULL) { -+ while (s && *s) { -+ se = s; -+ slen = strlen(s); -+ first_token = 1; -+ while (se) { -+ get_token(&se, &t); -+ if (t.l == 1 && t.s[0] == '#') -+ goto done; -+ if (t.l == 1 && t.s[0] == ';') { -+ slen = t.s - s; -+ break; -+ } -+ /* first token with ':' after is -+ * the label, separate it unless -+ * it is done already (next non-blank -+ * is '\0') -+ */ -+ if (first_token && se && -+ se[0] == ':' && -+ se[1] != '\0') { -+ slen = se - s + 1; -+ se++; -+ break; -+ } -+ first_token = 0; -+ } -+ lines[nr] = strndup(s, slen); -+ s = se; -+ lines_num[nr] = i; -+ nr++; -+ if (nr >= sz) -+ kpfatal("oops, not prepared to handle >1000 asm statements in single line"); -+ } -+ free(f->lines[i]); -+ } else { -+done: -+ lines[nr] = s; -+ lines_num[nr] = i; -+ nr++; -+ } -+ } -+ free(f->lines); -+ f->lines = lines; -+ f->lines_num = lines_num; -+ f->nr_lines = nr; -+} -+ - int parse_ctype(char *origs, bool with_checks) - { - char *s = origs; -diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c -index 4bafdb7..857dbf3 100644 ---- a/src/kpatch_parse.c -+++ b/src/kpatch_parse.c -@@ -136,71 +136,6 @@ int is_sect_cmd(struct kp_file *f, int l) - t == DIRECTIVE_PREVIOUS || t == DIRECTIVE_SUBSECTION; - } - --/* break manually crafted multiple statements separated by ; to separate lines */ --void init_multilines(struct kp_file *f) --{ -- int i, nr, sz = 64, slen, first_token; -- char **lines = NULL, *s, *se; -- int *lines_num = NULL; -- kpstr_t t; -- -- nr = 0; -- for (i = 0; i < f->nr_lines; i++) { -- if (nr + 1000 >= sz || !lines) { -- sz *= 2; -- lines = kp_realloc(lines, (sz/2) * sizeof(char *), sz * sizeof(char *)); -- lines_num = kp_realloc(lines_num, (sz/2) * sizeof(int), sz * sizeof(int)); -- } -- -- s = f->lines[i]; -- if (strpbrk(s, ";:") != NULL) { -- while (s && *s) { -- se = s; -- slen = strlen(s); -- first_token = 1; -- while (se) { -- get_token(&se, &t); -- if (t.l == 1 && t.s[0] == '#') -- goto done; -- if (t.l == 1 && t.s[0] == ';') { -- slen = t.s - s; -- break; -- } -- /* first token with ':' after is -- * the label, separate it unless -- * it is done already (next non-blank -- * is '\0') -- */ -- if (first_token && se && -- se[0] == ':' && -- se[1] != '\0') { -- slen = se - s + 1; -- se++; -- break; -- } -- first_token = 0; -- } -- lines[nr] = strndup(s, slen); -- s = se; -- lines_num[nr] = i; -- nr++; -- if (nr >= sz) -- kpfatal("oops, not prepared to handle >1000 asm statements in single line"); -- } -- free(f->lines[i]); -- } else { --done: -- lines[nr] = s; -- lines_num[nr] = i; -- nr++; -- } -- } -- free(f->lines); -- f->lines = lines; -- f->lines_num = lines_num; -- f->nr_lines = nr; --} -- - void init_ctypes(struct kp_file *f) - { - int i; --- -2.23.0 - diff --git a/0028-kpatch_parse-Split-function-is_variable_start.patch b/0028-kpatch_parse-Split-function-is_variable_start.patch deleted file mode 100644 index 92d549b..0000000 --- a/0028-kpatch_parse-Split-function-is_variable_start.patch +++ /dev/null @@ -1,282 +0,0 @@ -From a3fce6e82d24afe186a46461b9cf931f2f023f36 Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 13:48:18 +0800 -Subject: [PATCH 28/89] kpatch_parse: Split function is_variable_start - -The function is_variable_start is arch related, since different arch may -use different assembly directives to describe variables. So let's make -two definations in arch/x86/arch_parse.c and arch/aarch64/arch_parse.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_parse.c | 69 ++++++++++++++++++++++++++++++++++ - src/arch/x86/arch_parse.c | 69 ++++++++++++++++++++++++++++++++++ - src/include/kpatch_parse.h | 1 + - src/kpatch_parse.c | 71 +---------------------------------- - 4 files changed, 140 insertions(+), 70 deletions(-) - -diff --git a/src/arch/aarch64/arch_parse.c b/src/arch/aarch64/arch_parse.c -index 1233e03..abbc38c 100644 ---- a/src/arch/aarch64/arch_parse.c -+++ b/src/arch/aarch64/arch_parse.c -@@ -4,6 +4,75 @@ - #include "include/kpatch_parse.h" - #include "include/kpatch_flags.h" - -+int is_variable_start(struct kp_file *f, int l, int *e, int *pglobl, kpstr_t *nm) -+{ -+ char *s; -+ int l0 = l, globl = 0; -+ kpstr_t nm2, attr; -+ -+ kpstrset(nm, "", 0); -+ for ( ; cline(f, l); l++) { -+ -+ /* first verify that all the commands we met has the same symbol name... just to be safe! */ -+ s = cline(f, l); -+ if (*s == '\0' && l != l0) -+ continue; -+ switch (ctype(f, l)) { -+ case DIRECTIVE_TYPE: -+ case DIRECTIVE_GLOBL: -+ case DIRECTIVE_LOCAL: -+ get_token(&s, &nm2); -+ case DIRECTIVE_LABEL: -+ get_token(&s, &nm2); -+ if (nm->l && kpstrcmp(nm, &nm2)) /* some other symbol met... stop */ -+ return 0; -+ *nm = nm2; -+ break; -+ } -+ -+ switch (ctype(f, l)) { -+ case DIRECTIVE_TEXT: -+ case DIRECTIVE_DATA: -+ case DIRECTIVE_BSS: -+ case DIRECTIVE_SECTION: -+ case DIRECTIVE_PUSHSECTION: -+ case DIRECTIVE_POPSECTION: -+ case DIRECTIVE_PREVIOUS: -+ case DIRECTIVE_SUBSECTION: -+ break; -+ case DIRECTIVE_TYPE: -+ get_type_args(cline(f, l), &nm2, &attr); -+ if (kpstrcmpz(&attr, "%object") && kpstrcmpz(&attr, "%tls_object")) -+ return 0; -+ break; -+ case DIRECTIVE_GLOBL: -+ globl = 1; -+ break; -+ case DIRECTIVE_ALIGN: -+ break; -+ case DIRECTIVE_COMMENT: -+ case DIRECTIVE_SIZE: -+ /* can't start with .size */ -+ if (l0 == l) -+ return 0; -+ break; -+ case DIRECTIVE_LABEL: -+ if (!is_data_sect(csect(f, l))) -+ return 0; -+ /* fall throught */ -+ case DIRECTIVE_LOCAL: -+ if (e) -+ *e = l + 1; -+ if (pglobl) -+ *pglobl = globl; -+ return 1; -+ default: -+ return 0; -+ } -+ } -+ return 0; -+} -+ - /* break manually crafted multiple statements separated by ; to separate lines */ - void init_multilines(struct kp_file *f) - { -diff --git a/src/arch/x86/arch_parse.c b/src/arch/x86/arch_parse.c -index 92ff483..ca57507 100644 ---- a/src/arch/x86/arch_parse.c -+++ b/src/arch/x86/arch_parse.c -@@ -4,6 +4,75 @@ - #include "include/kpatch_parse.h" - #include "include/kpatch_flags.h" - -+int is_variable_start(struct kp_file *f, int l, int *e, int *pglobl, kpstr_t *nm) -+{ -+ char *s; -+ int l0 = l, globl = 0; -+ kpstr_t nm2, attr; -+ -+ kpstrset(nm, "", 0); -+ for ( ; cline(f, l); l++) { -+ -+ /* first verify that all the commands we met has the same symbol name... just to be safe! */ -+ s = cline(f, l); -+ if (*s == '\0' && l != l0) -+ continue; -+ switch (ctype(f, l)) { -+ case DIRECTIVE_TYPE: -+ case DIRECTIVE_GLOBL: -+ case DIRECTIVE_LOCAL: -+ get_token(&s, &nm2); -+ case DIRECTIVE_LABEL: -+ get_token(&s, &nm2); -+ if (nm->l && kpstrcmp(nm, &nm2)) /* some other symbol met... stop */ -+ return 0; -+ *nm = nm2; -+ break; -+ } -+ -+ switch (ctype(f, l)) { -+ case DIRECTIVE_TEXT: -+ case DIRECTIVE_DATA: -+ case DIRECTIVE_BSS: -+ case DIRECTIVE_SECTION: -+ case DIRECTIVE_PUSHSECTION: -+ case DIRECTIVE_POPSECTION: -+ case DIRECTIVE_PREVIOUS: -+ case DIRECTIVE_SUBSECTION: -+ break; -+ case DIRECTIVE_TYPE: -+ get_type_args(cline(f, l), &nm2, &attr); -+ if (kpstrcmpz(&attr, "@object")) -+ return 0; -+ break; -+ case DIRECTIVE_GLOBL: -+ globl = 1; -+ break; -+ case DIRECTIVE_ALIGN: -+ break; -+ case DIRECTIVE_COMMENT: -+ case DIRECTIVE_SIZE: -+ /* can't start with .size */ -+ if (l0 == l) -+ return 0; -+ break; -+ case DIRECTIVE_LABEL: -+ if (!is_data_sect(csect(f, l))) -+ return 0; -+ /* fall throught */ -+ case DIRECTIVE_LOCAL: -+ if (e) -+ *e = l + 1; -+ if (pglobl) -+ *pglobl = globl; -+ return 1; -+ default: -+ return 0; -+ } -+ } -+ return 0; -+} -+ - /* break manually crafted multiple statements separated by ; to separate lines */ - void init_multilines(struct kp_file *f) - { -diff --git a/src/include/kpatch_parse.h b/src/include/kpatch_parse.h -index e1b7501..0f41509 100644 ---- a/src/include/kpatch_parse.h -+++ b/src/include/kpatch_parse.h -@@ -109,6 +109,7 @@ void __get_token(char **str, kpstr_t *x, const char *delim); - int is_function_start(struct kp_file *f, int l, kpstr_t *nm); - int is_function_end(struct kp_file *f, int l, kpstr_t *nm); - -+void get_type_args(char *s, kpstr_t *nm, kpstr_t *attr); - int is_variable_start(struct kp_file *f, int l, int *e, int *globl, kpstr_t *nm); - int is_data_def(char *s, int type); - -diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c -index 857dbf3..a3be7c0 100644 ---- a/src/kpatch_parse.c -+++ b/src/kpatch_parse.c -@@ -93,7 +93,7 @@ static struct { - }; - - /* parse arguments of .type command */ --static void get_type_args(char *s, kpstr_t *nm, kpstr_t *attr) -+void get_type_args(char *s, kpstr_t *nm, kpstr_t *attr) - { - kpstr_t t, t2; - -@@ -674,75 +674,6 @@ int is_function_end(struct kp_file *f, int l, kpstr_t *nm) - return 1; - } - --int is_variable_start(struct kp_file *f, int l, int *e, int *pglobl, kpstr_t *nm) --{ -- char *s; -- int l0 = l, globl = 0; -- kpstr_t nm2, attr; -- -- kpstrset(nm, "", 0); -- for ( ; cline(f, l); l++) { -- -- /* first verify that all the commands we met has the same symbol name... just to be safe! */ -- s = cline(f, l); -- if (*s == '\0' && l != l0) -- continue; -- switch (ctype(f, l)) { -- case DIRECTIVE_TYPE: -- case DIRECTIVE_GLOBL: -- case DIRECTIVE_LOCAL: -- get_token(&s, &nm2); -- case DIRECTIVE_LABEL: -- get_token(&s, &nm2); -- if (nm->l && kpstrcmp(nm, &nm2)) /* some other symbol met... stop */ -- return 0; -- *nm = nm2; -- break; -- } -- -- switch (ctype(f, l)) { -- case DIRECTIVE_TEXT: -- case DIRECTIVE_DATA: -- case DIRECTIVE_BSS: -- case DIRECTIVE_SECTION: -- case DIRECTIVE_PUSHSECTION: -- case DIRECTIVE_POPSECTION: -- case DIRECTIVE_PREVIOUS: -- case DIRECTIVE_SUBSECTION: -- break; -- case DIRECTIVE_TYPE: -- get_type_args(cline(f, l), &nm2, &attr); -- if (kpstrcmpz(&attr, "@object")) -- return 0; -- break; -- case DIRECTIVE_GLOBL: -- globl = 1; -- break; -- case DIRECTIVE_ALIGN: -- break; -- case DIRECTIVE_COMMENT: -- case DIRECTIVE_SIZE: -- /* can't start with .size */ -- if (l0 == l) -- return 0; -- break; -- case DIRECTIVE_LABEL: -- if (!is_data_sect(csect(f, l))) -- return 0; -- /* fall throught */ -- case DIRECTIVE_LOCAL: -- if (e) -- *e = l + 1; -- if (pglobl) -- *pglobl = globl; -- return 1; -- default: -- return 0; -- } -- } -- return 0; --} -- - int is_data_def(char *s, int type) - { - kpstr_t t; --- -2.23.0 - diff --git a/0029-kpatch_parse-Split-function-is_data_def.patch b/0029-kpatch_parse-Split-function-is_data_def.patch deleted file mode 100644 index cd71280..0000000 --- a/0029-kpatch_parse-Split-function-is_data_def.patch +++ /dev/null @@ -1,180 +0,0 @@ -From eaff972f8edd58491eeca17f4b7553cceb1fb5d4 Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 13:53:01 +0800 -Subject: [PATCH 29/89] kpatch_parse: Split function is_data_def - -The function is_data_def is arch related, so let's make two -separate definations in arch/x86/arch_parse.c and arch/aarch64/arch_parse.c - -Signed-off-by: Jiajie Li ---- - src/arch/aarch64/arch_parse.c | 64 +++++++++++++++++++++++++++++++++++ - src/arch/x86/arch_parse.c | 34 +++++++++++++++++++ - src/kpatch_parse.c | 33 ------------------ - 3 files changed, 98 insertions(+), 33 deletions(-) - -diff --git a/src/arch/aarch64/arch_parse.c b/src/arch/aarch64/arch_parse.c -index abbc38c..fea09f6 100644 ---- a/src/arch/aarch64/arch_parse.c -+++ b/src/arch/aarch64/arch_parse.c -@@ -4,6 +4,70 @@ - #include "include/kpatch_parse.h" - #include "include/kpatch_flags.h" - -+int is_data_def(char *s, int type) -+{ -+ kpstr_t t; -+ -+ get_token(&s, &t); -+ if ( -+ /* strings */ -+ !kpstrcmpz(&t, ".ascii") || -+ !kpstrcmpz(&t, ".asciz") || -+ !kpstrcmpz(&t, ".string") || -+ !kpstrcmpz(&t, ".string8") || -+ !kpstrcmpz(&t, ".string16") || -+ !kpstrcmpz(&t, ".string32") || -+ !kpstrcmpz(&t, ".string64") || -+ /* numeric */ -+ !kpstrcmpz(&t, ".byte") || -+ !kpstrcmpz(&t, ".1byte") || -+ !kpstrcmpz(&t, ".dc.b") || -+ -+ !kpstrcmpz(&t, ".hword") || -+ !kpstrcmpz(&t, ".short") || -+ !kpstrcmpz(&t, ".2byte") || -+ !kpstrcmpz(&t, ".dc") || -+ !kpstrcmpz(&t, ".dc.w") || -+ !kpstrcmpz(&t, ".value") || -+ !kpstrcmpz(&t, ".octa") || -+ -+ !kpstrcmpz(&t, ".word") || -+ !kpstrcmpz(&t, ".4byte") || -+ !kpstrcmpz(&t, ".long") || -+ !kpstrcmpz(&t, ".int") || -+ !kpstrcmpz(&t, ".dc.l") || -+ !kpstrcmpz(&t, ".dc.a") ||// (AArch32 only) -+ -+ !kpstrcmpz(&t, ".quad") || -+ !kpstrcmpz(&t, ".8byte") || -+ !kpstrcmpz(&t, ".xword") ||//(AArch64 only) -+ !kpstrcmpz(&t, ".dc.a") ||//(AArch64 only) -+ -+ !kpstrcmpz(&t, ".short") || -+ !kpstrcmpz(&t, ".int") || -+ !kpstrcmpz(&t, ".long") || -+ !kpstrcmpz(&t, ".quad") || -+ /* float */ -+ !kpstrcmpz(&t, ".double") || -+ !kpstrcmpz(&t, ".dc.d") || -+ !kpstrcmpz(&t, ".float") || -+ !kpstrcmpz(&t, ".single") || -+ !kpstrcmpz(&t, ".dc.s") || -+ /* other */ -+ !kpstrcmpz(&t, ".value") || -+ !kpstrcmpz(&t, ".comm") || -+ !kpstrcmpz(&t, ".zero") || -+ !kpstrcmpz(&t, ".fill") || -+ !kpstrcmpz(&t, ".space") || -+ !kpstrcmpz(&t, ".skip") || -+ /* dwarf types */ -+ !kpstrcmpz(&t, ".uleb128") || -+ !kpstrcmpz(&t, ".sleb128") -+ ) -+ return 1; -+ return 0; -+} -+ - int is_variable_start(struct kp_file *f, int l, int *e, int *pglobl, kpstr_t *nm) - { - char *s; -diff --git a/src/arch/x86/arch_parse.c b/src/arch/x86/arch_parse.c -index ca57507..81edaf8 100644 ---- a/src/arch/x86/arch_parse.c -+++ b/src/arch/x86/arch_parse.c -@@ -4,6 +4,40 @@ - #include "include/kpatch_parse.h" - #include "include/kpatch_flags.h" - -+int is_data_def(char *s, int type) -+{ -+ kpstr_t t; -+ -+ get_token(&s, &t); -+ if ( -+ /* strings */ -+ !kpstrcmpz(&t, ".ascii") || -+ !kpstrcmpz(&t, ".asciz") || -+ !kpstrcmpz(&t, ".string") || -+ /* numeric */ -+ !kpstrcmpz(&t, ".byte") || -+ !kpstrcmpz(&t, ".word") || -+ !kpstrcmpz(&t, ".short") || -+ !kpstrcmpz(&t, ".int") || -+ !kpstrcmpz(&t, ".long") || -+ !kpstrcmpz(&t, ".quad") || -+ /* float */ -+ !kpstrcmpz(&t, ".double") || -+ !kpstrcmpz(&t, ".float") || -+ !kpstrcmpz(&t, ".single") || -+ /* other */ -+ !kpstrcmpz(&t, ".value") || -+ !kpstrcmpz(&t, ".comm") || -+ !kpstrcmpz(&t, ".zero") || -+ /* dwarf types */ -+ !kpstrcmpz(&t, ".uleb128") || -+ !kpstrcmpz(&t, ".sleb128") || -+ !kpstrcmpz(&t, ".4byte") -+ ) -+ return 1; -+ return 0; -+} -+ - int is_variable_start(struct kp_file *f, int l, int *e, int *pglobl, kpstr_t *nm) - { - char *s; -diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c -index a3be7c0..f486b55 100644 ---- a/src/kpatch_parse.c -+++ b/src/kpatch_parse.c -@@ -674,37 +674,4 @@ int is_function_end(struct kp_file *f, int l, kpstr_t *nm) - return 1; - } - --int is_data_def(char *s, int type) --{ -- kpstr_t t; -- -- get_token(&s, &t); -- if ( -- /* strings */ -- !kpstrcmpz(&t, ".ascii") || -- !kpstrcmpz(&t, ".asciz") || -- !kpstrcmpz(&t, ".string") || -- /* numeric */ -- !kpstrcmpz(&t, ".byte") || -- !kpstrcmpz(&t, ".word") || -- !kpstrcmpz(&t, ".short") || -- !kpstrcmpz(&t, ".int") || -- !kpstrcmpz(&t, ".long") || -- !kpstrcmpz(&t, ".quad") || -- /* float */ -- !kpstrcmpz(&t, ".double") || -- !kpstrcmpz(&t, ".float") || -- !kpstrcmpz(&t, ".single") || -- /* other */ -- !kpstrcmpz(&t, ".value") || -- !kpstrcmpz(&t, ".comm") || -- !kpstrcmpz(&t, ".zero") || -- /* dwarf types */ -- !kpstrcmpz(&t, ".uleb128") || -- !kpstrcmpz(&t, ".sleb128") || -- !kpstrcmpz(&t, ".4byte") -- ) -- return 1; -- return 0; --} - --- -2.23.0 - diff --git a/0030-kpatch_parse-Split-function-is_function_start.patch b/0030-kpatch_parse-Split-function-is_function_start.patch deleted file mode 100644 index 94fd088..0000000 --- a/0030-kpatch_parse-Split-function-is_function_start.patch +++ /dev/null @@ -1,149 +0,0 @@ -From 3ecebe9ea858d5502af5f5cd79141e4546ae3fe8 Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 13:58:58 +0800 -Subject: [PATCH 30/89] kpatch_parse: Split function is_function_start - -The function is_function_start is arch related, so make two -separate definations in arch/x86/arch_parse.c and arch/aarch64/arch_parse.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_parse.c | 32 ++++++++++++++++++++++++++++++++ - src/arch/x86/arch_parse.c | 32 ++++++++++++++++++++++++++++++++ - src/kpatch_parse.c | 33 --------------------------------- - 3 files changed, 64 insertions(+), 33 deletions(-) - -diff --git a/src/arch/aarch64/arch_parse.c b/src/arch/aarch64/arch_parse.c -index fea09f6..e0f0c8b 100644 ---- a/src/arch/aarch64/arch_parse.c -+++ b/src/arch/aarch64/arch_parse.c -@@ -4,6 +4,38 @@ - #include "include/kpatch_parse.h" - #include "include/kpatch_flags.h" - -+int is_function_start(struct kp_file *f, int l, kpstr_t *nm) -+{ -+ char *s; -+ kpstr_t nm2, attr; -+ int l0 = l, func = 0; -+ -+ kpstrset(nm, "", 0); -+ for (; l < f->nr_lines; l++) { -+ if (l != l0 && cline(f, l)[0] == '\0') -+ continue; -+ if ((is_sect_cmd(f, l) && is_code_sect(csect(f, l))) || -+ ctype(f, l) == DIRECTIVE_ALIGN) -+ continue; -+ get_type_args(cline(f, l), &nm2, &attr); -+ if ((ctype(f, l) == DIRECTIVE_WEAK && l0 != l) || -+ ctype(f, l) == DIRECTIVE_GLOBL || ctype(f, l) == DIRECTIVE_HIDDEN || -+ ctype(f, l) == DIRECTIVE_PROTECTED || ctype(f, l) == DIRECTIVE_INTERNAL || -+ (ctype(f, l) == DIRECTIVE_TYPE && !kpstrcmpz(&attr, "%function"))) { -+ s = cline(f, l); -+ get_token(&s, &nm2); /* skip command */ -+ get_token(&s, &nm2); -+ if (nm->l && kpstrcmp(nm, &nm2)) /* verify name matches in all .weak/.globl/.type commands */ -+ return 0; -+ *nm = nm2; -+ func = func ? 1 : ctype(f, l) == DIRECTIVE_TYPE; -+ continue; -+ } -+ break; -+ } -+ return func; -+} -+ - int is_data_def(char *s, int type) - { - kpstr_t t; -diff --git a/src/arch/x86/arch_parse.c b/src/arch/x86/arch_parse.c -index 81edaf8..c51c49b 100644 ---- a/src/arch/x86/arch_parse.c -+++ b/src/arch/x86/arch_parse.c -@@ -4,6 +4,38 @@ - #include "include/kpatch_parse.h" - #include "include/kpatch_flags.h" - -+int is_function_start(struct kp_file *f, int l, kpstr_t *nm) -+{ -+ char *s; -+ kpstr_t nm2, attr; -+ int l0 = l, func = 0; -+ -+ kpstrset(nm, "", 0); -+ for (; l < f->nr_lines; l++) { -+ if (l != l0 && cline(f, l)[0] == '\0') -+ continue; -+ if ((is_sect_cmd(f, l) && is_code_sect(csect(f, l))) || -+ ctype(f, l) == DIRECTIVE_ALIGN) -+ continue; -+ get_type_args(cline(f, l), &nm2, &attr); -+ if ((ctype(f, l) == DIRECTIVE_WEAK && l0 != l) || -+ ctype(f, l) == DIRECTIVE_GLOBL || ctype(f, l) == DIRECTIVE_HIDDEN || -+ ctype(f, l) == DIRECTIVE_PROTECTED || ctype(f, l) == DIRECTIVE_INTERNAL || -+ (ctype(f, l) == DIRECTIVE_TYPE && !kpstrcmpz(&attr, "@function"))) { -+ s = cline(f, l); -+ get_token(&s, &nm2); /* skip command */ -+ get_token(&s, &nm2); -+ if (nm->l && kpstrcmp(nm, &nm2)) /* verify name matches in all .weak/.globl/.type commands */ -+ return 0; -+ *nm = nm2; -+ func = func ? 1 : ctype(f, l) == DIRECTIVE_TYPE; -+ continue; -+ } -+ break; -+ } -+ return func; -+} -+ - int is_data_def(char *s, int type) - { - kpstr_t t; -diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c -index f486b55..3df658d 100644 ---- a/src/kpatch_parse.c -+++ b/src/kpatch_parse.c -@@ -625,39 +625,6 @@ void init_sections(struct kp_file *f) - } - - /* ----------------------------------------- code block boundaries detection ---------------------------------------- */ -- --int is_function_start(struct kp_file *f, int l, kpstr_t *nm) --{ -- char *s; -- kpstr_t nm2, attr; -- int l0 = l, func = 0; -- -- kpstrset(nm, "", 0); -- for (; l < f->nr_lines; l++) { -- if (l != l0 && cline(f, l)[0] == '\0') -- continue; -- if ((is_sect_cmd(f, l) && is_code_sect(csect(f, l))) || -- ctype(f, l) == DIRECTIVE_ALIGN) -- continue; -- get_type_args(cline(f, l), &nm2, &attr); -- if ((ctype(f, l) == DIRECTIVE_WEAK && l0 != l) || -- ctype(f, l) == DIRECTIVE_GLOBL || ctype(f, l) == DIRECTIVE_HIDDEN || -- ctype(f, l) == DIRECTIVE_PROTECTED || ctype(f, l) == DIRECTIVE_INTERNAL || -- (ctype(f, l) == DIRECTIVE_TYPE && !kpstrcmpz(&attr, "@function"))) { -- s = cline(f, l); -- get_token(&s, &nm2); /* skip command */ -- get_token(&s, &nm2); -- if (nm->l && kpstrcmp(nm, &nm2)) /* verify name matches in all .weak/.globl/.type commands */ -- return 0; -- *nm = nm2; -- func = func ? 1 : ctype(f, l) == DIRECTIVE_TYPE; -- continue; -- } -- break; -- } -- return func; --} -- - int is_function_end(struct kp_file *f, int l, kpstr_t *nm) - { - /* Functions should always end by .size directive. Previously used to detect .LFe labels, but they are not generated w/o frame pointers */ --- -2.23.0 - diff --git a/0031-kpatch_common.h-Factor-out-PAGE_SIZE-marco.patch b/0031-kpatch_common.h-Factor-out-PAGE_SIZE-marco.patch deleted file mode 100644 index 69b760e..0000000 --- a/0031-kpatch_common.h-Factor-out-PAGE_SIZE-marco.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 0430a8354e988a1a72896844d45b1a5c83743d74 Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 14:02:50 +0800 -Subject: [PATCH 31/89] kpatch_common.h: Factor out PAGE_SIZE marco - -Since page size may be different on OS configuration. Let's make a -change it to get PAGE_SIZE dynamicly accquired from syscall. - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/include/kpatch_common.h | 17 +++++++++++++++++ - 1 file changed, 17 insertions(+) - -diff --git a/src/include/kpatch_common.h b/src/include/kpatch_common.h -index c160250..775ea14 100644 ---- a/src/include/kpatch_common.h -+++ b/src/include/kpatch_common.h -@@ -41,4 +41,21 @@ int kpatch_close_file(struct kp_file *kpatch); - # define R_X86_64_GOTPCRELX 0x29 - #endif - -+static inline int page_shift(int n) { -+ int res = -1; -+ -+ while(n) { -+ res++; -+ n >>= 1; -+ } -+ -+ return res; -+} -+ -+#ifndef PAGE_SIZE -+#define PAGE_SIZE getpagesize() -+#define PAGE_MASK (~(PAGE_SIZE-1)) -+#define PAGE_SHIFT page_shift(PAGE_SIZE) -+#endif -+ - #endif --- -2.23.0 - diff --git a/0032-kpatch_coro-Split-function-_UCORO_access_reg.patch b/0032-kpatch_coro-Split-function-_UCORO_access_reg.patch deleted file mode 100644 index 0004231..0000000 --- a/0032-kpatch_coro-Split-function-_UCORO_access_reg.patch +++ /dev/null @@ -1,196 +0,0 @@ -From ae9e01aefed4105c808301e783d29ddd349dc0f6 Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 14:22:45 +0800 -Subject: [PATCH 32/89] kpatch_coro: Split function _UCORO_access_reg - -The function _UCORO_access_reg is arch related, so make two -separate definations in arch/x86/arch_coro.c and arch/aarch64/arch_coro.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_coro.c | 39 ++++++++++++++++++++++++++++++++ - src/arch/x86/arch_coro.c | 43 ++++++++++++++++++++++++++++++++++++ - src/include/kpatch_coro.h | 11 +++++++++ - src/kpatch_coro.c | 37 ------------------------------- - 4 files changed, 93 insertions(+), 37 deletions(-) - -diff --git a/src/arch/aarch64/arch_coro.c b/src/arch/aarch64/arch_coro.c -index e69de29..e6fe3d0 100644 ---- a/src/arch/aarch64/arch_coro.c -+++ b/src/arch/aarch64/arch_coro.c -@@ -0,0 +1,39 @@ -+#include -+#include -+#include -+#include -+#include -+ -+#include "include/kpatch_user.h" -+#include "include/kpatch_coro.h" -+#include "include/kpatch_common.h" -+#include "include/kpatch_elf.h" -+#include "include/kpatch_ptrace.h" -+#include "include/kpatch_log.h" -+ -+int _UCORO_access_reg(unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, -+ int write, void *arg) -+{ -+ struct UCORO_info *info = (struct UCORO_info *)arg; -+ unsigned long *regs = (unsigned long *)info->coro->env[0].__jmpbuf; -+ -+ if (write) { -+ kperr("_UCORO_access_reg: write is not implemeneted (%d)\n", reg); -+ return -UNW_EINVAL; -+ } -+ switch (reg) { -+ case UNW_AARCH64_X9: -+ *val = regs[JB_RBX]; break; -+ case UNW_AARCH64_X29: -+ *val = regs[JB_RBP]; break; -+ case UNW_AARCH64_X12...UNW_AARCH64_X15: -+ *val = regs[reg - UNW_AARCH64_X12 + JB_R12]; break; -+ case UNW_AARCH64_SP: -+ *val = regs[JB_RSP]; break; -+ case UNW_AARCH64_PC: -+ *val = regs[JB_RIP]; break; -+ default: -+ return _UPT_access_reg(as, reg, val, write, arg); -+ } -+ return 0; -+} -diff --git a/src/arch/x86/arch_coro.c b/src/arch/x86/arch_coro.c -index e69de29..ce889df 100644 ---- a/src/arch/x86/arch_coro.c -+++ b/src/arch/x86/arch_coro.c -@@ -0,0 +1,43 @@ -+#include -+#include -+#include -+ -+#include -+ -+#include -+ -+#include -+ -+#include "include/kpatch_user.h" -+#include "include/kpatch_coro.h" -+#include "include/kpatch_common.h" -+#include "include/kpatch_elf.h" -+#include "include/kpatch_ptrace.h" -+#include "include/kpatch_log.h" -+ -+int _UCORO_access_reg(unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, -+ int write, void *arg) -+{ -+ struct UCORO_info *info = (struct UCORO_info *)arg; -+ unsigned long *regs = (unsigned long *)info->coro->env[0].__jmpbuf; -+ -+ if (write) { -+ kperr("_UCORO_access_reg: write is not implemeneted (%d)\n", reg); -+ return -UNW_EINVAL; -+ } -+ switch (reg) { -+ case UNW_X86_64_RBX: -+ *val = regs[JB_RBX]; break; -+ case UNW_X86_64_RBP: -+ *val = regs[JB_RBP]; break; -+ case UNW_X86_64_R12...UNW_X86_64_R15: -+ *val = regs[reg - UNW_X86_64_R12 + JB_R12]; break; -+ case UNW_X86_64_RSP: -+ *val = regs[JB_RSP]; break; -+ case UNW_X86_64_RIP: -+ *val = regs[JB_RIP]; break; -+ default: -+ return _UPT_access_reg(as, reg, val, write, arg); -+ } -+ return 0; -+} -diff --git a/src/include/kpatch_coro.h b/src/include/kpatch_coro.h -index 1588b5e..760b1db 100644 ---- a/src/include/kpatch_coro.h -+++ b/src/include/kpatch_coro.h -@@ -19,6 +19,17 @@ struct kpatch_coro { - void *_UCORO_create(struct kpatch_coro *coro, pid_t pid); - void _UCORO_destroy(void *arg); - -+ -+struct UCORO_info { -+ union { -+ void *upt; -+ char dummy[256]; -+ }; -+ struct kpatch_coro *coro; -+}; -+int _UCORO_access_reg(unw_addr_space_t as, unw_regnum_t reg, -+ unw_word_t *val, int write, void *arg); -+ - int kpatch_coroutines_init(struct kpatch_process *proc); - int kpatch_coroutines_find(struct kpatch_process *proc); - void kpatch_coroutines_free(struct kpatch_process *proc); -diff --git a/src/kpatch_coro.c b/src/kpatch_coro.c -index 02d421b..83d04ce 100644 ---- a/src/kpatch_coro.c -+++ b/src/kpatch_coro.c -@@ -6,8 +6,6 @@ - - #include - --#include -- - #include "include/kpatch_user.h" - #include "include/kpatch_coro.h" - #include "include/kpatch_common.h" -@@ -505,13 +503,6 @@ static struct kpatch_coro_ops kpatch_coro_flavours[] = { - * - * That's why I had to do this hack - */ --struct UCORO_info { -- union { -- void *upt; -- char dummy[256]; -- }; -- struct kpatch_coro *coro; --}; - - void *_UCORO_create(struct kpatch_coro *coro, pid_t pid) - { -@@ -538,34 +529,6 @@ void _UCORO_destroy(void *arg) - _UPT_destroy(info); - } - --static int --_UCORO_access_reg(unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, -- int write, void *arg) --{ -- struct UCORO_info *info = (struct UCORO_info *)arg; -- unsigned long *regs = (unsigned long *)info->coro->env[0].__jmpbuf; -- -- if (write) { -- kperr("_UCORO_access_reg: write is not implemeneted (%d)\n", reg); -- return -UNW_EINVAL; -- } -- switch (reg) { -- case UNW_X86_64_RBX: -- *val = regs[JB_RBX]; break; -- case UNW_X86_64_RBP: -- *val = regs[JB_RBP]; break; -- case UNW_X86_64_R12...UNW_X86_64_R15: -- *val = regs[reg - UNW_X86_64_R12 + JB_R12]; break; -- case UNW_X86_64_RSP: -- *val = regs[JB_RSP]; break; -- case UNW_X86_64_RIP: -- *val = regs[JB_RIP]; break; -- default: -- return _UPT_access_reg(as, reg, val, write, arg); -- } -- return 0; --} -- - static unw_accessors_t _UCORO_accessors = { - _UPT_find_proc_info, - _UPT_put_unwind_info, --- -2.23.0 - diff --git a/0033-kpatch_coro-Split-function-get_ptr_guard.patch b/0033-kpatch_coro-Split-function-get_ptr_guard.patch deleted file mode 100644 index cdb2244..0000000 --- a/0033-kpatch_coro-Split-function-get_ptr_guard.patch +++ /dev/null @@ -1,148 +0,0 @@ -From 612e06f2fc95029c13cfdb684014259fb49f18fe Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 14:32:51 +0800 -Subject: [PATCH 33/89] kpatch_coro: Split function get_ptr_guard - -The function get_ptr_guard is arch related, so make two -separate definations in arch/x86/arch_coro.c and arch/aarch64/arch_coro.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_coro.c | 24 ++++++++++++++++++++++++ - src/arch/x86/arch_coro.c | 23 +++++++++++++++++++++++ - src/include/kpatch_coro.h | 5 +++++ - src/kpatch_coro.c | 25 ------------------------- - 4 files changed, 52 insertions(+), 25 deletions(-) - -diff --git a/src/arch/aarch64/arch_coro.c b/src/arch/aarch64/arch_coro.c -index e6fe3d0..b93581e 100644 ---- a/src/arch/aarch64/arch_coro.c -+++ b/src/arch/aarch64/arch_coro.c -@@ -11,6 +11,30 @@ - #include "include/kpatch_ptrace.h" - #include "include/kpatch_log.h" - -+int get_ptr_guard(struct kpatch_process *proc, -+ unsigned long *ptr_guard) -+{ -+ int ret; -+ unsigned long tls = 0; -+ -+ /* -+ ret = kpatch_arch_prctl_remote(proc2pctx(proc), ARCH_GET_FS, &tls); -+ if (ret < 0) { -+ kpdebug("FAIL. Can't get TLS base value\n"); -+ return -1; -+ }*/ -+ ret = kpatch_process_mem_read(proc, -+ tls + GLIBC_TLS_PTR_GUARD, -+ ptr_guard, -+ sizeof(*ptr_guard)); -+ if (ret < 0) { -+ kpdebug("FAIL. Can't get pointer guard value\n"); -+ return -1; -+ } -+ -+ return 0; -+} -+ - int _UCORO_access_reg(unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, - int write, void *arg) - { -diff --git a/src/arch/x86/arch_coro.c b/src/arch/x86/arch_coro.c -index ce889df..86bf12f 100644 ---- a/src/arch/x86/arch_coro.c -+++ b/src/arch/x86/arch_coro.c -@@ -15,6 +15,29 @@ - #include "include/kpatch_ptrace.h" - #include "include/kpatch_log.h" - -+int get_ptr_guard(struct kpatch_process *proc, -+ unsigned long *ptr_guard) -+{ -+ int ret; -+ unsigned long tls; -+ -+ ret = kpatch_arch_prctl_remote(proc2pctx(proc), ARCH_GET_FS, &tls); -+ if (ret < 0) { -+ kpdebug("FAIL. Can't get TLS base value\n"); -+ return -1; -+ } -+ ret = kpatch_process_mem_read(proc, -+ tls + GLIBC_TLS_PTR_GUARD, -+ ptr_guard, -+ sizeof(*ptr_guard)); -+ if (ret < 0) { -+ kpdebug("FAIL. Can't get pointer guard value\n"); -+ return -1; -+ } -+ -+ return 0; -+} -+ - int _UCORO_access_reg(unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, - int write, void *arg) - { -diff --git a/src/include/kpatch_coro.h b/src/include/kpatch_coro.h -index 760b1db..272855e 100644 ---- a/src/include/kpatch_coro.h -+++ b/src/include/kpatch_coro.h -@@ -30,6 +30,11 @@ struct UCORO_info { - int _UCORO_access_reg(unw_addr_space_t as, unw_regnum_t reg, - unw_word_t *val, int write, void *arg); - -+#define GLIBC_TLS_PTR_GUARD 0x30 -+int get_ptr_guard(struct kpatch_process *proc, -+ unsigned long *ptr_guard); -+ -+ - int kpatch_coroutines_init(struct kpatch_process *proc); - int kpatch_coroutines_find(struct kpatch_process *proc); - void kpatch_coroutines_free(struct kpatch_process *proc); -diff --git a/src/kpatch_coro.c b/src/kpatch_coro.c -index 83d04ce..ea4050f 100644 ---- a/src/kpatch_coro.c -+++ b/src/kpatch_coro.c -@@ -105,8 +105,6 @@ kpatch_coro_free(struct kpatch_coro *c) - #define JB_RSP 6 - #define JB_RIP 7 - --#define GLIBC_TLS_PTR_GUARD 0x30 -- - #define STACK_OFFSET_UC_LINK (2 * sizeof(long)) - #define STACK_OFFSET_START_CONTEXT (3 * sizeof(long)) - #define STACK_OFFSET_UC_LINK_PTR (4 * sizeof(long)) -@@ -191,29 +189,6 @@ static int is_test_target(struct kpatch_process *proc, - return strcmp(proc->comm, procname) == 0; - } - --static int get_ptr_guard(struct kpatch_process *proc, -- unsigned long *ptr_guard) --{ -- int ret; -- unsigned long tls; -- -- ret = kpatch_arch_prctl_remote(proc2pctx(proc), ARCH_GET_FS, &tls); -- if (ret < 0) { -- kpdebug("FAIL. Can't get TLS base value\n"); -- return -1; -- } -- ret = kpatch_process_mem_read(proc, -- tls + GLIBC_TLS_PTR_GUARD, -- ptr_guard, -- sizeof(*ptr_guard)); -- if (ret < 0) { -- kpdebug("FAIL. Can't get pointer guard value\n"); -- return -1; -- } -- -- return 0; --} -- - int is_centos7_qemu(struct kpatch_process *proc) - { - struct utsname uts; --- -2.23.0 - diff --git a/0034-kpatch_coro-Split-function-locate_start_context_symb.patch b/0034-kpatch_coro-Split-function-locate_start_context_symb.patch deleted file mode 100644 index feea29a..0000000 --- a/0034-kpatch_coro-Split-function-locate_start_context_symb.patch +++ /dev/null @@ -1,307 +0,0 @@ -From 9ac8822b66bb06a463a29ec86088cfe8adc1e6d4 Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 14:45:03 +0800 -Subject: [PATCH 34/89] kpatch_coro: Split function locate_start_context_symbol - -The function locate_start_context_symbol is arch related, so let's -make two separate definations in arch/x86/arch_coro.c and -arch/aarch64/arch_coro.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_coro.c | 63 ++++++++++++++++++++++++++ - src/arch/x86/arch_coro.c | 67 +++++++++++++++++++++++++++ - src/include/kpatch_coro.h | 21 +++++++++ - src/kpatch_coro.c | 87 ------------------------------------ - 4 files changed, 151 insertions(+), 87 deletions(-) - -diff --git a/src/arch/aarch64/arch_coro.c b/src/arch/aarch64/arch_coro.c -index b93581e..f485cf9 100644 ---- a/src/arch/aarch64/arch_coro.c -+++ b/src/arch/aarch64/arch_coro.c -@@ -11,6 +11,69 @@ - #include "include/kpatch_ptrace.h" - #include "include/kpatch_log.h" - -+asm ( -+ "makecontext_call:\n" -+ "mov x29, sp\n" -+ "and x29,x29,#-16\n" -+ "sub x29, x29,#0x400\n" -+ "ldr x9,[x29,#-128]\n" -+ "str x9,[fp,#0x10]\n" -+ //"str #128,[fp.#0x20]\n" -+ "mov x0,fp\n" -+ "mov x1,#0x100\n" -+ "mov x2,#0\n" -+ "svc #0\n" -+ "brk #0\n" -+ "makecontext_call_end:" -+ ); -+ -+extern unsigned char makecontext_call, makecontext_call_end; -+ -+int -+locate_start_context_symbol(struct kpatch_process *proc, -+ unsigned long *pstart_context) -+{ -+ struct object_file *olibc; -+ struct user_regs_struct regs; -+ int rv; -+ unsigned long makecontext; -+ -+ olibc = kpatch_process_get_obj_by_regex(proc, "^libc-.*\\.so"); -+ if (olibc == NULL) { -+ kpdebug("FAIL. Can't find libc\n"); -+ return -1; -+ } -+ -+ rv = kpatch_resolve_undefined_single_dynamic(olibc, -+ "makecontext", -+ &makecontext); -+ makecontext = vaddr2addr(olibc, makecontext); -+ if (rv < 0 || makecontext == 0) { -+ kpdebug("FAIL. Can't find makecontext\n"); -+ return -1; -+ } -+ -+ regs.regs[8] = makecontext; -+ rv = kpatch_execute_remote(proc2pctx(proc), -+ &makecontext_call, -+ &makecontext_call_end - &makecontext_call, -+ ®s); -+ if (rv < 0) { -+ kpdebug("FAIL. Can't execute makecontext\n"); -+ return -1; -+ } -+ -+ rv = kpatch_process_mem_read(proc, -+ regs.regs[29]- STACK_OFFSET_START_CONTEXT, -+ pstart_context, -+ sizeof(*pstart_context)); -+ if (rv < 0) { -+ kpdebug("FAIL. Can't peek __start_context address\n"); -+ return -1; -+ } -+ return rv; -+} -+ - int get_ptr_guard(struct kpatch_process *proc, - unsigned long *ptr_guard) - { -diff --git a/src/arch/x86/arch_coro.c b/src/arch/x86/arch_coro.c -index 86bf12f..27c834b 100644 ---- a/src/arch/x86/arch_coro.c -+++ b/src/arch/x86/arch_coro.c -@@ -15,6 +15,73 @@ - #include "include/kpatch_ptrace.h" - #include "include/kpatch_log.h" - -+asm ("makecontext_call:\n" -+ "mov %rsp, %rbp\n" -+ "and $-16, %rbp\n" -+ /* ucontext_t is 0x3a8 bytes */ -+ "sub $0x400, %rbp\n" -+ /* TODO interpolate these from the calculations above */ -+ -+ /* set uc_stack.ss_sp and uc_stack.ss_size */ -+ /* TODO magic -128 is used below as well */ -+ "lea -128(%rbp), %rbx\n" -+ "movq %rbx, 0x10(%rbp)\n" -+ "movq $128, 0x20(%rbp)\n" -+ "mov %rbp, %rdi\n" -+ "mov $0x100, %rsi\n" -+ "xor %rdx, %rdx\n" -+ /* call `makecontext` */ -+ "call *%rax\n" -+ "int3\n" -+ "makecontext_call_end:"); -+ -+extern unsigned char makecontext_call, makecontext_call_end; -+ -+int -+locate_start_context_symbol(struct kpatch_process *proc, -+ unsigned long *pstart_context) -+{ -+ struct object_file *olibc; -+ struct user_regs_struct regs; -+ int rv; -+ unsigned long makecontext; -+ -+ olibc = kpatch_process_get_obj_by_regex(proc, "^libc-.*\\.so"); -+ if (olibc == NULL) { -+ kpdebug("FAIL. Can't find libc\n"); -+ return -1; -+ } -+ -+ rv = kpatch_resolve_undefined_single_dynamic(olibc, -+ "makecontext", -+ &makecontext); -+ makecontext = vaddr2addr(olibc, makecontext); -+ if (rv < 0 || makecontext == 0) { -+ kpdebug("FAIL. Can't find makecontext\n"); -+ return -1; -+ } -+ -+ regs.rax = makecontext; -+ rv = kpatch_execute_remote(proc2pctx(proc), -+ &makecontext_call, -+ &makecontext_call_end - &makecontext_call, -+ ®s); -+ if (rv < 0) { -+ kpdebug("FAIL. Can't execute makecontext\n"); -+ return -1; -+ } -+ -+ rv = kpatch_process_mem_read(proc, -+ regs.rbp - STACK_OFFSET_START_CONTEXT, -+ pstart_context, -+ sizeof(*pstart_context)); -+ if (rv < 0) { -+ kpdebug("FAIL. Can't peek __start_context address\n"); -+ return -1; -+ } -+ return rv; -+} -+ - int get_ptr_guard(struct kpatch_process *proc, - unsigned long *ptr_guard) - { -diff --git a/src/include/kpatch_coro.h b/src/include/kpatch_coro.h -index 272855e..0b3a9a1 100644 ---- a/src/include/kpatch_coro.h -+++ b/src/include/kpatch_coro.h -@@ -30,10 +30,31 @@ struct UCORO_info { - int _UCORO_access_reg(unw_addr_space_t as, unw_regnum_t reg, - unw_word_t *val, int write, void *arg); - -+#define PTR_DEMANGLE(ptr, key) ((((ptr) >> 0x11) | ((ptr) << 47)) ^ key) -+#define JB_RBX 0 -+#define JB_RBP 1 -+#define JB_R12 2 -+#define JB_R13 3 -+#define JB_R14 4 -+#define JB_R15 5 -+#define JB_RSP 6 -+#define JB_RIP 7 -+ -+#define STACK_OFFSET_UC_LINK (2 * sizeof(long)) -+#define STACK_OFFSET_START_CONTEXT (3 * sizeof(long)) -+#define STACK_OFFSET_UC_LINK_PTR (4 * sizeof(long)) -+#define STACK_OFFSET_COROUTINE_UCONTEXT (7 * sizeof(long)) -+#define STACK_OFFSET_COROUTINE (8 * sizeof(long)) -+ -+#define UCONTEXT_OFFSET_JMPBUF 0x38 -+ - #define GLIBC_TLS_PTR_GUARD 0x30 - int get_ptr_guard(struct kpatch_process *proc, - unsigned long *ptr_guard); - -+int locate_start_context_symbol(struct kpatch_process *proc, -+ unsigned long *pstart_context); -+ - - int kpatch_coroutines_init(struct kpatch_process *proc); - int kpatch_coroutines_find(struct kpatch_process *proc); -diff --git a/src/kpatch_coro.c b/src/kpatch_coro.c -index ea4050f..8457800 100644 ---- a/src/kpatch_coro.c -+++ b/src/kpatch_coro.c -@@ -95,93 +95,6 @@ kpatch_coro_free(struct kpatch_coro *c) - * some kind of persistency (to allow kernelcare updates). This - * service also can listen to netlink events about new processes. - */ --#define PTR_DEMANGLE(ptr, key) ((((ptr) >> 0x11) | ((ptr) << 47)) ^ key) --#define JB_RBX 0 --#define JB_RBP 1 --#define JB_R12 2 --#define JB_R13 3 --#define JB_R14 4 --#define JB_R15 5 --#define JB_RSP 6 --#define JB_RIP 7 -- --#define STACK_OFFSET_UC_LINK (2 * sizeof(long)) --#define STACK_OFFSET_START_CONTEXT (3 * sizeof(long)) --#define STACK_OFFSET_UC_LINK_PTR (4 * sizeof(long)) --#define STACK_OFFSET_COROUTINE_UCONTEXT (7 * sizeof(long)) --#define STACK_OFFSET_COROUTINE (8 * sizeof(long)) -- --#define UCONTEXT_OFFSET_JMPBUF 0x38 -- --#define UCONTEXT_OFFSET_UC_STACK_SS_SP offsetof(ucontext_t, uc_stack.ss_sp) --#define UCONTEXT_OFFSET_UC_STACK_SS_SIZE offsetof(ucontext_t, uc_stack.ss_size) -- --asm ("makecontext_call:\n" -- "mov %rsp, %rbp\n" -- "and $-16, %rbp\n" -- /* ucontext_t is 0x3a8 bytes */ -- "sub $0x400, %rbp\n" -- /* TODO interpolate these from the calculations above */ -- -- /* set uc_stack.ss_sp and uc_stack.ss_size */ -- /* TODO magic -128 is used below as well */ -- "lea -128(%rbp), %rbx\n" -- "movq %rbx, 0x10(%rbp)\n" -- "movq $128, 0x20(%rbp)\n" -- "mov %rbp, %rdi\n" -- "mov $0x100, %rsi\n" -- "xor %rdx, %rdx\n" -- /* call `makecontext` */ -- "call *%rax\n" -- "int3\n" -- "makecontext_call_end:"); -- --extern unsigned char makecontext_call, makecontext_call_end; -- --static int --locate_start_context_symbol(struct kpatch_process *proc, -- unsigned long *pstart_context) --{ -- struct object_file *olibc; -- struct user_regs_struct regs; -- int rv; -- unsigned long makecontext; -- -- olibc = kpatch_process_get_obj_by_regex(proc, "^libc-.*\\.so"); -- if (olibc == NULL) { -- kpdebug("FAIL. Can't find libc\n"); -- return -1; -- } -- -- rv = kpatch_resolve_undefined_single_dynamic(olibc, -- "makecontext", -- &makecontext); -- makecontext = vaddr2addr(olibc, makecontext); -- if (rv < 0 || makecontext == 0) { -- kpdebug("FAIL. Can't find makecontext\n"); -- return -1; -- } -- -- regs.rax = makecontext; -- rv = kpatch_execute_remote(proc2pctx(proc), -- &makecontext_call, -- &makecontext_call_end - &makecontext_call, -- ®s); -- if (rv < 0) { -- kpdebug("FAIL. Can't execute makecontext\n"); -- return -1; -- } -- -- rv = kpatch_process_mem_read(proc, -- regs.rbp - STACK_OFFSET_START_CONTEXT, -- pstart_context, -- sizeof(*pstart_context)); -- if (rv < 0) { -- kpdebug("FAIL. Can't peek __start_context address\n"); -- return -1; -- } -- return rv; --} - - static int is_test_target(struct kpatch_process *proc, - const char *procname) --- -2.23.0 - diff --git a/0035-kpatch_patch-Split-function-patch_apply_hunk.patch b/0035-kpatch_patch-Split-function-patch_apply_hunk.patch deleted file mode 100644 index 8a57997..0000000 --- a/0035-kpatch_patch-Split-function-patch_apply_hunk.patch +++ /dev/null @@ -1,237 +0,0 @@ -From 4f165eacd6d1d64cc43a58dd54e35017663d99e2 Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 14:58:18 +0800 -Subject: [PATCH 35/89] kpatch_patch: Split function patch_apply_hunk - -The function patch_apply_hunk is arch related, so make two -separate definations in arch/x86/arch_patch.c and arch/aarch64/arch_patch.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_patch.c | 68 +++++++++++++++++++++++++++++++++++ - src/arch/x86/arch_patch.c | 66 ++++++++++++++++++++++++++++++++++ - src/include/kpatch_patch.h | 2 ++ - src/kpatch_patch.c | 44 ++--------------------- - 4 files changed, 139 insertions(+), 41 deletions(-) - -diff --git a/src/arch/aarch64/arch_patch.c b/src/arch/aarch64/arch_patch.c -index e69de29..9102621 100644 ---- a/src/arch/aarch64/arch_patch.c -+++ b/src/arch/aarch64/arch_patch.c -@@ -0,0 +1,68 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "include/kpatch_patch.h" -+#include "include/kpatch_user.h" -+#include "include/kpatch_storage.h" -+#include "include/kpatch_process.h" -+#include "include/kpatch_file.h" -+#include "include/kpatch_common.h" -+#include "include/kpatch_elf.h" -+#include "include/kpatch_ptrace.h" -+#include "include/list.h" -+#include "include/kpatch_log.h" -+ -+ -+/***************************************************************************** -+ * Patch application subroutines -+ ****************************************************************************/ -+/* -+ * This flag is local, i.e. it is never stored to the -+ * patch applied to patient's memory. -+ */ -+int PATCH_APPLIED = (1 << 31); -+int HUNK_SIZE = 4; -+ -+int patch_apply_hunk(struct object_file *o, size_t nhunk) -+{ -+ int ret; -+ unsigned char code[] = {0x00, 0x00, 0x00, 0x00}; /* ins: b IMM */ -+ struct kpatch_info *info = &o->info[nhunk]; -+ unsigned long pundo; -+ -+ if (is_new_func(info)) -+ return 0; -+ -+ pundo = o->kpta + o->kpfile.patch->user_undo + nhunk * HUNK_SIZE; -+ kpinfo("%s origcode from 0x%lx+0x%x to 0x%lx\n", -+ o->name, info->daddr, HUNK_SIZE, pundo); -+ ret = kpatch_process_memcpy(o->proc, pundo, -+ info->daddr, HUNK_SIZE); -+ if (ret < 0) -+ return ret; -+ -+ kpinfo("%s hunk 0x%lx+0x%x -> 0x%lx+0x%x\n", -+ o->name, info->daddr, info->dlen, info->saddr, info->slen); -+ -+ *(unsigned int *)(code) = (unsigned int)(info->saddr - info->daddr) / 4; -+ code[3] &= 0x3; -+ code[3] |= 0x14; -+ -+ ret = kpatch_process_mem_write(o->proc, -+ code, -+ info->daddr, -+ sizeof(code)); -+ /* -+ * NOTE(pboldin): This is only stored locally, as information have -+ * been copied to patient's memory already. -+ */ -+ info->flags |= PATCH_APPLIED; -+ return ret ? -1 : 0; -+} -diff --git a/src/arch/x86/arch_patch.c b/src/arch/x86/arch_patch.c -index e69de29..a6e794d 100644 ---- a/src/arch/x86/arch_patch.c -+++ b/src/arch/x86/arch_patch.c -@@ -0,0 +1,66 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+ -+#include "include/kpatch_patch.h" -+#include "include/kpatch_user.h" -+#include "include/kpatch_storage.h" -+#include "include/kpatch_process.h" -+#include "include/kpatch_file.h" -+#include "include/kpatch_common.h" -+#include "include/kpatch_elf.h" -+#include "include/kpatch_ptrace.h" -+#include "include/list.h" -+#include "include/kpatch_log.h" -+ -+/***************************************************************************** -+ * Patch application subroutines -+ ****************************************************************************/ -+/* -+ * This flag is local, i.e. it is never stored to the -+ * patch applied to patient's memory. -+ */ -+int PATCH_APPLIED = (1 << 31); -+int HUNK_SIZE = 5; -+ -+int patch_apply_hunk(struct object_file *o, size_t nhunk) -+{ -+ int ret; -+ char code[] = {0xe9, 0x00, 0x00, 0x00, 0x00}; /* jmp IMM */ -+ struct kpatch_info *info = &o->info[nhunk]; -+ unsigned long pundo; -+ -+ if (is_new_func(info)) -+ return 0; -+ -+ pundo = o->kpta + o->kpfile.patch->user_undo + nhunk * HUNK_SIZE; -+ kpinfo("%s origcode from 0x%lx+0x%x to 0x%lx\n", -+ o->name, info->daddr, HUNK_SIZE, pundo); -+ ret = kpatch_process_memcpy(o->proc, pundo, -+ info->daddr, HUNK_SIZE); -+ if (ret < 0) -+ return ret; -+ -+ kpinfo("%s hunk 0x%lx+0x%x -> 0x%lx+0x%x\n", -+ o->name, info->daddr, info->dlen, info->saddr, info->slen); -+ *(unsigned int *)(code + 1) = (unsigned int)(info->saddr - info->daddr - 5); -+ ret = kpatch_process_mem_write(o->proc, -+ code, -+ info->daddr, -+ sizeof(code)); -+ /* -+ * NOTE(pboldin): This is only stored locally, as information have -+ * been copied to patient's memory already. -+ */ -+ info->flags |= PATCH_APPLIED; -+ return ret ? -1 : 0; -+} -+ -diff --git a/src/include/kpatch_patch.h b/src/include/kpatch_patch.h -index 44806ab..fa96b08 100644 ---- a/src/include/kpatch_patch.h -+++ b/src/include/kpatch_patch.h -@@ -25,4 +25,6 @@ struct unpatch_data { - int process_patch(int pid, void *_data); - int process_unpatch(int pid, void *_data); - -+int patch_apply_hunk(struct object_file *o, size_t nhunk); -+ - #endif -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index 21a160a..4a1d149 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -270,47 +270,6 @@ patch_ensure_safety(struct object_file *o, - /***************************************************************************** - * Patch application subroutines - ****************************************************************************/ --/* -- * This flag is local, i.e. it is never stored to the -- * patch applied to patient's memory. -- */ --#define PATCH_APPLIED (1 << 31) -- --#define HUNK_SIZE 5 -- --static int --patch_apply_hunk(struct object_file *o, size_t nhunk) --{ -- int ret; -- char code[HUNK_SIZE] = {0xe9, 0x00, 0x00, 0x00, 0x00}; /* jmp IMM */ -- struct kpatch_info *info = &o->info[nhunk]; -- unsigned long pundo; -- -- if (is_new_func(info)) -- return 0; -- -- pundo = o->kpta + o->kpfile.patch->user_undo + nhunk * HUNK_SIZE; -- kpinfo("%s origcode from 0x%lx+0x%x to 0x%lx\n", -- o->name, info->daddr, HUNK_SIZE, pundo); -- ret = kpatch_process_memcpy(o->proc, pundo, -- info->daddr, HUNK_SIZE); -- if (ret < 0) -- return ret; -- -- kpinfo("%s hunk 0x%lx+0x%x -> 0x%lx+0x%x\n", -- o->name, info->daddr, info->dlen, info->saddr, info->slen); -- *(unsigned int *)(code + 1) = (unsigned int)(info->saddr - info->daddr - 5); -- ret = kpatch_process_mem_write(o->proc, -- code, -- info->daddr, -- sizeof(code)); -- /* -- * NOTE(pboldin): This is only stored locally, as information have -- * been copied to patient's memory already. -- */ -- info->flags |= PATCH_APPLIED; -- return ret ? -1 : 0; --} - - static int - duplicate_kp_file(struct object_file *o) -@@ -328,6 +287,9 @@ duplicate_kp_file(struct object_file *o) - return 0; - } - -+extern int PATCH_APPLIED; -+extern int HUNK_SIZE; -+ - static int - object_apply_patch(struct object_file *o) - { --- -2.23.0 - diff --git a/0036-kpatch_elf-Split-function-kpatch_add_jmp_entry.patch b/0036-kpatch_elf-Split-function-kpatch_add_jmp_entry.patch deleted file mode 100644 index 68bc71a..0000000 --- a/0036-kpatch_elf-Split-function-kpatch_add_jmp_entry.patch +++ /dev/null @@ -1,151 +0,0 @@ -From 3352c27078a63b5bfc6ff4df639489fdabfd4dbe Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 15:11:05 +0800 -Subject: [PATCH 36/89] kpatch_elf: Split function kpatch_add_jmp_entry - -The function kpatch_add_jmp_entry is arch related. To support multi-arch -let's rename it with kpatch_arch_add_jmp_entry, and make the defination in -arch/x86/arch_elf.c and arch/aarch64/arch_elf.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_elf.c | 35 +++++++++++++++++++++++++++++++++++ - src/arch/x86/arch_elf.c | 35 +++++++++++++++++++++++++++++++++++ - src/include/kpatch_elf.h | 2 ++ - src/kpatch_elf.c | 21 +-------------------- - 4 files changed, 73 insertions(+), 20 deletions(-) - -diff --git a/src/arch/aarch64/arch_elf.c b/src/arch/aarch64/arch_elf.c -index e69de29..b977489 100644 ---- a/src/arch/aarch64/arch_elf.c -+++ b/src/arch/aarch64/arch_elf.c -@@ -0,0 +1,35 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+ -+#include "include/kpatch_common.h" -+#include "include/kpatch_user.h" -+#include "include/kpatch_process.h" -+#include "include/kpatch_elf.h" -+#include "include/kpatch_file.h" -+#include "include/kpatch_ptrace.h" -+#include "include/kpatch_log.h" -+ -+#define JMP_TABLE_JUMP 0xd61f022058000051 /* ldr x17 #8; br x17 */ -+unsigned long kpatch_arch_add_jmp_entry(struct object_file *o, unsigned long addr) -+{ -+ struct kpatch_jmp_table_entry entry = {JMP_TABLE_JUMP, addr}; -+ int e; -+ -+ if (o->jmp_table == NULL) { -+ kpfatalerror("JMP TABLE not found\n"); -+ return 0; -+ } -+ -+ if (o->jmp_table->cur_entry >= o->jmp_table->max_entry) -+ return 0; -+ e = o->jmp_table->cur_entry++; -+ o->jmp_table->entries[e] = entry; -+ return (unsigned long)(o->kpta + o->kpfile.patch->jmp_offset + \ -+ ((void *)&o->jmp_table->entries[e] - (void *)o->jmp_table)); -+} -diff --git a/src/arch/x86/arch_elf.c b/src/arch/x86/arch_elf.c -index e69de29..ef5564e 100644 ---- a/src/arch/x86/arch_elf.c -+++ b/src/arch/x86/arch_elf.c -@@ -0,0 +1,35 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+ -+#include "include/kpatch_common.h" -+#include "include/kpatch_user.h" -+#include "include/kpatch_process.h" -+#include "include/kpatch_elf.h" -+#include "include/kpatch_file.h" -+#include "include/kpatch_ptrace.h" -+#include "include/kpatch_log.h" -+ -+#define JMP_TABLE_JUMP 0x90900000000225ff /* jmp [rip+2]; nop; nop */ -+unsigned long kpatch_arch_add_jmp_entry(struct object_file *o, unsigned long addr) -+{ -+ struct kpatch_jmp_table_entry entry = {JMP_TABLE_JUMP, addr}; -+ int e; -+ -+ if (o->jmp_table == NULL) { -+ kpfatalerror("JMP TABLE not found\n"); -+ return 0; -+ } -+ -+ if (o->jmp_table->cur_entry >= o->jmp_table->max_entry) -+ return 0; -+ e = o->jmp_table->cur_entry++; -+ o->jmp_table->entries[e] = entry; -+ return (unsigned long)(o->kpta + o->kpfile.patch->jmp_offset + \ -+ ((void *)&o->jmp_table->entries[e] - (void *)o->jmp_table)); -+} -diff --git a/src/include/kpatch_elf.h b/src/include/kpatch_elf.h -index 8c0a4a4..7e5d8c3 100644 ---- a/src/include/kpatch_elf.h -+++ b/src/include/kpatch_elf.h -@@ -43,4 +43,6 @@ struct kpatch_jmp_table { - struct kpatch_jmp_table_entry entries[0]; - }; - -+unsigned long kpatch_arch_add_jmp_entry(struct object_file *o, unsigned long addr); -+ - #endif -diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c -index b1dfed0..21ba496 100644 ---- a/src/kpatch_elf.c -+++ b/src/kpatch_elf.c -@@ -686,25 +686,6 @@ kpatch_resolve_undefined(struct object_file *obj, - return addr; - } - --#define JMP_TABLE_JUMP 0x90900000000225ff /* jmp [rip+2]; nop; nop */ --static unsigned long kpatch_add_jmp_entry(struct object_file *o, unsigned long addr) --{ -- struct kpatch_jmp_table_entry entry = {JMP_TABLE_JUMP, addr}; -- int e; -- -- if (o->jmp_table == NULL) { -- kpfatalerror("JMP TABLE not found\n"); -- return 0; -- } -- -- if (o->jmp_table->cur_entry >= o->jmp_table->max_entry) -- return 0; -- e = o->jmp_table->cur_entry++; -- o->jmp_table->entries[e] = entry; -- return (unsigned long)(o->kpta + o->kpfile.patch->jmp_offset + \ -- ((void *)&o->jmp_table->entries[e] - (void *)o->jmp_table)); --} -- - static inline int - symbol_resolve(struct object_file *o, - GElf_Shdr *shdr, -@@ -737,7 +718,7 @@ symbol_resolve(struct object_file *o, - } - /* OK, we overuse st_size to store original offset */ - s->st_size = uaddr; -- s->st_value = kpatch_add_jmp_entry(o, uaddr); -+ s->st_value = kpatch_arch_add_jmp_entry(o, uaddr); - - kpdebug("symbol '%s' = 0x%lx\n", - symname, uaddr); --- -2.23.0 - diff --git a/0037-kpatch_elf-Split-function-kpatch_apply_relocate_add.patch b/0037-kpatch_elf-Split-function-kpatch_apply_relocate_add.patch deleted file mode 100644 index 66916c3..0000000 --- a/0037-kpatch_elf-Split-function-kpatch_apply_relocate_add.patch +++ /dev/null @@ -1,414 +0,0 @@ -From 69837926282fc65d41be15390d9a125da97adc54 Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 15:37:08 +0800 -Subject: [PATCH 37/89] kpatch_elf: Split function kpatch_apply_relocate_add - -The function kpatch_apply_relocate_add is arch related. To support multi-arch -let's rename it with kpatch_arch_apply_relocate_add, and make the defination -in arch/x86/arch_elf.c and arch/aarch64/arch_elf.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_elf.c | 100 ++++++++++++++++++++++++++++++++++++ - src/arch/x86/arch_elf.c | 89 ++++++++++++++++++++++++++++++++ - src/include/bitops.h | 27 ++++++++++ - src/include/kpatch_elf.h | 5 ++ - src/kpatch_elf.c | 94 ++------------------------------- - 5 files changed, 224 insertions(+), 91 deletions(-) - create mode 100644 src/include/bitops.h - -diff --git a/src/arch/aarch64/arch_elf.c b/src/arch/aarch64/arch_elf.c -index b977489..deacb6f 100644 ---- a/src/arch/aarch64/arch_elf.c -+++ b/src/arch/aarch64/arch_elf.c -@@ -14,6 +14,106 @@ - #include "include/kpatch_file.h" - #include "include/kpatch_ptrace.h" - #include "include/kpatch_log.h" -+#include "include/bitops.h" -+ -+static int kpatch_arch_apply_relocate(GElf_Rela *r, GElf_Sym *s, -+ void *loc, void *loc2, unsigned long val) -+{ -+ switch (GELF_R_TYPE(r->r_info)) { -+ case R_AARCH64_ABS64: -+ *(unsigned long *)loc = val; -+ kpdebug("R_AARCH64_ABS64: loc=0x%x, val =0x%lx\n",*(unsigned int*)loc,val); -+ break; -+ case R_AARCH64_ADD_ABS_LO12_NC: { -+ //ADD ins -+ kpdebug("R_AARCH64_ADD_ABS_LO12_NC: val=0x%lx\n", val); -+ val = val & 0xfff; -+ uint32_t mask = 0xfff << 10; -+ *(unsigned int*)loc &= ~mask; -+ or_32(loc, (val & 0xfff) << 10); -+ kpdebug("R_AARCH64_ADD_ABS_LO12_NC: loc=0x%x, val =0x%lx\n",*(unsigned int*)loc,val); -+ break; -+ } -+ case R_AARCH64_CALL26: { -+ // TODO bl ins -+ kpdebug("R_AARCH64_CALL26: val=0x%lx\n", val); -+ val -= (unsigned long)loc2; -+ uint32_t mask = 0x03FFFFFF;; -+ *(unsigned int*)loc &= ~mask; -+ or_32(loc, (val >> 2) & mask); -+ kpdebug("R_AARCH64_CALL26: loc=0x%x, val =0x%lx\n",*(unsigned int*)loc, val); -+ break; -+ } -+ case R_AARCH64_ADR_PREL_PG_HI21: { -+ // TODO ADRP ins -+ kpdebug("RR_AARCH64_ADR_PREL_PG_HI21: val=0x%lx\n", val); -+ val = (val >> 12) - ((unsigned long)loc2 >> 12); -+ kpdebug("val=0x%lx\n",val); -+ uint32_t immLo = (val & 0x3) << 29; -+ uint32_t immHi = (val & 0x1FFFFC) << 3; -+ uint64_t mask = (0x3 << 29) | (0x1FFFFC << 3); -+ *(unsigned int*)loc = (*(unsigned int*)loc & ~mask) | immLo | immHi; -+ //*(unsigned int*)loc &= 0x7fffffff; -+ kpdebug("lo=0x%x hi=0x%x\n",immLo,immHi); -+ kpdebug("R_AARCH64_ADR_PREL_PG_HI21: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); -+ break; -+ } -+ default: -+ kperr("unknown relocation type: %lx\n", r->r_info); -+ return -1; -+ } -+ return 0; -+} -+ -+int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) -+{ -+ struct kpatch_file *kp = o->kpfile.patch; -+ GElf_Ehdr *ehdr = (void *)kp + kp->kpatch_offset; -+ GElf_Shdr *shdr = (void *)ehdr + ehdr->e_shoff, *symhdr; -+ GElf_Rela *relocs = (void *)ehdr + relsec->sh_offset; -+ GElf_Shdr *tshdr = shdr + relsec->sh_info; -+ void *t = (void *)ehdr + shdr[relsec->sh_info].sh_offset; -+ void *tshdr2 = (void *)shdr[relsec->sh_info].sh_addr; -+ int i, is_kpatch_info; -+ const char *scnname; -+ -+ for (i = 1; i < ehdr->e_shnum; i++) { -+ if (shdr[i].sh_type == SHT_SYMTAB) -+ symhdr = &shdr[i]; -+ } -+ -+ scnname = secname(ehdr, shdr + relsec->sh_info); -+ kpdebug("applying relocations to '%s'\n", scnname); -+ is_kpatch_info = strcmp(scnname, ".kpatch.info") == 0; -+ -+ for (i = 0; i < relsec->sh_size / sizeof(*relocs); i++) { -+ GElf_Rela *r = relocs + i; -+ GElf_Sym *s; -+ unsigned long val; -+ void *loc, *loc2; -+ -+ if (r->r_offset < 0 || r->r_offset >= tshdr->sh_size) -+ kpfatalerror("Relocation offset for section '%s'" -+ " is at 0x%lx beyond the section size 0x%lx\n", -+ scnname, r->r_offset, tshdr->sh_size); -+ -+ /* Location in our address space */ -+ loc = t + r->r_offset; -+ /* Location in target process address space (for relative addressing) */ -+ loc2 = tshdr2 + r->r_offset; -+ s = (GElf_Sym *)((void *)ehdr + symhdr->sh_offset) + GELF_R_SYM(r->r_info); -+ val = s->st_value + r->r_addend; -+ -+ if (is_kpatch_info && is_undef_symbol(s)) { -+ val = s->st_size; -+ } -+ -+ kpatch_arch_apply_relocate(r, s, loc, loc2, val); -+ } -+ -+ return 0; -+} -+ - - #define JMP_TABLE_JUMP 0xd61f022058000051 /* ldr x17 #8; br x17 */ - unsigned long kpatch_arch_add_jmp_entry(struct object_file *o, unsigned long addr) -diff --git a/src/arch/x86/arch_elf.c b/src/arch/x86/arch_elf.c -index ef5564e..52de117 100644 ---- a/src/arch/x86/arch_elf.c -+++ b/src/arch/x86/arch_elf.c -@@ -15,6 +15,95 @@ - #include "include/kpatch_ptrace.h" - #include "include/kpatch_log.h" - -+int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) -+{ -+ struct kpatch_file *kp = o->kpfile.patch; -+ GElf_Ehdr *ehdr = (void *)kp + kp->kpatch_offset; -+ GElf_Shdr *shdr = (void *)ehdr + ehdr->e_shoff, *symhdr; -+ GElf_Rela *relocs = (void *)ehdr + relsec->sh_offset; -+ GElf_Shdr *tshdr = shdr + relsec->sh_info; -+ void *t = (void *)ehdr + shdr[relsec->sh_info].sh_offset; -+ void *tshdr2 = (void *)shdr[relsec->sh_info].sh_addr; -+ int i, is_kpatch_info; -+ const char *scnname; -+ -+ for (i = 1; i < ehdr->e_shnum; i++) { -+ if (shdr[i].sh_type == SHT_SYMTAB) -+ symhdr = &shdr[i]; -+ } -+ -+ scnname = secname(ehdr, shdr + relsec->sh_info); -+ kpdebug("applying relocations to '%s'\n", scnname); -+ is_kpatch_info = strcmp(scnname, ".kpatch.info") == 0; -+ -+ for (i = 0; i < relsec->sh_size / sizeof(*relocs); i++) { -+ GElf_Rela *r = relocs + i; -+ GElf_Sym *s; -+ unsigned long val; -+ void *loc, *loc2; -+ -+ if (r->r_offset < 0 || r->r_offset >= tshdr->sh_size) -+ kpfatalerror("Relocation offset for section '%s'" -+ " is at 0x%lx beyond the section size 0x%lx\n", -+ scnname, r->r_offset, tshdr->sh_size); -+ -+ /* Location in our address space */ -+ loc = t + r->r_offset; -+ /* Location in target process address space (for relative addressing) */ -+ loc2 = tshdr2 + r->r_offset; -+ s = (GElf_Sym *)((void *)ehdr + symhdr->sh_offset) + GELF_R_SYM(r->r_info); -+ val = s->st_value + r->r_addend; -+ -+ if (is_kpatch_info && is_undef_symbol(s)) { -+ val = s->st_size; -+ } -+ -+ switch (GELF_R_TYPE(r->r_info)) { -+ case R_X86_64_NONE: -+ break; -+ case R_X86_64_64: -+ *(unsigned long *)loc = val; -+ break; -+ case R_X86_64_32: -+ *(unsigned int *)loc = val; -+ break; -+ case R_X86_64_32S: -+ *(signed int *)loc = val; -+ break; -+ case R_X86_64_GOTTPOFF: -+ case R_X86_64_GOTPCREL: -+ case R_X86_64_REX_GOTPCRELX: -+ case R_X86_64_GOTPCRELX: -+ if (is_undef_symbol(s)) { -+ /* This is an undefined symbol, -+ * use jmp table as the GOT */ -+ val += sizeof(unsigned long); -+ } else if (GELF_ST_TYPE(s->st_info) == STT_TLS) { -+ /* This is GOTTPOFF that already points -+ * to an appropriate GOT entry in the -+ * patient's memory. -+ */ -+ val = r->r_addend + o->load_offset - 4; -+ } -+ /* FALLTHROUGH */ -+ case R_X86_64_PC32: -+ val -= (unsigned long)loc2; -+ *(unsigned int *)loc = val; -+ break; -+ case R_X86_64_TPOFF64: -+ case R_X86_64_TPOFF32: -+ kperr("TPOFF32/TPOFF64 should not be present\n"); -+ break; -+ default: -+ kperr("unknown relocation type: %lx\n", r->r_info); -+ return -1; -+ } -+ } -+ -+ return 0; -+} -+ -+ - #define JMP_TABLE_JUMP 0x90900000000225ff /* jmp [rip+2]; nop; nop */ - unsigned long kpatch_arch_add_jmp_entry(struct object_file *o, unsigned long addr) - { -diff --git a/src/include/bitops.h b/src/include/bitops.h -new file mode 100644 -index 0000000..aab1679 ---- /dev/null -+++ b/src/include/bitops.h -@@ -0,0 +1,27 @@ -+#ifndef BITOPS_H -+#define BITOPS_H -+ -+#define BITS_PER_BYTE CHAR_BIT -+#define BITS_PER_LONG (sizeof (unsigned long) * BITS_PER_BYTE) -+ -+#define BIT(nr) (1UL << (nr)) -+#define BIT_ULL(nr) (1ULL << (nr)) -+#define BIT_MASK(nr) (1UL << ((nr) % BITS_PER_LONG)) -+#define BIT_WORD(nr) ((nr) / BITS_PER_LONG) -+#define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long)) -+ -+static inline void or_32(void *addr, unsigned int val) -+{ -+ *(unsigned int*) addr = *(unsigned int*)addr | val; -+} -+ -+static inline void or_64(void *addr, unsigned long val) -+{ -+ *(unsigned long*) addr = *(unsigned long*)addr | val; -+} -+ -+static inline void and_32(void *addr, unsigned int val) -+{ -+ *(unsigned int*) addr = *(unsigned int*)addr & val; -+} -+#endif -diff --git a/src/include/kpatch_elf.h b/src/include/kpatch_elf.h -index 7e5d8c3..74efe04 100644 ---- a/src/include/kpatch_elf.h -+++ b/src/include/kpatch_elf.h -@@ -1,6 +1,7 @@ - #ifndef __KPATCH_ELF__ - #define __KPATCH_ELF__ - -+#include - #include "kpatch_process.h" - - const char *kpatch_get_buildid(struct object_file *o); -@@ -45,4 +46,8 @@ struct kpatch_jmp_table { - - unsigned long kpatch_arch_add_jmp_entry(struct object_file *o, unsigned long addr); - -+char *secname(GElf_Ehdr *ehdr, GElf_Shdr *s); -+int is_undef_symbol(const Elf64_Sym *sym); -+int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec); -+ - #endif -diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c -index 21ba496..5506292 100644 ---- a/src/kpatch_elf.c -+++ b/src/kpatch_elf.c -@@ -410,7 +410,7 @@ out: - return rv; - } - --static char *secname(GElf_Ehdr *ehdr, GElf_Shdr *s) -+char *secname(GElf_Ehdr *ehdr, GElf_Shdr *s) - { - GElf_Shdr *shdr = (void *)ehdr + ehdr->e_shoff; - char *str = (void *)ehdr + shdr[ehdr->e_shstrndx].sh_offset; -@@ -450,7 +450,7 @@ struct kpatch_jmp_table *kpatch_new_jmp_table(int entries) - return jtbl; - } - --static inline int -+inline int - is_undef_symbol(const Elf64_Sym *sym) - { - return sym->st_shndx == SHN_UNDEF || sym->st_shndx >= SHN_LORESERVE; -@@ -805,94 +805,6 @@ int kpatch_resolve(struct object_file *o) - return 0; - } - --static int kpatch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) --{ -- struct kpatch_file *kp = o->kpfile.patch; -- GElf_Ehdr *ehdr = (void *)kp + kp->kpatch_offset; -- GElf_Shdr *shdr = (void *)ehdr + ehdr->e_shoff, *symhdr; -- GElf_Rela *relocs = (void *)ehdr + relsec->sh_offset; -- GElf_Shdr *tshdr = shdr + relsec->sh_info; -- void *t = (void *)ehdr + shdr[relsec->sh_info].sh_offset; -- void *tshdr2 = (void *)shdr[relsec->sh_info].sh_addr; -- int i, is_kpatch_info; -- const char *scnname; -- -- for (i = 1; i < ehdr->e_shnum; i++) { -- if (shdr[i].sh_type == SHT_SYMTAB) -- symhdr = &shdr[i]; -- } -- -- scnname = secname(ehdr, shdr + relsec->sh_info); -- kpdebug("applying relocations to '%s'\n", scnname); -- is_kpatch_info = strcmp(scnname, ".kpatch.info") == 0; -- -- for (i = 0; i < relsec->sh_size / sizeof(*relocs); i++) { -- GElf_Rela *r = relocs + i; -- GElf_Sym *s; -- unsigned long val; -- void *loc, *loc2; -- -- if (r->r_offset < 0 || r->r_offset >= tshdr->sh_size) -- kpfatalerror("Relocation offset for section '%s'" -- " is at 0x%lx beyond the section size 0x%lx\n", -- scnname, r->r_offset, tshdr->sh_size); -- -- /* Location in our address space */ -- loc = t + r->r_offset; -- /* Location in target process address space (for relative addressing) */ -- loc2 = tshdr2 + r->r_offset; -- s = (GElf_Sym *)((void *)ehdr + symhdr->sh_offset) + GELF_R_SYM(r->r_info); -- val = s->st_value + r->r_addend; -- -- if (is_kpatch_info && is_undef_symbol(s)) { -- val = s->st_size; -- } -- -- switch (GELF_R_TYPE(r->r_info)) { -- case R_X86_64_NONE: -- break; -- case R_X86_64_64: -- *(unsigned long *)loc = val; -- break; -- case R_X86_64_32: -- *(unsigned int *)loc = val; -- break; -- case R_X86_64_32S: -- *(signed int *)loc = val; -- break; -- case R_X86_64_GOTTPOFF: -- case R_X86_64_GOTPCREL: -- case R_X86_64_REX_GOTPCRELX: -- case R_X86_64_GOTPCRELX: -- if (is_undef_symbol(s)) { -- /* This is an undefined symbol, -- * use jmp table as the GOT */ -- val += sizeof(unsigned long); -- } else if (GELF_ST_TYPE(s->st_info) == STT_TLS) { -- /* This is GOTTPOFF that already points -- * to an appropriate GOT entry in the -- * patient's memory. -- */ -- val = r->r_addend + o->load_offset - 4; -- } -- /* FALLTHROUGH */ -- case R_X86_64_PC32: -- val -= (unsigned long)loc2; -- *(unsigned int *)loc = val; -- break; -- case R_X86_64_TPOFF64: -- case R_X86_64_TPOFF32: -- kperr("TPOFF32/TPOFF64 should not be present\n"); -- break; -- default: -- kperr("unknown relocation type: %lx\n", r->r_info); -- return -1; -- } -- } -- -- return 0; --} -- - int kpatch_relocate(struct object_file *o) - { - GElf_Ehdr *ehdr; -@@ -907,7 +819,7 @@ int kpatch_relocate(struct object_file *o) - GElf_Shdr *s = shdr + i; - - if (s->sh_type == SHT_RELA) -- ret = kpatch_apply_relocate_add(o, s); -+ ret = kpatch_arch_apply_relocate_add(o, s); - else if (shdr->sh_type == SHT_REL) { - kperr("TODO: handle SHT_REL\n"); - return -1; --- -2.23.0 - diff --git a/0038-kpatch_process-Split-function-object_find_patch_regi.patch b/0038-kpatch_process-Split-function-object_find_patch_regi.patch deleted file mode 100644 index 9e830b7..0000000 --- a/0038-kpatch_process-Split-function-object_find_patch_regi.patch +++ /dev/null @@ -1,416 +0,0 @@ -From 80c479726361710a9ac4f328687796a183cf780f Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 15:56:42 +0800 -Subject: [PATCH 38/89] kpatch_process: Split function object_find_patch_region - -The function object_find_patch_region is arch related. Since process -virtual address layout may be different between x86 and aarch64, -let's make two separate definations in arch/x86/arch_process.c and -arch/aarch64/arch_process.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch.desc | 1 + - src/arch/aarch64/arch_process.c | 120 ++++++++++++++++++++++++++++++++ - src/arch/x86/arch_process.c | 108 ++++++++++++++++++++++++++++ - src/include/kpatch_process.h | 9 +++ - src/kpatch_process.c | 87 ++--------------------- - 5 files changed, 242 insertions(+), 83 deletions(-) - create mode 100644 src/arch.desc - create mode 100644 src/arch/aarch64/arch_process.c - create mode 100644 src/arch/x86/arch_process.c - -diff --git a/src/arch.desc b/src/arch.desc -new file mode 100644 -index 0000000..9647742 ---- /dev/null -+++ b/src/arch.desc -@@ -0,0 +1 @@ -+aarch64 -diff --git a/src/arch/aarch64/arch_process.c b/src/arch/aarch64/arch_process.c -new file mode 100644 -index 0000000..3a64d77 ---- /dev/null -+++ b/src/arch/aarch64/arch_process.c -@@ -0,0 +1,120 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+ -+#include -+ -+#include "include/kpatch_process.h" -+#include "include/kpatch_file.h" -+#include "include/kpatch_common.h" -+#include "include/kpatch_elf.h" -+#include "include/kpatch_ptrace.h" -+#include "include/list.h" -+#include "include/kpatch_log.h" -+ -+/* -+ * Find region for a patch. Take object's `previous_hole` as a left candidate -+ * and the next hole as a right candidate. Pace through them until there is -+ * enough space in the hole for the patch. -+ * -+ * Since holes can be much larger than 2GiB take extra caution to allocate -+ * patch region inside the (-2GiB, +2GiB) range from the original object. -+ */ -+unsigned long -+object_find_patch_region(struct object_file *obj, -+ size_t memsize, -+ struct vm_hole **hole) -+{ -+ struct list_head *head = &obj->proc->vmaholes; -+ struct vm_hole *left_hole = obj->previous_hole, -+ *right_hole = next_hole(left_hole, head); -+ unsigned long max_distance = 0x80000000; -+ struct obj_vm_area *sovma; -+ -+ unsigned long obj_start, obj_end; -+ unsigned long region_start = 0, region_end = 0; -+ -+ kpdebug("Looking for patch region for '%s'...\n", obj->name); -+ -+ sovma = list_first_entry(&obj->vma, struct obj_vm_area, list); -+ obj_start = sovma->inmem.start; -+ sovma = list_entry(obj->vma.prev, struct obj_vm_area, list); -+ obj_end = sovma->inmem.end; -+ -+ -+ max_distance -= memsize; -+ -+ /* TODO carefully check for the holes laying between obj_start and -+ * obj_end, i.e. just after the executable segment of an executable -+ */ -+ while (left_hole != NULL && right_hole != NULL) { -+ if (right_hole != NULL && -+ right_hole->start - obj_start > max_distance) -+ right_hole = NULL; -+ else if (hole_size(right_hole) > memsize) { -+ region_start = right_hole->start; -+ region_end = -+ (right_hole->end - obj_start) <= max_distance ? -+ right_hole->end - memsize : -+ obj_start + max_distance; -+ *hole = right_hole; -+ break; -+ } else -+ right_hole = next_hole(right_hole, head); -+ -+ if (left_hole != NULL && -+ obj_end - left_hole->end > max_distance) -+ left_hole = NULL; -+ else if (hole_size(left_hole) > memsize) { -+ region_start = -+ (left_hole->start - obj_end) <= max_distance ? -+ left_hole->start : obj_end > max_distance ? -+ obj_end - max_distance : 0; -+ region_end = left_hole->end - memsize; -+ *hole = left_hole; -+ break; -+ } else -+ left_hole = prev_hole(left_hole, head); -+ } -+ -+ if (region_start == region_end) { -+ kperr("can't find suitable region for patch on '%s'\n", -+ obj->name); -+ return -1UL; -+ } -+ -+ /* -+ * On aarch64, virtual address of text and data segments may be continuous, -+ * gap between data segment and process heap may be huge. Need to have -+ * region_end fixed. Here goes the trick: -+ * The branch instruction jump size is in the range of +/-128MB. -+ * So we need to put limitation to the region_end. -+ */ -+ region_end = region_start + (0x1<<25); -+ region_start = random_from_range(region_start >> PAGE_SHIFT, -+ region_end >> PAGE_SHIFT); -+ region_start <<= PAGE_SHIFT; -+ kpdebug("Found patch region for '%s' at %lx\n", obj->name, region_start); -+ -+ return region_start; -+} -+ -diff --git a/src/arch/x86/arch_process.c b/src/arch/x86/arch_process.c -new file mode 100644 -index 0000000..ba66134 ---- /dev/null -+++ b/src/arch/x86/arch_process.c -@@ -0,0 +1,108 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+ -+#include -+ -+#include "include/kpatch_process.h" -+#include "include/kpatch_file.h" -+#include "include/kpatch_common.h" -+#include "include/kpatch_elf.h" -+#include "include/kpatch_ptrace.h" -+#include "include/list.h" -+#include "include/kpatch_log.h" -+ -+/* -+ * Find region for a patch. Take object's `previous_hole` as a left candidate -+ * and the next hole as a right candidate. Pace through them until there is -+ * enough space in the hole for the patch. -+ * -+ * Since holes can be much larger than 2GiB take extra caution to allocate -+ * patch region inside the (-2GiB, +2GiB) range from the original object. -+ */ -+unsigned long object_find_patch_region(struct object_file *obj, -+ size_t memsize, -+ struct vm_hole **hole) -+{ -+ struct list_head *head = &obj->proc->vmaholes; -+ struct vm_hole *left_hole = obj->previous_hole, -+ *right_hole = next_hole(left_hole, head); -+ unsigned long max_distance = 0x80000000; -+ struct obj_vm_area *sovma; -+ -+ unsigned long obj_start, obj_end; -+ unsigned long region_start = 0, region_end = 0; -+ -+ kpdebug("Looking for patch region for '%s'...\n", obj->name); -+ -+ sovma = list_first_entry(&obj->vma, struct obj_vm_area, list); -+ obj_start = sovma->inmem.start; -+ sovma = list_entry(obj->vma.prev, struct obj_vm_area, list); -+ obj_end = sovma->inmem.end; -+ -+ -+ max_distance -= memsize; -+ -+ /* TODO carefully check for the holes laying between obj_start and -+ * obj_end, i.e. just after the executable segment of an executable -+ */ -+ while (left_hole != NULL && right_hole != NULL) { -+ if (right_hole != NULL && -+ right_hole->start - obj_start > max_distance) -+ right_hole = NULL; -+ else if (hole_size(right_hole) > memsize) { -+ region_start = right_hole->start; -+ region_end = -+ (right_hole->end - obj_start) <= max_distance ? -+ right_hole->end - memsize : -+ obj_start + max_distance; -+ *hole = right_hole; -+ break; -+ } else -+ right_hole = next_hole(right_hole, head); -+ -+ if (left_hole != NULL && -+ obj_end - left_hole->end > max_distance) -+ left_hole = NULL; -+ else if (hole_size(left_hole) > memsize) { -+ region_start = -+ (left_hole->start - obj_end) <= max_distance ? -+ left_hole->start : obj_end > max_distance ? -+ obj_end - max_distance : 0; -+ region_end = left_hole->end - memsize; -+ *hole = left_hole; -+ break; -+ } else -+ left_hole = prev_hole(left_hole, head); -+ } -+ -+ if (region_start == region_end) { -+ kperr("can't find suitable region for patch on '%s'\n", -+ obj->name); -+ return -1UL; -+ } -+ -+ region_start += PAGE_SIZE; -+ kpdebug("Found patch region for '%s' at %lx\n", obj->name, region_start); -+ -+ return region_start; -+} -diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h -index abbb1af..b96a6da 100644 ---- a/src/include/kpatch_process.h -+++ b/src/include/kpatch_process.h -@@ -211,4 +211,13 @@ is_kernel_object_name(char *name) - return 0; - } - -+struct vm_hole *next_hole(struct vm_hole *hole, struct list_head *head); -+struct vm_hole *prev_hole(struct vm_hole *hole, struct list_head *head); -+unsigned long hole_size(struct vm_hole *hole); -+ -+unsigned long random_from_range(unsigned long min, unsigned long max); -+unsigned long object_find_patch_region(struct object_file *obj, -+ size_t memsize, -+ struct vm_hole **hole); -+ - #endif /* ifndef __KPATCH_PROCESS__ */ -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index 3f7f2f6..9561962 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -965,7 +965,7 @@ vm_hole_split(struct vm_hole *hole, - return 0; - } - --static inline struct vm_hole * -+inline struct vm_hole * - next_hole(struct vm_hole *hole, struct list_head *head) - { - if (hole == NULL || hole->list.next == head) -@@ -974,7 +974,7 @@ next_hole(struct vm_hole *hole, struct list_head *head) - return list_entry(hole->list.next, struct vm_hole, list); - } - --static inline struct vm_hole * -+inline struct vm_hole * - prev_hole(struct vm_hole *hole, struct list_head *head) - { - if (hole == NULL || hole->list.prev == head) -@@ -983,7 +983,7 @@ prev_hole(struct vm_hole *hole, struct list_head *head) - return list_entry(hole->list.prev, struct vm_hole, list); - } - --static inline unsigned long -+inline unsigned long - hole_size(struct vm_hole *hole) - { - if (hole == NULL) -@@ -991,92 +991,13 @@ hole_size(struct vm_hole *hole) - return hole->end - hole->start; - } - --static unsigned long -+unsigned long - random_from_range(unsigned long min, unsigned long max) - { - /* TODO this is not uniform nor safe */ - return min + random() % (max - min); - } - --/* -- * Find region for a patch. Take object's `previous_hole` as a left candidate -- * and the next hole as a right candidate. Pace through them until there is -- * enough space in the hole for the patch. -- * -- * Since holes can be much larger than 2GiB take extra caution to allocate -- * patch region inside the (-2GiB, +2GiB) range from the original object. -- */ --static unsigned long --object_find_patch_region(struct object_file *obj, -- size_t memsize, -- struct vm_hole **hole) --{ -- struct list_head *head = &obj->proc->vmaholes; -- struct vm_hole *left_hole = obj->previous_hole, -- *right_hole = next_hole(left_hole, head); -- unsigned long max_distance = 0x80000000; -- struct obj_vm_area *sovma; -- -- unsigned long obj_start, obj_end; -- unsigned long region_start = 0, region_end = 0; -- -- kpdebug("Looking for patch region for '%s'...\n", obj->name); -- -- sovma = list_first_entry(&obj->vma, struct obj_vm_area, list); -- obj_start = sovma->inmem.start; -- sovma = list_entry(obj->vma.prev, struct obj_vm_area, list); -- obj_end = sovma->inmem.end; -- -- -- max_distance -= memsize; -- -- /* TODO carefully check for the holes laying between obj_start and -- * obj_end, i.e. just after the executable segment of an executable -- */ -- while (left_hole != NULL && right_hole != NULL) { -- if (right_hole != NULL && -- right_hole->start - obj_start > max_distance) -- right_hole = NULL; -- else if (hole_size(right_hole) > memsize) { -- region_start = right_hole->start; -- region_end = -- (right_hole->end - obj_start) <= max_distance ? -- right_hole->end - memsize : -- obj_start + max_distance; -- *hole = right_hole; -- break; -- } else -- right_hole = next_hole(right_hole, head); -- -- if (left_hole != NULL && -- obj_end - left_hole->end > max_distance) -- left_hole = NULL; -- else if (hole_size(left_hole) > memsize) { -- region_start = -- (left_hole->start - obj_end) <= max_distance ? -- left_hole->start : obj_end > max_distance ? -- obj_end - max_distance : 0; -- region_end = left_hole->end - memsize; -- *hole = left_hole; -- break; -- } else -- left_hole = prev_hole(left_hole, head); -- } -- -- if (region_start == region_end) { -- kperr("can't find suitable region for patch on '%s'\n", -- obj->name); -- return -1UL; -- } -- -- region_start = random_from_range(region_start >> PAGE_SHIFT, -- region_end >> PAGE_SHIFT); -- region_start <<= PAGE_SHIFT; -- kpdebug("Found patch region for '%s' at %lx\n", obj->name, region_start); -- -- return region_start; --} -- - int - kpatch_object_allocate_patch(struct object_file *o, - size_t sz) --- -2.23.0 - diff --git a/0039-kpatch_ptrace-Split-function-kpatch_ptrace_waitpid.patch b/0039-kpatch_ptrace-Split-function-kpatch_ptrace_waitpid.patch deleted file mode 100644 index 1ebd5e4..0000000 --- a/0039-kpatch_ptrace-Split-function-kpatch_ptrace_waitpid.patch +++ /dev/null @@ -1,501 +0,0 @@ -From 35b9c6934fc5c1e2ea4cf7e30b91b3b91e48074d Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 16:16:57 +0800 -Subject: [PATCH 39/89] kpatch_ptrace: Split function kpatch_ptrace_waitpid - -The function kpatch_ptrace_waitpid is arch related, let's -rename it with kpatch_arch_ptrace_waitpid, and make the -defination in arch/x86/arch_ptrace.c and arch/aarch64/arch_ptrace.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_ptrace.c | 145 +++++++++++++++++++++++++++++++++ - src/arch/x86/arch_ptrace.c | 140 +++++++++++++++++++++++++++++++ - src/include/kpatch_ptrace.h | 20 +++++ - src/kpatch_ptrace.c | 130 +---------------------------- - 4 files changed, 307 insertions(+), 128 deletions(-) - -diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c -index e69de29..fb19e86 100644 ---- a/src/arch/aarch64/arch_ptrace.c -+++ b/src/arch/aarch64/arch_ptrace.c -@@ -0,0 +1,145 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+ -+#include -+#include -+ -+#include "include/kpatch_process.h" -+#include "include/kpatch_common.h" -+#include "include/kpatch_ptrace.h" -+#include "include/kpatch_log.h" -+ -+#include -+ -+int -+kpatch_arch_ptrace_waitpid(kpatch_process_t *proc, -+ struct timespec *timeout, -+ const sigset_t *sigset) -+{ -+ struct kpatch_ptrace_ctx *pctx; -+ siginfo_t siginfo; -+ int ret, status; -+ pid_t pid; -+ struct user_regs_struct regs; -+ struct iovec regs_iov; -+ -+ regs_iov.iov_base = ®s; -+ regs_iov.iov_len = sizeof(regs); -+ -+ /* Immediately reap one attached thread */ -+ pid = waitpid(-1, &status, __WALL | WNOHANG); -+ -+ if (pid < 0) { -+ kplogerror("can't wait for tracees\n"); -+ return -1; -+ } -+ -+ /* There is none ready, wait for notification via signal */ -+ if (pid == 0) { -+ ret = sigtimedwait(sigset, &siginfo, timeout); -+ if (ret == -1 && errno == EAGAIN) { -+ /* We have timeouted */ -+ return -1; -+ } -+ -+ if (ret == -1 && errno == EINVAL) { -+ kperr("invalid timeout\n"); -+ return -1; -+ } -+ -+ /* We have got EINTR and must restart */ -+ if (ret == -1 && errno == EINTR) -+ return 0; -+ -+ /** -+ * Kernel stacks signals that follow too quickly. -+ * Deal with it by waiting for any child, not just -+ * one that is specified in signal -+ */ -+ pid = waitpid(-1, &status, __WALL | WNOHANG); -+ -+ if (pid == 0) { -+ kperr("missing waitpid for %d\n", siginfo.si_pid); -+ return 0; -+ } -+ -+ if (pid < 0) { -+ kplogerror("can't wait for tracee %d\n", siginfo.si_pid); -+ return -1; -+ } -+ } -+ -+ if (!WIFSTOPPED(status) && WIFSIGNALED(status)) { -+ /* Continue, resending the signal */ -+ ret = ptrace(PTRACE_CONT, pid, NULL, -+ (void *)(uintptr_t)WTERMSIG(status)); -+ if (ret < 0) { -+ kplogerror("can't start tracee %d\n", pid); -+ return -1; -+ } -+ return 0; -+ } -+ -+ if (WIFEXITED(status)) { -+ pctx = kpatch_ptrace_find_thread(proc, pid, 0UL); -+ if (pctx == NULL) { -+ kperr("got unexpected child '%d' exit\n", pid); -+ } else { -+ /* It's dead */ -+ pctx->pid = pctx->running = 0; -+ } -+ return 1; -+ } -+ -+ ret = ptrace(PTRACE_GETREGSET, pid, (void *)NT_PRSTATUS, (void *)®s_iov); -+ if (ret < 0) { -+ kplogerror("can't get regs %d\n", pid); -+ return -1; -+ } -+ -+ pctx = kpatch_ptrace_find_thread(proc, pid, regs.pc); -+ -+ if (pctx == NULL) { -+ /* We either don't know anything about this thread or -+ * even worse -- we stopped it in the wrong place. -+ * Bail out. -+ */ -+ pctx = kpatch_ptrace_find_thread(proc, pid, 0); -+ if (pctx != NULL) -+ pctx->running = 0; -+ -+ /* TODO: fix the latter by SINGLESTEPping such a thread with -+ * the original instruction in place */ -+ kperr("the thread ran out: %d, pc= %llx, expected = %lx\n", pid, -+ regs.pc, pctx->execute_until); -+ errno = ESRCH; -+ return -1; -+ } -+ -+ pctx->running = 0; -+ -+ /* Restore thread registers, pctx is now valid */ -+ kpdebug("Got thread %d at %llx\n", pctx->pid, -+ regs.pc - BREAK_INSN_LENGTH); -+ -+ regs.pc = pctx->execute_until; -+ -+ ret = ptrace(PTRACE_SETREGSET, pctx->pid, (void*)NT_PRSTATUS, (void*)®s_iov); -+ if (ret < 0) { -+ kplogerror("can't set regs - %d\n", pctx->pid); -+ return -1; -+ } -+ -+ return 1; -+} -diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c -index e69de29..6e943fd 100644 ---- a/src/arch/x86/arch_ptrace.c -+++ b/src/arch/x86/arch_ptrace.c -@@ -0,0 +1,140 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+ -+#include -+#include -+ -+#include "include/kpatch_process.h" -+#include "include/kpatch_common.h" -+#include "include/kpatch_ptrace.h" -+#include "include/kpatch_log.h" -+ -+#include -+ -+int kpatch_arch_ptrace_waitpid(kpatch_process_t *proc, -+ struct timespec *timeout, -+ const sigset_t *sigset) -+{ -+ struct kpatch_ptrace_ctx *pctx; -+ siginfo_t siginfo; -+ int ret, status; -+ pid_t pid; -+ struct user_regs_struct regs; -+ -+ /* Immediately reap one attached thread */ -+ pid = waitpid(-1, &status, __WALL | WNOHANG); -+ -+ if (pid < 0) { -+ kplogerror("can't wait for tracees\n"); -+ return -1; -+ } -+ -+ /* There is none ready, wait for notification via signal */ -+ if (pid == 0) { -+ ret = sigtimedwait(sigset, &siginfo, timeout); -+ if (ret == -1 && errno == EAGAIN) { -+ /* We have timeouted */ -+ return -1; -+ } -+ -+ if (ret == -1 && errno == EINVAL) { -+ kperr("invalid timeout\n"); -+ return -1; -+ } -+ -+ /* We have got EINTR and must restart */ -+ if (ret == -1 && errno == EINTR) -+ return 0; -+ -+ /** -+ * Kernel stacks signals that follow too quickly. -+ * Deal with it by waiting for any child, not just -+ * one that is specified in signal -+ */ -+ pid = waitpid(-1, &status, __WALL | WNOHANG); -+ -+ if (pid == 0) { -+ kperr("missing waitpid for %d\n", siginfo.si_pid); -+ return 0; -+ } -+ -+ if (pid < 0) { -+ kplogerror("can't wait for tracee %d\n", siginfo.si_pid); -+ return -1; -+ } -+ } -+ -+ if (!WIFSTOPPED(status) && WIFSIGNALED(status)) { -+ /* Continue, resending the signal */ -+ ret = ptrace(PTRACE_CONT, pid, NULL, -+ (void *)(uintptr_t)WTERMSIG(status)); -+ if (ret < 0) { -+ kplogerror("can't start tracee %d\n", pid); -+ return -1; -+ } -+ return 0; -+ } -+ -+ if (WIFEXITED(status)) { -+ pctx = kpatch_ptrace_find_thread(proc, pid, 0UL); -+ if (pctx == NULL) { -+ kperr("got unexpected child '%d' exit\n", pid); -+ } else { -+ /* It's dead */ -+ pctx->pid = pctx->running = 0; -+ } -+ return 1; -+ } -+ -+ ret = ptrace(PTRACE_GETREGS, pid, NULL, ®s); -+ if (ret < 0) { -+ kplogerror("can't get regs %d\n", pid); -+ return -1; -+ } -+ -+ pctx = kpatch_ptrace_find_thread(proc, pid, regs.rip); -+ -+ if (pctx == NULL) { -+ /* We either don't know anything about this thread or -+ * even worse -- we stopped it in the wrong place. -+ * Bail out. -+ */ -+ pctx = kpatch_ptrace_find_thread(proc, pid, 0); -+ if (pctx != NULL) -+ pctx->running = 0; -+ -+ /* TODO: fix the latter by SINGLESTEPping such a thread with -+ * the original instruction in place */ -+ kperr("the thread ran out: %d, rip = %llx, expected = %lx\n", pid, -+ regs.rip, pctx->execute_until); -+ errno = ESRCH; -+ return -1; -+ } -+ -+ pctx->running = 0; -+ -+ /* Restore thread registers, pctx is now valid */ -+ kpdebug("Got thread %d at %llx\n", pctx->pid, -+ regs.rip - BREAK_INSN_LENGTH); -+ -+ regs.rip = pctx->execute_until; -+ -+ ret = ptrace(PTRACE_SETREGS, pctx->pid, NULL, ®s); -+ if (ret < 0) { -+ kplogerror("can't set regs - %d\n", pctx->pid); -+ return -1; -+ } -+ -+ return 1; -+} -diff --git a/src/include/kpatch_ptrace.h b/src/include/kpatch_ptrace.h -index 7557e1f..1c7d33e 100644 ---- a/src/include/kpatch_ptrace.h -+++ b/src/include/kpatch_ptrace.h -@@ -102,4 +102,24 @@ kpatch_process_memcpy(kpatch_process_t *proc, - unsigned long dst, - unsigned long src, - size_t size); -+ -+#define BREAK_INSN_LENGTH 1 -+#define BREAK_INSN {0xcc} -+ -+#define SEC_TO_MSEC 1000 -+#define MSEC_TO_NSEC 1000000 -+ -+#define for_each_thread(proc, pctx) \ -+ list_for_each_entry(pctx, &proc->ptrace.pctxs, list) -+ -+struct kpatch_ptrace_ctx * -+kpatch_ptrace_find_thread(kpatch_process_t *proc, -+ pid_t pid, -+ unsigned long rip); -+ -+int -+kpatch_arch_ptrace_waitpid(kpatch_process_t *proc, -+ struct timespec *timeout, -+ const sigset_t *sigset); -+ - #endif -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index 8910aa8..3c57288 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -180,16 +180,8 @@ int kpatch_ptrace_get_entry_point(struct kpatch_ptrace_ctx *pctx, - return entry[0] == AT_ENTRY ? 0 : -1; - } - --#define BREAK_INSN_LENGTH 1 --#define BREAK_INSN {0xcc} - --#define SEC_TO_MSEC 1000 --#define MSEC_TO_NSEC 1000000 -- --#define for_each_thread(proc, pctx) \ -- list_for_each_entry(pctx, &proc->ptrace.pctxs, list) -- --static struct kpatch_ptrace_ctx * -+struct kpatch_ptrace_ctx * - kpatch_ptrace_find_thread(kpatch_process_t *proc, - pid_t pid, - unsigned long rip) -@@ -213,124 +205,6 @@ kpatch_ptrace_find_thread(kpatch_process_t *proc, - return NULL; - } - --static inline int --kpatch_ptrace_waitpid(kpatch_process_t *proc, -- struct timespec *timeout, -- const sigset_t *sigset) --{ -- struct kpatch_ptrace_ctx *pctx; -- siginfo_t siginfo; -- int ret, status; -- pid_t pid; -- struct user_regs_struct regs; -- -- /* Immediately reap one attached thread */ -- pid = waitpid(-1, &status, __WALL | WNOHANG); -- -- if (pid < 0) { -- kplogerror("can't wait for tracees\n"); -- return -1; -- } -- -- /* There is none ready, wait for notification via signal */ -- if (pid == 0) { -- ret = sigtimedwait(sigset, &siginfo, timeout); -- if (ret == -1 && errno == EAGAIN) { -- /* We have timeouted */ -- return -1; -- } -- -- if (ret == -1 && errno == EINVAL) { -- kperr("invalid timeout\n"); -- return -1; -- } -- -- /* We have got EINTR and must restart */ -- if (ret == -1 && errno == EINTR) -- return 0; -- -- /** -- * Kernel stacks signals that follow too quickly. -- * Deal with it by waiting for any child, not just -- * one that is specified in signal -- */ -- pid = waitpid(-1, &status, __WALL | WNOHANG); -- -- if (pid == 0) { -- kperr("missing waitpid for %d\n", siginfo.si_pid); -- return 0; -- } -- -- if (pid < 0) { -- kplogerror("can't wait for tracee %d\n", siginfo.si_pid); -- return -1; -- } -- } -- -- if (!WIFSTOPPED(status) && WIFSIGNALED(status)) { -- /* Continue, resending the signal */ -- ret = ptrace(PTRACE_CONT, pid, NULL, -- (void *)(uintptr_t)WTERMSIG(status)); -- if (ret < 0) { -- kplogerror("can't start tracee %d\n", pid); -- return -1; -- } -- return 0; -- } -- -- if (WIFEXITED(status)) { -- pctx = kpatch_ptrace_find_thread(proc, pid, 0UL); -- if (pctx == NULL) { -- kperr("got unexpected child '%d' exit\n", pid); -- } else { -- /* It's dead */ -- pctx->pid = pctx->running = 0; -- } -- return 1; -- } -- -- ret = ptrace(PTRACE_GETREGS, pid, NULL, ®s); -- if (ret < 0) { -- kplogerror("can't get regs %d\n", pid); -- return -1; -- } -- -- pctx = kpatch_ptrace_find_thread(proc, pid, regs.rip); -- -- if (pctx == NULL) { -- /* We either don't know anything about this thread or -- * even worse -- we stopped it in the wrong place. -- * Bail out. -- */ -- pctx = kpatch_ptrace_find_thread(proc, pid, 0); -- if (pctx != NULL) -- pctx->running = 0; -- -- /* TODO: fix the latter by SINGLESTEPping such a thread with -- * the original instruction in place */ -- kperr("the thread ran out: %d, rip = %llx, expected = %lx\n", pid, -- regs.rip, pctx->execute_until); -- errno = ESRCH; -- return -1; -- } -- -- pctx->running = 0; -- -- /* Restore thread registers, pctx is now valid */ -- kpdebug("Got thread %d at %llx\n", pctx->pid, -- regs.rip - BREAK_INSN_LENGTH); -- -- regs.rip = pctx->execute_until; -- -- ret = ptrace(PTRACE_SETREGS, pctx->pid, NULL, ®s); -- if (ret < 0) { -- kplogerror("can't set regs - %d\n", pctx->pid); -- return -1; -- } -- -- return 1; --} -- - struct breakpoint { - unsigned long addr; - unsigned char orig_code[BREAK_INSN_LENGTH]; -@@ -441,7 +315,7 @@ kpatch_ptrace_execute_until(kpatch_process_t *proc, - break; - } - -- rv = kpatch_ptrace_waitpid(proc, &timeout, &sigset); -+ rv = kpatch_arch_ptrace_waitpid(proc, &timeout, &sigset); - if (rv < 0) - break; - --- -2.23.0 - diff --git a/0040-kpatch_ptrace-Split-function-copy_regs.patch b/0040-kpatch_ptrace-Split-function-copy_regs.patch deleted file mode 100644 index 5884a74..0000000 --- a/0040-kpatch_ptrace-Split-function-copy_regs.patch +++ /dev/null @@ -1,137 +0,0 @@ -From 8c0199836e7944569dbbeb5e571d791b8e466275 Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 16:24:09 +0800 -Subject: [PATCH 40/89] kpatch_ptrace: Split function copy_regs - -The function copy_regs is arch related, so make two separate -definations in arch/x86/arch_ptrace.c and arch/aarch64/arch_ptrace.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_ptrace.c | 28 ++++++++++++++++++++++++++++ - src/arch/x86/arch_ptrace.c | 22 ++++++++++++++++++++++ - src/include/kpatch_ptrace.h | 3 +++ - src/kpatch_ptrace.c | 22 ---------------------- - 4 files changed, 53 insertions(+), 22 deletions(-) - -diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c -index fb19e86..0366d4f 100644 ---- a/src/arch/aarch64/arch_ptrace.c -+++ b/src/arch/aarch64/arch_ptrace.c -@@ -22,6 +22,34 @@ - - #include - -+void copy_regs(struct user_regs_struct *dst, -+ struct user_regs_struct *src) -+{ -+#define COPY_REG(x) dst->x = src->x -+ COPY_REG(regs[0]); -+ COPY_REG(regs[1]); -+ COPY_REG(regs[2]); -+ COPY_REG(regs[3]); -+ COPY_REG(regs[4]); -+ COPY_REG(regs[5]); -+ COPY_REG(regs[8]); -+ COPY_REG(regs[29]); -+ -+ COPY_REG(regs[9]); -+ COPY_REG(regs[10]); -+ COPY_REG(regs[11]); -+ COPY_REG(regs[12]); -+ COPY_REG(regs[13]); -+ COPY_REG(regs[14]); -+ COPY_REG(regs[15]); -+ COPY_REG(regs[16]); -+ COPY_REG(regs[17]); -+ COPY_REG(regs[18]); -+ COPY_REG(regs[19]); -+ COPY_REG(regs[20]); -+#undef COPY_REG -+} -+ - int - kpatch_arch_ptrace_waitpid(kpatch_process_t *proc, - struct timespec *timeout, -diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c -index 6e943fd..fa23757 100644 ---- a/src/arch/x86/arch_ptrace.c -+++ b/src/arch/x86/arch_ptrace.c -@@ -22,6 +22,28 @@ - - #include - -+void copy_regs(struct user_regs_struct *dst, -+ struct user_regs_struct *src) -+{ -+#define COPY_REG(x) dst->x = src->x -+ COPY_REG(r15); -+ COPY_REG(r14); -+ COPY_REG(r13); -+ COPY_REG(r12); -+ COPY_REG(rbp); -+ COPY_REG(rbx); -+ COPY_REG(r11); -+ COPY_REG(r10); -+ COPY_REG(r9); -+ COPY_REG(r8); -+ COPY_REG(rax); -+ COPY_REG(rcx); -+ COPY_REG(rdx); -+ COPY_REG(rsi); -+ COPY_REG(rdi); -+#undef COPY_REG -+} -+ - int kpatch_arch_ptrace_waitpid(kpatch_process_t *proc, - struct timespec *timeout, - const sigset_t *sigset) -diff --git a/src/include/kpatch_ptrace.h b/src/include/kpatch_ptrace.h -index 1c7d33e..e434d68 100644 ---- a/src/include/kpatch_ptrace.h -+++ b/src/include/kpatch_ptrace.h -@@ -122,4 +122,7 @@ kpatch_arch_ptrace_waitpid(kpatch_process_t *proc, - struct timespec *timeout, - const sigset_t *sigset); - -+void copy_regs(struct user_regs_struct *dst, -+ struct user_regs_struct *src); -+ - #endif -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index 3c57288..180bbaa 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -413,28 +413,6 @@ poke_back: - return ret; - } - --static void copy_regs(struct user_regs_struct *dst, -- struct user_regs_struct *src) --{ --#define COPY_REG(x) dst->x = src->x -- COPY_REG(r15); -- COPY_REG(r14); -- COPY_REG(r13); -- COPY_REG(r12); -- COPY_REG(rbp); -- COPY_REG(rbx); -- COPY_REG(r11); -- COPY_REG(r10); -- COPY_REG(r9); -- COPY_REG(r8); -- COPY_REG(rax); -- COPY_REG(rcx); -- COPY_REG(rdx); -- COPY_REG(rsi); -- COPY_REG(rdi); --#undef COPY_REG --} -- - static - int - kpatch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, --- -2.23.0 - diff --git a/0041-kpatch_ptrace-Split-function-kpatch_execute_remote_f.patch b/0041-kpatch_ptrace-Split-function-kpatch_execute_remote_f.patch deleted file mode 100644 index ae1b197..0000000 --- a/0041-kpatch_ptrace-Split-function-kpatch_execute_remote_f.patch +++ /dev/null @@ -1,328 +0,0 @@ -From e312d7a74924d6e3880fa27adb4bcd04c8c25983 Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 16:30:58 +0800 -Subject: [PATCH 41/89] kpatch_ptrace: Split function - kpatch_execute_remote_func - -The function kpatch_execute_remote_func is arch related, first -rename it with kpatch_arch_execute_remote_func, and the make separate -definations in arch/x86/arch_ptrace.c and arch/aarch64/arch_ptrace.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_ptrace.c | 87 ++++++++++++++++++++++++++++++++++ - src/arch/x86/arch_ptrace.c | 79 ++++++++++++++++++++++++++++++ - src/include/kpatch_ptrace.h | 9 ++++ - src/kpatch_ptrace.c | 82 +------------------------------- - 4 files changed, 176 insertions(+), 81 deletions(-) - -diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c -index 0366d4f..821b4e8 100644 ---- a/src/arch/aarch64/arch_ptrace.c -+++ b/src/arch/aarch64/arch_ptrace.c -@@ -22,6 +22,93 @@ - - #include - -+int -+kpatch_arch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, -+ const unsigned char *code, -+ size_t codelen, -+ struct user_regs_struct *pregs, -+ int (*func)(struct kpatch_ptrace_ctx *pctx, -+ void *data), -+ void *data) -+{ -+ struct user_regs_struct orig_regs, regs; -+ struct iovec orig_regs_iov, regs_iov; -+ -+ orig_regs_iov.iov_base = &orig_regs; -+ orig_regs_iov.iov_len = sizeof(orig_regs); -+ regs_iov.iov_base = ®s; -+ regs_iov.iov_len = sizeof(regs); -+ -+ unsigned char orig_code[codelen]; -+ int ret; -+ kpatch_process_t *proc = pctx->proc; -+ unsigned long libc_base = proc->libc_base; -+ -+ -+ ret = ptrace(PTRACE_GETREGSET, pctx->pid, (void*)NT_PRSTATUS, (void*)&orig_regs_iov); -+ if (ret < 0) { -+ kplogerror("can't get regs - %d\n", pctx->pid); -+ return -1; -+ } -+ ret = kpatch_process_mem_read( -+ proc, -+ libc_base, -+ (unsigned long *)orig_code, -+ codelen); -+ if (ret < 0) { -+ kplogerror("can't peek original code - %d\n", pctx->pid); -+ return -1; -+ } -+ ret = kpatch_process_mem_write( -+ proc, -+ (unsigned long *)code, -+ libc_base, -+ codelen); -+ if (ret < 0) { -+ kplogerror("can't poke syscall code - %d\n", pctx->pid); -+ goto poke_back; -+ } -+ -+ regs = orig_regs; -+ regs.pc = libc_base; -+ -+ copy_regs(®s, pregs); -+ -+ ret = ptrace(PTRACE_SETREGSET, pctx->pid, (void*)NT_PRSTATUS, (void*)®s_iov); -+ if (ret < 0) { -+ kplogerror("can't set regs - %d\n", pctx->pid); -+ goto poke_back; -+ } -+ -+ ret = func(pctx, data); -+ if (ret < 0) { -+ kplogerror("failed call to func\n"); -+ goto poke_back; -+ } -+ -+ ret = ptrace(PTRACE_GETREGSET, pctx->pid, (void*)NT_PRSTATUS, (void*)®s_iov); -+ if (ret < 0) { -+ kplogerror("can't get updated regs - %d\n", pctx->pid); -+ goto poke_back; -+ } -+ -+ ret = ptrace(PTRACE_SETREGSET, pctx->pid, (void*)NT_PRSTATUS, (void*)&orig_regs_iov); -+ if (ret < 0) { -+ kplogerror("can't restore regs - %d\n", pctx->pid); -+ goto poke_back; -+ } -+ -+ *pregs = regs; -+ -+poke_back: -+ kpatch_process_mem_write( -+ proc, -+ (unsigned long *)orig_code, -+ libc_base, -+ codelen); -+ return ret; -+} -+ - void copy_regs(struct user_regs_struct *dst, - struct user_regs_struct *src) - { -diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c -index fa23757..9239f52 100644 ---- a/src/arch/x86/arch_ptrace.c -+++ b/src/arch/x86/arch_ptrace.c -@@ -22,6 +22,85 @@ - - #include - -+int -+kpatch_arch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, -+ const unsigned char *code, -+ size_t codelen, -+ struct user_regs_struct *pregs, -+ int (*func)(struct kpatch_ptrace_ctx *pctx, -+ void *data), -+ void *data) -+{ -+ struct user_regs_struct orig_regs, regs; -+ unsigned char orig_code[codelen]; -+ int ret; -+ kpatch_process_t *proc = pctx->proc; -+ unsigned long libc_base = proc->libc_base; -+ -+ ret = ptrace(PTRACE_GETREGS, pctx->pid, NULL, &orig_regs); -+ if (ret < 0) { -+ kplogerror("can't get regs - %d\n", pctx->pid); -+ return -1; -+ } -+ ret = kpatch_process_mem_read( -+ proc, -+ libc_base, -+ (unsigned long *)orig_code, -+ codelen); -+ if (ret < 0) { -+ kplogerror("can't peek original code - %d\n", pctx->pid); -+ return -1; -+ } -+ ret = kpatch_process_mem_write( -+ proc, -+ (unsigned long *)code, -+ libc_base, -+ codelen); -+ if (ret < 0) { -+ kplogerror("can't poke syscall code - %d\n", pctx->pid); -+ goto poke_back; -+ } -+ -+ regs = orig_regs; -+ regs.rip = libc_base; -+ -+ copy_regs(®s, pregs); -+ -+ ret = ptrace(PTRACE_SETREGS, pctx->pid, NULL, ®s); -+ if (ret < 0) { -+ kplogerror("can't set regs - %d\n", pctx->pid); -+ goto poke_back; -+ } -+ -+ ret = func(pctx, data); -+ if (ret < 0) { -+ kplogerror("failed call to func\n"); -+ goto poke_back; -+ } -+ -+ ret = ptrace(PTRACE_GETREGS, pctx->pid, NULL, ®s); -+ if (ret < 0) { -+ kplogerror("can't get updated regs - %d\n", pctx->pid); -+ goto poke_back; -+ } -+ -+ ret = ptrace(PTRACE_SETREGS, pctx->pid, NULL, &orig_regs); -+ if (ret < 0) { -+ kplogerror("can't restore regs - %d\n", pctx->pid); -+ goto poke_back; -+ } -+ -+ *pregs = regs; -+ -+poke_back: -+ kpatch_process_mem_write( -+ proc, -+ (unsigned long *)orig_code, -+ libc_base, -+ codelen); -+ return ret; -+} -+ - void copy_regs(struct user_regs_struct *dst, - struct user_regs_struct *src) - { -diff --git a/src/include/kpatch_ptrace.h b/src/include/kpatch_ptrace.h -index e434d68..f35aabd 100644 ---- a/src/include/kpatch_ptrace.h -+++ b/src/include/kpatch_ptrace.h -@@ -125,4 +125,13 @@ kpatch_arch_ptrace_waitpid(kpatch_process_t *proc, - void copy_regs(struct user_regs_struct *dst, - struct user_regs_struct *src); - -+int -+kpatch_arch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, -+ const unsigned char *code, -+ size_t codelen, -+ struct user_regs_struct *pregs, -+ int (*func)(struct kpatch_ptrace_ctx *pctx, -+ void *data), -+ void *data); -+ - #endif -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index 180bbaa..9056815 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -413,86 +413,6 @@ poke_back: - return ret; - } - --static --int --kpatch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, -- const unsigned char *code, -- size_t codelen, -- struct user_regs_struct *pregs, -- int (*func)(struct kpatch_ptrace_ctx *pctx, -- void *data), -- void *data) --{ -- struct user_regs_struct orig_regs, regs; -- unsigned char orig_code[codelen]; -- int ret; -- kpatch_process_t *proc = pctx->proc; -- unsigned long libc_base = proc->libc_base; -- -- ret = ptrace(PTRACE_GETREGS, pctx->pid, NULL, &orig_regs); -- if (ret < 0) { -- kplogerror("can't get regs - %d\n", pctx->pid); -- return -1; -- } -- ret = kpatch_process_mem_read( -- proc, -- libc_base, -- (unsigned long *)orig_code, -- codelen); -- if (ret < 0) { -- kplogerror("can't peek original code - %d\n", pctx->pid); -- return -1; -- } -- ret = kpatch_process_mem_write( -- proc, -- (unsigned long *)code, -- libc_base, -- codelen); -- if (ret < 0) { -- kplogerror("can't poke syscall code - %d\n", pctx->pid); -- goto poke_back; -- } -- -- regs = orig_regs; -- regs.rip = libc_base; -- -- copy_regs(®s, pregs); -- -- ret = ptrace(PTRACE_SETREGS, pctx->pid, NULL, ®s); -- if (ret < 0) { -- kplogerror("can't set regs - %d\n", pctx->pid); -- goto poke_back; -- } -- -- ret = func(pctx, data); -- if (ret < 0) { -- kplogerror("failed call to func\n"); -- goto poke_back; -- } -- -- ret = ptrace(PTRACE_GETREGS, pctx->pid, NULL, ®s); -- if (ret < 0) { -- kplogerror("can't get updated regs - %d\n", pctx->pid); -- goto poke_back; -- } -- -- ret = ptrace(PTRACE_SETREGS, pctx->pid, NULL, &orig_regs); -- if (ret < 0) { -- kplogerror("can't restore regs - %d\n", pctx->pid); -- goto poke_back; -- } -- -- *pregs = regs; -- --poke_back: -- kpatch_process_mem_write( -- proc, -- (unsigned long *)orig_code, -- libc_base, -- codelen); -- return ret; --} -- - static int - wait_for_stop(struct kpatch_ptrace_ctx *pctx, - void *data) -@@ -592,7 +512,7 @@ kpatch_execute_remote(struct kpatch_ptrace_ctx *pctx, - size_t codelen, - struct user_regs_struct *pregs) - { -- return kpatch_execute_remote_func(pctx, -+ return kpatch_arch_execute_remote_func(pctx, - code, - codelen, - pregs, --- -2.23.0 - diff --git a/0042-kpatch_ptrace-Split-function-kpatch_ptrace_resolve_i.patch b/0042-kpatch_ptrace-Split-function-kpatch_ptrace_resolve_i.patch deleted file mode 100644 index d591baa..0000000 --- a/0042-kpatch_ptrace-Split-function-kpatch_ptrace_resolve_i.patch +++ /dev/null @@ -1,146 +0,0 @@ -From aeeded44db6e705717bd24f3ffbbe878af47833b Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 16:40:42 +0800 -Subject: [PATCH 42/89] kpatch_ptrace: Split function - kpatch_ptrace_resolve_ifunc - -The function kpatch_ptrace_resolve_ifunc is arch related, first -rename it with kpatch_arch_ptrace_resolve_ifunc, and then make -separate definations in arch/x86/arch_ptrace.c and arch/aarch64/arch_ptrace.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_ptrace.c | 20 ++++++++++++++++++++ - src/arch/x86/arch_ptrace.c | 21 +++++++++++++++++++++ - src/include/kpatch_ptrace.h | 2 +- - src/kpatch_elf.c | 4 ++-- - src/kpatch_ptrace.c | 21 --------------------- - 5 files changed, 44 insertions(+), 24 deletions(-) - -diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c -index 821b4e8..4dee0e5 100644 ---- a/src/arch/aarch64/arch_ptrace.c -+++ b/src/arch/aarch64/arch_ptrace.c -@@ -22,6 +22,26 @@ - - #include - -+int kpatch_arch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, -+ unsigned long *addr) -+{ -+ struct user_regs_struct regs; -+ -+ unsigned char callrax[] = { -+ 0x00, 0x01, 0x3f, 0xd6, // blr x8 -+ 0xa0, 0x00, 0x20, 0xd4, // brk #5 -+ }; -+ int ret; -+ kpdebug("Executing callrax %lx (pid %d)\n", *addr, pctx->pid); -+ regs.regs[8] = *addr; -+ -+ ret = kpatch_execute_remote(pctx, callrax, sizeof(callrax), ®s); -+ if (ret == 0) -+ *addr = regs.regs[0]; -+ -+ return ret; -+} -+ - int - kpatch_arch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, - const unsigned char *code, -diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c -index 9239f52..3d49638 100644 ---- a/src/arch/x86/arch_ptrace.c -+++ b/src/arch/x86/arch_ptrace.c -@@ -22,6 +22,27 @@ - - #include - -+int kpatch_arch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, -+ unsigned long *addr) -+{ -+ struct user_regs_struct regs; -+ -+ unsigned char callrax[] = { -+ 0xff, 0xd0, /* call *%rax */ -+ 0xcc, /* int3 */ -+ }; -+ int ret; -+ -+ kpdebug("Executing callrax %lx (pid %d)\n", *addr, pctx->pid); -+ regs.rax = *addr; -+ -+ ret = kpatch_execute_remote(pctx, callrax, sizeof(callrax), ®s); -+ if (ret == 0) -+ *addr = regs.rax; -+ -+ return ret; -+} -+ - int - kpatch_arch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, - const unsigned char *code, -diff --git a/src/include/kpatch_ptrace.h b/src/include/kpatch_ptrace.h -index f35aabd..19a1b2c 100644 ---- a/src/include/kpatch_ptrace.h -+++ b/src/include/kpatch_ptrace.h -@@ -70,7 +70,7 @@ int kpatch_execute_remote(struct kpatch_ptrace_ctx *pctx, - size_t codelen, - struct user_regs_struct *pregs); - --int kpatch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, -+int kpatch_arch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, - unsigned long *addr); - unsigned long - kpatch_mmap_remote(struct kpatch_ptrace_ctx *pctx, -diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c -index 5506292..d443001 100644 ---- a/src/kpatch_elf.c -+++ b/src/kpatch_elf.c -@@ -677,8 +677,8 @@ kpatch_resolve_undefined(struct object_file *obj, - addr = vaddr2addr(o, addr); - - if (type == STT_GNU_IFUNC) -- if (kpatch_ptrace_resolve_ifunc(proc2pctx(obj->proc), &addr) < 0) -- kpfatalerror("kpatch_ptrace_resolve_ifunc failed\n"); -+ if (kpatch_arch_ptrace_resolve_ifunc(proc2pctx(obj->proc), &addr) < 0) -+ kpfatalerror("kpatch_arch_ptrace_resolve_ifunc failed\n"); - - break; - } -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index 9056815..cd961e1 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -672,27 +672,6 @@ static int kpatch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, - return ret; - } - --int kpatch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, -- unsigned long *addr) --{ -- struct user_regs_struct regs; -- -- unsigned char callrax[] = { -- 0xff, 0xd0, /* call *%rax */ -- 0xcc, /* int3 */ -- }; -- int ret; -- -- kpdebug("Executing callrax %lx (pid %d)\n", *addr, pctx->pid); -- regs.rax = *addr; -- -- ret = kpatch_execute_remote(pctx, callrax, sizeof(callrax), ®s); -- if (ret == 0) -- *addr = regs.rax; -- -- return ret; --} -- - #define MAX_ERRNO 4095 - unsigned long - kpatch_mmap_remote(struct kpatch_ptrace_ctx *pctx, --- -2.23.0 - diff --git a/0043-kpatch_ptrace-Split-function-kpatch_arch_prctl_remot.patch b/0043-kpatch_ptrace-Split-function-kpatch_arch_prctl_remot.patch deleted file mode 100644 index 5a8e066..0000000 --- a/0043-kpatch_ptrace-Split-function-kpatch_arch_prctl_remot.patch +++ /dev/null @@ -1,213 +0,0 @@ -From aa39ba7326c13546f68b51d95bf55004437c3110 Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 16:49:15 +0800 -Subject: [PATCH 43/89] kpatch_ptrace: Split function kpatch_arch_prctl_remote - -The function kpatch_arch_prctl_remote is arch related, let's make two -separate definations in arch/x86/arch_ptrace.c and arch/aarch64/arch_ptrace.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_ptrace.c | 49 ++++++++++++++++++++++++++++++++++ - src/arch/x86/arch_ptrace.c | 45 +++++++++++++++++++++++++++++++ - src/include/kpatch_ptrace.h | 2 ++ - src/kpatch_ptrace.c | 46 ------------------------------- - 4 files changed, 96 insertions(+), 46 deletions(-) - -diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c -index 4dee0e5..735927e 100644 ---- a/src/arch/aarch64/arch_ptrace.c -+++ b/src/arch/aarch64/arch_ptrace.c -@@ -22,6 +22,55 @@ - - #include - -+int kpatch_arch_prctl_remote(struct kpatch_ptrace_ctx *pctx, int code, unsigned long *addr) -+{ -+ struct user_regs_struct regs; -+ struct iovec regs_iov; -+ regs_iov.iov_base = ®s; -+ regs_iov.iov_len = sizeof(regs); -+ -+ unsigned long res, sp; -+ int ret; -+ -+ kpdebug("arch_prctl_remote: %d, %p\n", code, addr); -+ ret = ptrace(PTRACE_GETREGSET, pctx->pid, (void*)NT_PRSTATUS, (void*)®s_iov); -+ if (ret < 0) { -+ kpdebug("FAIL. Can't get regs - %s\n", strerror(errno)); -+ return -1; -+ } -+ ret = kpatch_process_mem_read(pctx->proc, -+ regs.sp, -+ &sp, -+ sizeof(sp)); -+ if (ret < 0) { -+ kplogerror("can't peek original stack data\n"); -+ return -1; -+ } -+ //ret = kpatch_syscall_remote(pctx, __NR_arch_prctl, code, regs.sp, 0, 0, 0, 0, &res); -+ if (ret < 0) -+ goto poke; -+ if (ret == 0 && res >= (unsigned long)-MAX_ERRNO) { -+ errno = -(long)res; -+ ret = -1; -+ goto poke; -+ } -+ ret = kpatch_process_mem_read(pctx->proc, -+ regs.sp, -+ &res, -+ sizeof(res)); -+ if (ret < 0) -+ kplogerror("can't peek new stack data\n"); -+ -+poke: -+ if (kpatch_process_mem_write(pctx->proc, -+ &sp, -+ regs.sp, -+ sizeof(sp))) -+ kplogerror("can't poke orig stack data\n"); -+ *addr = res; -+ return ret; -+} -+ - int kpatch_arch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, - unsigned long *addr) - { -diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c -index 3d49638..5f1e703 100644 ---- a/src/arch/x86/arch_ptrace.c -+++ b/src/arch/x86/arch_ptrace.c -@@ -22,6 +22,51 @@ - - #include - -+int kpatch_arch_prctl_remote(struct kpatch_ptrace_ctx *pctx, int code, unsigned long *addr) -+{ -+ struct user_regs_struct regs; -+ unsigned long res, rsp; -+ int ret; -+ -+ kpdebug("arch_prctl_remote: %d, %p\n", code, addr); -+ ret = ptrace(PTRACE_GETREGS, pctx->pid, NULL, ®s); -+ if (ret < 0) { -+ kpdebug("FAIL. Can't get regs - %s\n", strerror(errno)); -+ return -1; -+ } -+ ret = kpatch_process_mem_read(pctx->proc, -+ regs.rsp, -+ &rsp, -+ sizeof(rsp)); -+ if (ret < 0) { -+ kplogerror("can't peek original stack data\n"); -+ return -1; -+ } -+ ret = kpatch_syscall_remote(pctx, __NR_arch_prctl, code, regs.rsp, 0, 0, 0, 0, &res); -+ if (ret < 0) -+ goto poke; -+ if (ret == 0 && res >= (unsigned long)-MAX_ERRNO) { -+ errno = -(long)res; -+ ret = -1; -+ goto poke; -+ } -+ ret = kpatch_process_mem_read(pctx->proc, -+ regs.rsp, -+ &res, -+ sizeof(res)); -+ if (ret < 0) -+ kplogerror("can't peek new stack data\n"); -+ -+poke: -+ if (kpatch_process_mem_write(pctx->proc, -+ &rsp, -+ regs.rsp, -+ sizeof(rsp))) -+ kplogerror("can't poke orig stack data\n"); -+ *addr = res; -+ return ret; -+} -+ - int kpatch_arch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, - unsigned long *addr) - { -diff --git a/src/include/kpatch_ptrace.h b/src/include/kpatch_ptrace.h -index 19a1b2c..ddaa9e6 100644 ---- a/src/include/kpatch_ptrace.h -+++ b/src/include/kpatch_ptrace.h -@@ -84,6 +84,8 @@ int - kpatch_munmap_remote(struct kpatch_ptrace_ctx *pctx, - unsigned long addr, - size_t length); -+ -+#define MAX_ERRNO 4095 - int kpatch_arch_prctl_remote(struct kpatch_ptrace_ctx *pctx, int code, unsigned long *addr); - - int -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index cd961e1..4d2223e 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -672,7 +672,6 @@ static int kpatch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, - return ret; - } - --#define MAX_ERRNO 4095 - unsigned long - kpatch_mmap_remote(struct kpatch_ptrace_ctx *pctx, - unsigned long addr, -@@ -717,51 +716,6 @@ int kpatch_munmap_remote(struct kpatch_ptrace_ctx *pctx, - return 0; - } - --int kpatch_arch_prctl_remote(struct kpatch_ptrace_ctx *pctx, int code, unsigned long *addr) --{ -- struct user_regs_struct regs; -- unsigned long res, rsp; -- int ret; -- -- kpdebug("arch_prctl_remote: %d, %p\n", code, addr); -- ret = ptrace(PTRACE_GETREGS, pctx->pid, NULL, ®s); -- if (ret < 0) { -- kpdebug("FAIL. Can't get regs - %s\n", strerror(errno)); -- return -1; -- } -- ret = kpatch_process_mem_read(pctx->proc, -- regs.rsp, -- &rsp, -- sizeof(rsp)); -- if (ret < 0) { -- kplogerror("can't peek original stack data\n"); -- return -1; -- } -- ret = kpatch_syscall_remote(pctx, __NR_arch_prctl, code, regs.rsp, 0, 0, 0, 0, &res); -- if (ret < 0) -- goto poke; -- if (ret == 0 && res >= (unsigned long)-MAX_ERRNO) { -- errno = -(long)res; -- ret = -1; -- goto poke; -- } -- ret = kpatch_process_mem_read(pctx->proc, -- regs.rsp, -- &res, -- sizeof(res)); -- if (ret < 0) -- kplogerror("can't peek new stack data\n"); -- --poke: -- if (kpatch_process_mem_write(pctx->proc, -- &rsp, -- regs.rsp, -- sizeof(rsp))) -- kplogerror("can't poke orig stack data\n"); -- *addr = res; -- return ret; --} -- - int - kpatch_remote_write(struct kpatch_ptrace_ctx *pctx, - unsigned long dst, --- -2.23.0 - diff --git a/0044-kpatch_ptrace-Split-function-kpatch_syscall_remote.patch b/0044-kpatch_ptrace-Split-function-kpatch_syscall_remote.patch deleted file mode 100644 index fe64105..0000000 --- a/0044-kpatch_ptrace-Split-function-kpatch_syscall_remote.patch +++ /dev/null @@ -1,191 +0,0 @@ -From 335b90a54e629e0dc2f954ec2c3bd0b7e149aeec Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 12 Oct 2020 16:55:27 +0800 -Subject: [PATCH 44/89] kpatch_ptrace: Split function kpatch_syscall_remote - -The function kpatch_syscall_remote is arch related, first -rename it with kpatch_arch_syscall_remote, and then make -separate definations in arch/x86/arch_ptrace.c and arch/aarch64/arch_ptrace.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_ptrace.c | 31 ++++++++++++++++++++++++++++++- - src/arch/x86/arch_ptrace.c | 31 ++++++++++++++++++++++++++++++- - src/include/kpatch_ptrace.h | 5 +++++ - src/kpatch_ptrace.c | 33 ++------------------------------- - 4 files changed, 67 insertions(+), 33 deletions(-) - -diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c -index 735927e..a444285 100644 ---- a/src/arch/aarch64/arch_ptrace.c -+++ b/src/arch/aarch64/arch_ptrace.c -@@ -22,6 +22,35 @@ - - #include - -+int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, -+ unsigned long arg1, unsigned long arg2, unsigned long arg3, -+ unsigned long arg4, unsigned long arg5, unsigned long arg6, -+ unsigned long *res) -+{ -+ struct user_regs_struct regs; -+ -+ unsigned char syscall[] = { -+ 0x01, 0x00, 0x00, 0xd4, //0xd4000001 svc #0 = syscall -+ 0xa0, 0x00, 0x20, 0xd4, //0xd42000a0 brk #5 = int3 -+ }; -+ int ret; -+ -+ kpdebug("Executing syscall %d (pid %d)...\n", nr, pctx->pid); -+ regs.regs[8] = (unsigned long)nr; -+ regs.regs[0] = arg1; -+ regs.regs[1] = arg2; -+ regs.regs[2] = arg3; -+ regs.regs[3] = arg4; -+ regs.regs[4] = arg5; -+ regs.regs[5] = arg6; -+ -+ ret = kpatch_execute_remote(pctx, syscall, sizeof(syscall), ®s); -+ if (ret == 0) -+ *res = regs.regs[0]; -+ -+ return ret; -+} -+ - int kpatch_arch_prctl_remote(struct kpatch_ptrace_ctx *pctx, int code, unsigned long *addr) - { - struct user_regs_struct regs; -@@ -46,7 +75,7 @@ int kpatch_arch_prctl_remote(struct kpatch_ptrace_ctx *pctx, int code, unsigned - kplogerror("can't peek original stack data\n"); - return -1; - } -- //ret = kpatch_syscall_remote(pctx, __NR_arch_prctl, code, regs.sp, 0, 0, 0, 0, &res); -+ //ret = kpatch_arch_syscall_remote(pctx, __NR_arch_prctl, code, regs.sp, 0, 0, 0, 0, &res); - if (ret < 0) - goto poke; - if (ret == 0 && res >= (unsigned long)-MAX_ERRNO) { -diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c -index 5f1e703..10127a3 100644 ---- a/src/arch/x86/arch_ptrace.c -+++ b/src/arch/x86/arch_ptrace.c -@@ -22,6 +22,35 @@ - - #include - -+int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, -+ unsigned long arg1, unsigned long arg2, unsigned long arg3, -+ unsigned long arg4, unsigned long arg5, unsigned long arg6, -+ unsigned long *res) -+{ -+ struct user_regs_struct regs; -+ -+ unsigned char syscall[] = { -+ 0x0f, 0x05, /* syscall */ -+ 0xcc, /* int3 */ -+ }; -+ int ret; -+ -+ kpdebug("Executing syscall %d (pid %d)...\n", nr, pctx->pid); -+ regs.rax = (unsigned long)nr; -+ regs.rdi = arg1; -+ regs.rsi = arg2; -+ regs.rdx = arg3; -+ regs.r10 = arg4; -+ regs.r8 = arg5; -+ regs.r9 = arg6; -+ -+ ret = kpatch_execute_remote(pctx, syscall, sizeof(syscall), ®s); -+ if (ret == 0) -+ *res = regs.rax; -+ -+ return ret; -+} -+ - int kpatch_arch_prctl_remote(struct kpatch_ptrace_ctx *pctx, int code, unsigned long *addr) - { - struct user_regs_struct regs; -@@ -42,7 +71,7 @@ int kpatch_arch_prctl_remote(struct kpatch_ptrace_ctx *pctx, int code, unsigned - kplogerror("can't peek original stack data\n"); - return -1; - } -- ret = kpatch_syscall_remote(pctx, __NR_arch_prctl, code, regs.rsp, 0, 0, 0, 0, &res); -+ ret = kpatch_arch_syscall_remote(pctx, __NR_arch_prctl, code, regs.rsp, 0, 0, 0, 0, &res); - if (ret < 0) - goto poke; - if (ret == 0 && res >= (unsigned long)-MAX_ERRNO) { -diff --git a/src/include/kpatch_ptrace.h b/src/include/kpatch_ptrace.h -index ddaa9e6..c8cfd41 100644 ---- a/src/include/kpatch_ptrace.h -+++ b/src/include/kpatch_ptrace.h -@@ -136,4 +136,9 @@ kpatch_arch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, - void *data), - void *data); - -+int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, -+ unsigned long arg1, unsigned long arg2, unsigned long arg3, -+ unsigned long arg4, unsigned long arg5, unsigned long arg6, -+ unsigned long *res); -+ - #endif -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index 4d2223e..057b08a 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -643,35 +643,6 @@ kpatch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) - return 0; - } - --static int kpatch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, -- unsigned long arg1, unsigned long arg2, unsigned long arg3, -- unsigned long arg4, unsigned long arg5, unsigned long arg6, -- unsigned long *res) --{ -- struct user_regs_struct regs; -- -- unsigned char syscall[] = { -- 0x0f, 0x05, /* syscall */ -- 0xcc, /* int3 */ -- }; -- int ret; -- -- kpdebug("Executing syscall %d (pid %d)...\n", nr, pctx->pid); -- regs.rax = (unsigned long)nr; -- regs.rdi = arg1; -- regs.rsi = arg2; -- regs.rdx = arg3; -- regs.r10 = arg4; -- regs.r8 = arg5; -- regs.r9 = arg6; -- -- ret = kpatch_execute_remote(pctx, syscall, sizeof(syscall), ®s); -- if (ret == 0) -- *res = regs.rax; -- -- return ret; --} -- - unsigned long - kpatch_mmap_remote(struct kpatch_ptrace_ctx *pctx, - unsigned long addr, -@@ -686,7 +657,7 @@ kpatch_mmap_remote(struct kpatch_ptrace_ctx *pctx, - - kpdebug("mmap_remote: 0x%lx+%lx, %x, %x, %d, %lx\n", addr, length, - prot, flags, fd, offset); -- ret = kpatch_syscall_remote(pctx, __NR_mmap, (unsigned long)addr, -+ ret = kpatch_arch_syscall_remote(pctx, __NR_mmap, (unsigned long)addr, - length, prot, flags, fd, offset, &res); - if (ret < 0) - return 0; -@@ -705,7 +676,7 @@ int kpatch_munmap_remote(struct kpatch_ptrace_ctx *pctx, - unsigned long res; - - kpdebug("munmap_remote: 0x%lx+%lx\n", addr, length); -- ret = kpatch_syscall_remote(pctx, __NR_munmap, (unsigned long)addr, -+ ret = kpatch_arch_syscall_remote(pctx, __NR_munmap, (unsigned long)addr, - length, 0, 0, 0, 0, &res); - if (ret < 0) - return -1; --- -2.23.0 - diff --git a/0045-kpatch_ptrace-Split-function-wait_for_mmap.patch b/0045-kpatch_ptrace-Split-function-wait_for_mmap.patch deleted file mode 100644 index 9556e27..0000000 --- a/0045-kpatch_ptrace-Split-function-wait_for_mmap.patch +++ /dev/null @@ -1,239 +0,0 @@ -From 05b64620354b8f8bd36c3f782eff9cd145f57fea Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Tue, 13 Oct 2020 11:10:11 +0800 -Subject: [PATCH 45/89] kpatch_ptrace: Split function wait_for_mmap - -The function wait_for_mmap is arch related, so make two separate -definations in arch/x86/arch_ptrace.c and arch/aarch64/arch_ptrace.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_ptrace.c | 58 ++++++++++++++++++++++++++++++++++ - src/arch/x86/arch_ptrace.c | 58 ++++++++++++++++++++++++++++++++++ - src/include/kpatch_ptrace.h | 3 ++ - src/kpatch_ptrace.c | 58 ---------------------------------- - 4 files changed, 119 insertions(+), 58 deletions(-) - -diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c -index a444285..b21189e 100644 ---- a/src/arch/aarch64/arch_ptrace.c -+++ b/src/arch/aarch64/arch_ptrace.c -@@ -22,6 +22,64 @@ - - #include - -+int -+wait_for_mmap(struct kpatch_ptrace_ctx *pctx, -+ unsigned long *pbase) -+{ -+ int ret, status = 0, insyscall = 0; -+ long rv; -+ -+ while (1) { -+ ret = ptrace(PTRACE_SYSCALL, pctx->pid, NULL, -+ (void *)(uintptr_t)status); -+ if (ret < 0) { -+ kplogerror("can't PTRACE_SYSCALL tracee - %d\n", -+ pctx->pid); -+ return -1; -+ } -+ -+ ret = waitpid(pctx->pid, &status, __WALL); -+ if (ret < 0) { -+ kplogerror("can't wait tracee - %d\n", pctx->pid); -+ return -1; -+ } -+ -+ if (WIFEXITED(status)) { -+ status = WTERMSIG(status); -+ continue; -+ } else if (!WIFSTOPPED(status)) { -+ status = 0; -+ continue; -+ } -+ -+ status = 0; -+ -+ if (insyscall == 0) { -+ rv = ptrace(PTRACE_PEEKUSER, pctx->pid, -+ offsetof(struct user_regs_struct, -+ regs[29]), -+ NULL); -+ if (rv == -1) { -+ kplogerror("ptrace(PTRACE_PEEKUSER)\n"); -+ return -1; -+ } -+ insyscall = rv; -+ continue; -+ } else if (insyscall == __NR_mmap) { -+ rv = ptrace(PTRACE_PEEKUSER, pctx->pid, -+ offsetof(struct user_regs_struct, -+ regs[8]), -+ NULL); -+ *pbase = rv; -+ break; -+ } -+ -+ insyscall = !insyscall; -+ } -+ -+ return 0; -+} -+ - int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, - unsigned long arg1, unsigned long arg2, unsigned long arg3, - unsigned long arg4, unsigned long arg5, unsigned long arg6, -diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c -index 10127a3..0032cbd 100644 ---- a/src/arch/x86/arch_ptrace.c -+++ b/src/arch/x86/arch_ptrace.c -@@ -22,6 +22,64 @@ - - #include - -+int -+wait_for_mmap(struct kpatch_ptrace_ctx *pctx, -+ unsigned long *pbase) -+{ -+ int ret, status = 0, insyscall = 0; -+ long rv; -+ -+ while (1) { -+ ret = ptrace(PTRACE_SYSCALL, pctx->pid, NULL, -+ (void *)(uintptr_t)status); -+ if (ret < 0) { -+ kplogerror("can't PTRACE_SYSCALL tracee - %d\n", -+ pctx->pid); -+ return -1; -+ } -+ -+ ret = waitpid(pctx->pid, &status, __WALL); -+ if (ret < 0) { -+ kplogerror("can't wait tracee - %d\n", pctx->pid); -+ return -1; -+ } -+ -+ if (WIFEXITED(status)) { -+ status = WTERMSIG(status); -+ continue; -+ } else if (!WIFSTOPPED(status)) { -+ status = 0; -+ continue; -+ } -+ -+ status = 0; -+ -+ if (insyscall == 0) { -+ rv = ptrace(PTRACE_PEEKUSER, pctx->pid, -+ offsetof(struct user_regs_struct, -+ orig_rax), -+ NULL); -+ if (rv == -1) { -+ kplogerror("ptrace(PTRACE_PEEKUSER)\n"); -+ return -1; -+ } -+ insyscall = rv; -+ continue; -+ } else if (insyscall == __NR_mmap) { -+ rv = ptrace(PTRACE_PEEKUSER, pctx->pid, -+ offsetof(struct user_regs_struct, -+ rax), -+ NULL); -+ *pbase = rv; -+ break; -+ } -+ -+ insyscall = !insyscall; -+ } -+ -+ return 0; -+} -+ - int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, - unsigned long arg1, unsigned long arg2, unsigned long arg3, - unsigned long arg4, unsigned long arg5, unsigned long arg6, -diff --git a/src/include/kpatch_ptrace.h b/src/include/kpatch_ptrace.h -index c8cfd41..5abcf26 100644 ---- a/src/include/kpatch_ptrace.h -+++ b/src/include/kpatch_ptrace.h -@@ -141,4 +141,7 @@ int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, - unsigned long arg4, unsigned long arg5, unsigned long arg6, - unsigned long *res); - -+int wait_for_mmap(struct kpatch_ptrace_ctx *pctx, -+ unsigned long *pbase); -+ - #endif -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index 057b08a..7ab550c 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -448,64 +448,6 @@ wait_for_stop(struct kpatch_ptrace_ctx *pctx, - return 0; - } - --static int --wait_for_mmap(struct kpatch_ptrace_ctx *pctx, -- unsigned long *pbase) --{ -- int ret, status = 0, insyscall = 0; -- long rv; -- -- while (1) { -- ret = ptrace(PTRACE_SYSCALL, pctx->pid, NULL, -- (void *)(uintptr_t)status); -- if (ret < 0) { -- kplogerror("can't PTRACE_SYSCALL tracee - %d\n", -- pctx->pid); -- return -1; -- } -- -- ret = waitpid(pctx->pid, &status, __WALL); -- if (ret < 0) { -- kplogerror("can't wait tracee - %d\n", pctx->pid); -- return -1; -- } -- -- if (WIFEXITED(status)) { -- status = WTERMSIG(status); -- continue; -- } else if (!WIFSTOPPED(status)) { -- status = 0; -- continue; -- } -- -- status = 0; -- -- if (insyscall == 0) { -- rv = ptrace(PTRACE_PEEKUSER, pctx->pid, -- offsetof(struct user_regs_struct, -- orig_rax), -- NULL); -- if (rv == -1) { -- kplogerror("ptrace(PTRACE_PEEKUSER)\n"); -- return -1; -- } -- insyscall = rv; -- continue; -- } else if (insyscall == __NR_mmap) { -- rv = ptrace(PTRACE_PEEKUSER, pctx->pid, -- offsetof(struct user_regs_struct, -- rax), -- NULL); -- *pbase = rv; -- break; -- } -- -- insyscall = !insyscall; -- } -- -- return 0; --} -- - int - kpatch_execute_remote(struct kpatch_ptrace_ctx *pctx, - const unsigned char *code, --- -2.23.0 - diff --git a/0046-kpatch_ptrace-Split-function-kpatch_ptrace_kickstart.patch b/0046-kpatch_ptrace-Split-function-kpatch_ptrace_kickstart.patch deleted file mode 100644 index e8aef2a..0000000 --- a/0046-kpatch_ptrace-Split-function-kpatch_ptrace_kickstart.patch +++ /dev/null @@ -1,401 +0,0 @@ -From f53cbbe63cbe16b2b0eb0466b5c85ea35f68da2b Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Tue, 13 Oct 2020 11:22:27 +0800 -Subject: [PATCH 46/89] kpatch_ptrace: Split function - kpatch_ptrace_kickstart_execve_wrapper - -The function kpatch_ptrace_kickstart_execve_wrapper is arch related, -first rename it with kpatch_arch_ptrace_kickstart_execve_wrapper, -and then make separate definations in arch/x86/arch_ptrace.c and -arch/aarch64/arch_ptrace.c - -Signed-off-by: Jiajie Li -Signed-off-by: Ying Fang ---- - src/arch/aarch64/arch_ptrace.c | 99 +++++++++++++++++++++++++++++++ - src/arch/x86/arch_ptrace.c | 99 +++++++++++++++++++++++++++++++ - src/include/kpatch_ptrace.h | 5 +- - src/kpatch_process.c | 2 +- - src/kpatch_ptrace.c | 103 +-------------------------------- - 5 files changed, 205 insertions(+), 103 deletions(-) - -diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c -index b21189e..9f87d10 100644 ---- a/src/arch/aarch64/arch_ptrace.c -+++ b/src/arch/aarch64/arch_ptrace.c -@@ -22,6 +22,105 @@ - - #include - -+/** -+ * This is rather tricky since we are accounting for the non-main -+ * thread calling for execve(). See `ptrace(2)` for details. -+ * -+ * FIXME(pboldin): this is broken for multi-threaded calls -+ * to execve. Sight. -+ */ -+int -+kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) -+{ -+ int ret, pid = 0; -+ struct kpatch_ptrace_ctx *pctx, *ptmp, *execve_pctx = NULL; -+ long rv; -+ -+ kpdebug("kpatch_arch_ptrace_kickstart_execve_wrapper\n"); -+ -+ list_for_each_entry(pctx, &proc->ptrace.pctxs, list) { -+ /* proc->pid equals to THREAD ID of the thread -+ * executing execve.so's version of execve -+ */ -+ if (pctx->pid != proc->pid) -+ continue; -+ execve_pctx = pctx; -+ break; -+ } -+ -+ if (execve_pctx == NULL) { -+ kperr("can't find thread executing execve"); -+ return -1; -+ } -+ -+ /* Send a message to our `execve` wrapper so it will continue -+ * execution -+ */ -+ ret = send(proc->send_fd, &ret, sizeof(ret), 0); -+ if (ret < 0) { -+ kplogerror("send failed\n"); -+ return ret; -+ } -+ -+ /* Wait for it to reach BRKN instruction just before real execve */ -+ while (1) { -+ ret = wait_for_stop(execve_pctx, NULL); -+ if (ret < 0) { -+ kplogerror("wait_for_stop\n"); -+ return ret; -+ } -+ -+ rv = ptrace(PTRACE_PEEKUSER, execve_pctx->pid, -+ offsetof(struct user_regs_struct, pc), -+ NULL); -+ if (rv == -1) -+ return rv; -+ -+ rv = ptrace(PTRACE_PEEKTEXT, execve_pctx->pid, -+ rv - 1, NULL); -+ if (rv == -1) -+ return rv; -+ if ((unsigned char)rv == 0xcc) -+ break; -+ } -+ -+ /* Wait for SIGTRAP from the execve. It happens from the thread -+ * group ID, so find it if thread doing execve() is not it. */ -+ if (execve_pctx != proc2pctx(proc)) { -+ pid = get_threadgroup_id(proc->pid); -+ if (pid < 0) -+ return -1; -+ -+ proc->pid = pid; -+ } -+ -+ ret = wait_for_stop(execve_pctx, (void *)(uintptr_t)pid); -+ if (ret < 0) { -+ kplogerror("waitpid\n"); -+ return ret; -+ } -+ -+ list_for_each_entry_safe(pctx, ptmp, &proc->ptrace.pctxs, list) { -+ if (pctx->pid == proc->pid) -+ continue; -+ kpatch_ptrace_detach(pctx); -+ kpatch_ptrace_ctx_destroy(pctx); -+ } -+ -+ /* Suddenly, /proc/pid/mem gets invalidated */ -+ { -+ char buf[128]; -+ close(proc->memfd); -+ -+ snprintf(buf, sizeof(buf), "/proc/%d/mem", proc->pid); -+ proc->memfd = open(buf, O_RDWR); -+ } -+ -+ kpdebug("...done\n"); -+ -+ return 0; -+} -+ - int - wait_for_mmap(struct kpatch_ptrace_ctx *pctx, - unsigned long *pbase) -diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c -index 0032cbd..ef0f460 100644 ---- a/src/arch/x86/arch_ptrace.c -+++ b/src/arch/x86/arch_ptrace.c -@@ -22,6 +22,105 @@ - - #include - -+/** -+ * This is rather tricky since we are accounting for the non-main -+ * thread calling for execve(). See `ptrace(2)` for details. -+ * -+ * FIXME(pboldin): this is broken for multi-threaded calls -+ * to execve. Sight. -+ */ -+int -+kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) -+{ -+ int ret, pid = 0; -+ struct kpatch_ptrace_ctx *pctx, *ptmp, *execve_pctx = NULL; -+ long rv; -+ -+ kpdebug("kpatch_arch_ptrace_kickstart_execve_wrapper\n"); -+ -+ list_for_each_entry(pctx, &proc->ptrace.pctxs, list) { -+ /* proc->pid equals to THREAD ID of the thread -+ * executing execve.so's version of execve -+ */ -+ if (pctx->pid != proc->pid) -+ continue; -+ execve_pctx = pctx; -+ break; -+ } -+ -+ if (execve_pctx == NULL) { -+ kperr("can't find thread executing execve"); -+ return -1; -+ } -+ -+ /* Send a message to our `execve` wrapper so it will continue -+ * execution -+ */ -+ ret = send(proc->send_fd, &ret, sizeof(ret), 0); -+ if (ret < 0) { -+ kplogerror("send failed\n"); -+ return ret; -+ } -+ -+ /* Wait for it to reach BRKN instruction just before real execve */ -+ while (1) { -+ ret = wait_for_stop(execve_pctx, NULL); -+ if (ret < 0) { -+ kplogerror("wait_for_stop\n"); -+ return ret; -+ } -+ -+ rv = ptrace(PTRACE_PEEKUSER, execve_pctx->pid, -+ offsetof(struct user_regs_struct, rip), -+ NULL); -+ if (rv == -1) -+ return rv; -+ -+ rv = ptrace(PTRACE_PEEKTEXT, execve_pctx->pid, -+ rv - 1, NULL); -+ if (rv == -1) -+ return rv; -+ if ((unsigned char)rv == 0xcc) -+ break; -+ } -+ -+ /* Wait for SIGTRAP from the execve. It happens from the thread -+ * group ID, so find it if thread doing execve() is not it. */ -+ if (execve_pctx != proc2pctx(proc)) { -+ pid = get_threadgroup_id(proc->pid); -+ if (pid < 0) -+ return -1; -+ -+ proc->pid = pid; -+ } -+ -+ ret = wait_for_stop(execve_pctx, (void *)(uintptr_t)pid); -+ if (ret < 0) { -+ kplogerror("waitpid\n"); -+ return ret; -+ } -+ -+ list_for_each_entry_safe(pctx, ptmp, &proc->ptrace.pctxs, list) { -+ if (pctx->pid == proc->pid) -+ continue; -+ kpatch_ptrace_detach(pctx); -+ kpatch_ptrace_ctx_destroy(pctx); -+ } -+ -+ /* Suddenly, /proc/pid/mem gets invalidated */ -+ { -+ char buf[128]; -+ close(proc->memfd); -+ -+ snprintf(buf, sizeof(buf), "/proc/%d/mem", proc->pid); -+ proc->memfd = open(buf, O_RDWR); -+ } -+ -+ kpdebug("...done\n"); -+ -+ return 0; -+} -+ - int - wait_for_mmap(struct kpatch_ptrace_ctx *pctx, - unsigned long *pbase) -diff --git a/src/include/kpatch_ptrace.h b/src/include/kpatch_ptrace.h -index 5abcf26..f0e83c0 100644 ---- a/src/include/kpatch_ptrace.h -+++ b/src/include/kpatch_ptrace.h -@@ -55,7 +55,10 @@ int kpatch_ptrace_detach(struct kpatch_ptrace_ctx *pctx); - int kpatch_ptrace_handle_ld_linux(kpatch_process_t *proc, - unsigned long *pentry_point); - --int kpatch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc); -+ -+int wait_for_stop(struct kpatch_ptrace_ctx *pctx, void *data); -+int get_threadgroup_id(int tid); -+int kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc); - int kpatch_ptrace_get_entry_point(struct kpatch_ptrace_ctx *pctx, - unsigned long *pentry_point); - -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index 9561962..f987b7e 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -856,7 +856,7 @@ kpatch_process_kickstart_execve_wrapper(kpatch_process_t *proc) - { - int ret; - -- ret = kpatch_ptrace_kickstart_execve_wrapper(proc); -+ ret = kpatch_arch_ptrace_kickstart_execve_wrapper(proc); - if (ret < 0) - return -1; - -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index 7ab550c..d0bfbdd 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -413,7 +413,7 @@ poke_back: - return ret; - } - --static int -+int - wait_for_stop(struct kpatch_ptrace_ctx *pctx, - void *data) - { -@@ -463,7 +463,7 @@ kpatch_execute_remote(struct kpatch_ptrace_ctx *pctx, - } - - /* FIXME(pboldin) buf might be too small */ --static int -+int - get_threadgroup_id(int tid) - { - FILE *fh; -@@ -486,105 +486,6 @@ get_threadgroup_id(int tid) - return pid; - } - --/** -- * This is rather tricky since we are accounting for the non-main -- * thread calling for execve(). See `ptrace(2)` for details. -- * -- * FIXME(pboldin): this is broken for multi-threaded calls -- * to execve. Sight. -- */ --int --kpatch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) --{ -- int ret, pid = 0; -- struct kpatch_ptrace_ctx *pctx, *ptmp, *execve_pctx = NULL; -- long rv; -- -- kpdebug("kpatch_ptrace_kickstart_execve_wrapper\n"); -- -- list_for_each_entry(pctx, &proc->ptrace.pctxs, list) { -- /* proc->pid equals to THREAD ID of the thread -- * executing execve.so's version of execve -- */ -- if (pctx->pid != proc->pid) -- continue; -- execve_pctx = pctx; -- break; -- } -- -- if (execve_pctx == NULL) { -- kperr("can't find thread executing execve"); -- return -1; -- } -- -- /* Send a message to our `execve` wrapper so it will continue -- * execution -- */ -- ret = send(proc->send_fd, &ret, sizeof(ret), 0); -- if (ret < 0) { -- kplogerror("send failed\n"); -- return ret; -- } -- -- /* Wait for it to reach BRKN instruction just before real execve */ -- while (1) { -- ret = wait_for_stop(execve_pctx, NULL); -- if (ret < 0) { -- kplogerror("wait_for_stop\n"); -- return ret; -- } -- -- rv = ptrace(PTRACE_PEEKUSER, execve_pctx->pid, -- offsetof(struct user_regs_struct, rip), -- NULL); -- if (rv == -1) -- return rv; -- -- rv = ptrace(PTRACE_PEEKTEXT, execve_pctx->pid, -- rv - 1, NULL); -- if (rv == -1) -- return rv; -- if ((unsigned char)rv == 0xcc) -- break; -- } -- -- /* Wait for SIGTRAP from the execve. It happens from the thread -- * group ID, so find it if thread doing execve() is not it. */ -- if (execve_pctx != proc2pctx(proc)) { -- pid = get_threadgroup_id(proc->pid); -- if (pid < 0) -- return -1; -- -- proc->pid = pid; -- } -- -- ret = wait_for_stop(execve_pctx, (void *)(uintptr_t)pid); -- if (ret < 0) { -- kplogerror("waitpid\n"); -- return ret; -- } -- -- list_for_each_entry_safe(pctx, ptmp, &proc->ptrace.pctxs, list) { -- if (pctx->pid == proc->pid) -- continue; -- kpatch_ptrace_detach(pctx); -- kpatch_ptrace_ctx_destroy(pctx); -- } -- -- /* Suddenly, /proc/pid/mem gets invalidated */ -- { -- char buf[128]; -- close(proc->memfd); -- -- snprintf(buf, sizeof(buf), "/proc/%d/mem", proc->pid); -- proc->memfd = open(buf, O_RDWR); -- } -- -- kpdebug("...done\n"); -- -- return 0; --} -- - unsigned long - kpatch_mmap_remote(struct kpatch_ptrace_ctx *pctx, - unsigned long addr, --- -2.23.0 - diff --git a/0047-Allow-init_t-create-lnk-file.patch b/0047-Allow-init_t-create-lnk-file.patch deleted file mode 100644 index b6b40bb..0000000 --- a/0047-Allow-init_t-create-lnk-file.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 7782210333c3296b68f954b46284024701ec79e4 Mon Sep 17 00:00:00 2001 -From: imxcc -Date: Wed, 8 Sep 2021 11:28:28 +0800 -Subject: [PATCH] Allow init_t create lnk file - -Bugfix: When the selinux mode is enforcing, libcare.socket cannot -create symlink libcare.sock. This will cause the libcare.service -to fail to start. - -Signed-off-by: imxcc ---- - dist/selinux/libcare.te | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/dist/selinux/libcare.te b/dist/selinux/libcare.te -index c240875..936fc34 100644 ---- a/dist/selinux/libcare.te -+++ b/dist/selinux/libcare.te -@@ -49,6 +49,8 @@ allow libcare_t libcare_file_t: file exec_file_perms; - allow libcare_t libcare_file_t: dir list_dir_perms; - allow libcare_t libcare_file_t: lnk_file read_lnk_file_perms; - -+allow init_t var_run_t:lnk_file create; -+ - # to read patient's /proc entries and be able to attach to it - allow libcare_t self: capability { dac_override dac_read_search sys_ptrace }; - --- -2.27.0 - diff --git a/0048-libcare-patch-make-add-j-jobs-option.patch b/0048-libcare-patch-make-add-j-jobs-option.patch deleted file mode 100644 index 0fefe88..0000000 --- a/0048-libcare-patch-make-add-j-jobs-option.patch +++ /dev/null @@ -1,89 +0,0 @@ -From ecb0c4d9aa87da11f5477a760e4eb28c3ce53798 Mon Sep 17 00:00:00 2001 -From: RToax <2386499836@qq.com> -Date: Sun, 26 Sep 2021 01:26:37 +0000 -Subject: [PATCH] libcare-patch-make: add `-j|--jobs` option - -Building large project with single thread is too slow. So we -add `-j|--jobs` option to libcare-patch-make scripts to speed -up compilation. - -Signed-off-by: RToax <2386499836@qq.com> -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/libcare-patch-make | 17 ++++++++++++++--- - 1 file changed, 14 insertions(+), 3 deletions(-) - -diff --git a/src/libcare-patch-make b/src/libcare-patch-make -index 7138f89..64fc709 100755 ---- a/src/libcare-patch-make -+++ b/src/libcare-patch-make -@@ -7,6 +7,7 @@ Makes `kpatch'es for the makesystem in the current directory. - Usage: libcare-patch-make [-h|--help] [-u|--update || -c|--clean] - [-s|--srcdir=SRCDIR] \ - [-d|--destdir=DESTDIRVAR] \ -+ [-j|--jobs=] \ - PATCH1 PATCH2 ... - - Run from inside the directory with `make'ble software. Makesystem must support -@@ -17,6 +18,8 @@ install with specified DESTDIR. - working on patch utils. - -d --destdir specify variable makefile system uses to specify destination - directory for the installation -+ -j --jobs specify variable makefile system jobs of compile, for example -+ `make -j 4` is startup `4` jobs to compile. - EOF - exit ${1-0} - } -@@ -72,6 +75,9 @@ trap "restore_origs" 0 - build_objects() { - restore_origs - -+ JOBS_MAKE="" -+ test $jobs_make && JOBS_MAKE="-j $jobs_make" -+ - if test -n "$do_clean"; then - make $LPMAKEFILE clean >$MAKE_OUTPUT 2>&1 - rm -rf "$LPMAKE_ORIGINAL_DIR" "$LPMAKE_PATCHED_DIR" -@@ -81,7 +87,7 @@ build_objects() { - export KPCC_DBGFILTER_ARGS="" - - echo "${green}BUILDING ORIGINAL CODE${reset}" -- make $LPMAKEFILE >$MAKE_OUTPUT 2>&1 -+ make $LPMAKEFILE $JOBS_MAKE >$MAKE_OUTPUT 2>&1 - - echo "${green}INSTALLING ORIGINAL OBJECTS INTO $LPMAKE_ORIGINAL_DIR${reset}" - make $LPMAKEFILE install \ -@@ -107,7 +113,7 @@ build_objects() { - export KPCC_APPEND_ARGS="-Wl,-q" - - echo "${green}BUILDING PATCHED CODE${reset}" -- make $LPMAKEFILE >$MAKE_OUTPUT 2>&1 -+ make $LPMAKEFILE $JOBS_MAKE >$MAKE_OUTPUT 2>&1 - - echo "${green}INSTALLING PATCHED OBJECTS INTO $LPMAKE_PATCHED_DIR${reset}" - make $LPMAKEFILE install \ -@@ -149,7 +155,7 @@ build_kpatches() { - main() { - PROG_NAME=$(basename $0) - -- TEMP=$(getopt -o s:ucd --long srcdir:,update,clean,destdir: -n ${PROG_NAME} -- "$@" || usage 1) -+ TEMP=$(getopt -o s:ucd:j: --long srcdir:,update,clean,destdir:,jobs: -n ${PROG_NAME} -- "$@" || usage 1) - eval set -- "$TEMP" - - destdir="DESTDIR" -@@ -173,6 +179,11 @@ main() { - destdir=$1 - shift - ;; -+ -j|--jobs) -+ shift -+ jobs_make=$1 -+ shift -+ ;; - --) - shift; break; - ;; --- -2.27.0 - diff --git a/0049-kpatch_user.c-fix-gcc-warning.patch b/0049-kpatch_user.c-fix-gcc-warning.patch deleted file mode 100644 index eaab8b3..0000000 --- a/0049-kpatch_user.c-fix-gcc-warning.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 466df96b05896eefbdd10e4c158133542740882d Mon Sep 17 00:00:00 2001 -From: RToax <2386499836@qq.com> -Date: Thu, 30 Sep 2021 06:40:57 +0000 -Subject: [PATCH] kpatch_user.c: fix gcc warning -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -While using gcc version 10.3.1 to compile libcareplus, we -will get the following warning: - -warning: passing argument 2 to restrict-qualified parameter aliases with argument 1 -gcc -Wall -g -O2 -D_GNU_SOURCE -I /home/rongtao/libcareplus/src -Wuninitialized -Wreturn-type -Wno-builtin-macro-redefined -Wno-deprecated-declarations -DDEBUG -O0 -g -o kpatch_user.o -c kpatch_user.c -kpatch_user.c: In function ‘processes_do’: -kpatch_user.c:895:22: warning: passing argument 2 to restrict-qualified parameter aliases with argument 1 [-Wrestrict] - rv = readlink(buf, buf, sizeof(buf)); - -This patch will fix it. - -Signed-off-by: RToax <2386499836@qq.com> -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_user.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/kpatch_user.c b/src/kpatch_user.c -index 11e3408..c74a5cd 100644 ---- a/src/kpatch_user.c -+++ b/src/kpatch_user.c -@@ -869,7 +869,7 @@ processes_do(int pid, callback_t callback, void *data) - DIR *dir; - struct dirent *de; - int ret = 0, rv; -- char *tmp, buf[64]; -+ char *tmp, buf[64], buf2[64]; - - if (pid != -1) - return callback(pid, data); -@@ -892,7 +892,7 @@ processes_do(int pid, callback_t callback, void *data) - continue; - - snprintf(buf, sizeof(buf), "/proc/%d/exe", pid); -- rv = readlink(buf, buf, sizeof(buf)); -+ rv = readlink(buf, buf2, sizeof(buf2)); - if (rv == -1) { - if (errno == ENOENT) - kpdebug("skipping kernel thread %d\n", pid); --- -2.27.0 - diff --git a/0050-libcare-cc-add-gcc-iquote-option-support.patch b/0050-libcare-cc-add-gcc-iquote-option-support.patch deleted file mode 100644 index 0569370..0000000 --- a/0050-libcare-cc-add-gcc-iquote-option-support.patch +++ /dev/null @@ -1,33 +0,0 @@ -From db9a3f97972a2cb30a9edc02dff3108fc7a34d13 Mon Sep 17 00:00:00 2001 -From: Luo Yifan -Date: Tue, 13 Oct 2020 10:53:54 +0800 -Subject: [PATCH 50/51] libcare-cc: add gcc iquote option support - -The -I option has been deprecated by gcc. Newer projects like QEMU 2.12 -now use -iquote instead of -I. Hereby add iquote option support to make -libcare work with these projects. - -reference: https://github.com/cloudlinux/libcare/pull/52/commits/2b0894f49527e5d04d5fcad05cf6efdd2df04a95 - -Signed-off-by: Luo Yifan -Reviewed-by: Bihong Yu ---- - src/kpatch_cc.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/kpatch_cc.c b/src/kpatch_cc.c -index 7f17fdf..b901551 100644 ---- a/src/kpatch_cc.c -+++ b/src/kpatch_cc.c -@@ -402,6 +402,8 @@ static void init(int argc_, const char **argv_) - i++; - if (strcmp(arg + 2, "system") == 0) - i++; -+ if (strcmp(arg + 2, "quote") == 0) -+ i++; - continue; - case 'e': - case 'T': --- -2.27.0 - diff --git a/0051-kpatch_cc.c-support-gcc-MQ-option.patch b/0051-kpatch_cc.c-support-gcc-MQ-option.patch deleted file mode 100644 index 88438fb..0000000 --- a/0051-kpatch_cc.c-support-gcc-MQ-option.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 9966557f076b853c72673f9e03d08853afe993f9 Mon Sep 17 00:00:00 2001 -From: RToax <2386499836@qq.com> -Date: Tue, 28 Sep 2021 09:15:26 +0000 -Subject: [PATCH 51/51] kpatch_cc.c: support gcc -MQ option - -Signed-off-by:RToax <2386499836@qq.com> -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_cc.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/kpatch_cc.c b/src/kpatch_cc.c -index b901551..312c9e5 100644 ---- a/src/kpatch_cc.c -+++ b/src/kpatch_cc.c -@@ -394,7 +394,7 @@ static void init(int argc_, const char **argv_) - argv[i] = NULL; - continue; - case 'M': -- if (arg[2] == 'F' || arg[2] == 'T') -+ if (arg[2] == 'F' || arg[2] == 'T' || arg[2] == 'Q') - i++; - continue; - case 'i': --- -2.27.0 - diff --git a/0052-src-Makefile-execute-config-scripts-before-building.patch b/0052-src-Makefile-execute-config-scripts-before-building.patch deleted file mode 100644 index f2442b4..0000000 --- a/0052-src-Makefile-execute-config-scripts-before-building.patch +++ /dev/null @@ -1,30 +0,0 @@ -From cf64f81949b89953b64bfb6d6f898733eb68925c Mon Sep 17 00:00:00 2001 -From: Bihong Yu -Date: Wed, 3 Nov 2021 04:33:08 -0400 -Subject: [PATCH 52/62] src/Makefile: execute config scripts before building - -We support aarch64 and x86_64, so we need distinguish between -different architectures, so get arch before building. - -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/Makefile | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/Makefile b/src/Makefile -index 2649ee3..3cb1358 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -20,7 +20,7 @@ CFLAGS_WARN += $(call cc-option,-Wno-builtin-macro-redefined) - CFLAGS_WARN += $(call cc-option,-Wno-deprecated-declarations) - CFLAGS = $(CFLAGS_MISC) $(CFLAGS_WARN) - --ARCH := $(shell cat arch.desc) -+ARCH := $(shell sh config; cat arch.desc) - ifeq ($(ARCH),aarch64) - VPATH = arch/aarch64 - else --- -2.27.0 - diff --git a/0053-kpatch_gensrc.c-support-ignoring-functions-which-we-.patch b/0053-kpatch_gensrc.c-support-ignoring-functions-which-we-.patch deleted file mode 100644 index d48a042..0000000 --- a/0053-kpatch_gensrc.c-support-ignoring-functions-which-we-.patch +++ /dev/null @@ -1,132 +0,0 @@ -From e6ddf3a525742a83ade100dcc30a13f96a98dd67 Mon Sep 17 00:00:00 2001 -From: Bihong Yu -Date: Wed, 3 Nov 2021 05:10:17 -0400 -Subject: [PATCH 53/62] kpatch_gensrc.c: support ignoring functions which we - don't need - -Adding or deleting statements in the function will cause the -subsequent __LINE__ macro to be offset. The change will also be -recognized by the patch tools and made into the patch file, -which is not what we expected. - -So we add a configure file 'patch_func_names.conf'. We can write -the functions we need into the configuration file. When the patch -tools make a patch, they will filter out other functions that we -don't need based on the content in the configuration file. - -Signed-off-by: Jiajie Li -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_gensrc.c | 65 ++++++++++++++++++++++++++++++++++++++++----- - 1 file changed, 59 insertions(+), 6 deletions(-) - -diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c -index 4f978f8..36ff24f 100644 ---- a/src/kpatch_gensrc.c -+++ b/src/kpatch_gensrc.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.09.23 - kpatch_gensrc.c: support ignoring functions which we don't need -+ * Huawei Technologies Co., Ltd. -+ ******************************************************************************/ -+ - #include - #include - #include -@@ -38,9 +43,57 @@ static int nr_must_adapt_syms; - static int force_gotpcrel; - static int force_global; - --static inline int in_syms_list(char *filename, kpstr_t *sym, const struct sym_desc *sym_arr, int nr_syms) -+static char* patch_func_file_name = "/etc/libcare/patch_func_names.conf"; -+ -+static int is_func_in_patch_func_file(FILE *fp, kpstr_t *sym) -+{ -+ char buffer[1024]; -+ -+ /* 1024 should be enough for func_cblock name */ -+ if (sym->l <= 0 || sym->l > sizeof(buffer)) -+ return 0; -+ -+ rewind(fp); -+ while (!feof(fp)) { -+ memset(buffer, 0, sizeof(buffer)); -+ fgets(buffer, sizeof(buffer), fp); -+ if (strncmp(buffer, sym->s, sym->l) == 0) { -+ return 1; -+ } -+ } -+ return 0; -+} -+ -+static inline int in_syms_list(char *filename, kpstr_t *sym, const struct sym_desc *sym_arr, int nr_syms, int cblock_type) - { -- int i, len; -+ int i, len, rv; -+ -+ /* -+ * Since we need to ignore some unwanted function being patched, -+ * so we will first check if there is a file called "patch_func_name". -+ * If there isn't, we will continue as usual. -+ * If there is, we will ignore those function which is not in the file. -+ */ -+ if (cblock_type == CBLOCK_FUNC && sym_arr == ignore_syms) { -+ FILE *fp = fopen(patch_func_file_name, "r"); -+ if (fp == NULL) { -+ goto no_conf; -+ } -+ -+ rv = is_func_in_patch_func_file(fp, sym); -+ -+ if (fclose(fp) != 0) { -+ kpfatal("Error in closing file %s\n", patch_func_file_name); -+ } -+ -+ /* -+ * If rv is 1, which means symbol is in patch_func_file, -+ * which means we cann't ignore it. So return 0, otherwise return 1. -+ */ -+ return rv == 1 ? 0 : 1; -+ } -+ -+no_conf: - for (i = 0; i < nr_syms; i++) { - if (sym_arr[i].filename) { - len = strlen(sym_arr[i].filename); -@@ -811,7 +864,7 @@ static void cblock_var_check_content(struct cblock *b0) - cblock_print2(b0, b1); - kplog(LOG_DEBUG, "-------------------------------------------\n"); - -- if (in_syms_list(b1->f->basename, &b0->human_name, ignore_syms, nr_ignore_syms)) -+ if (in_syms_list(b1->f->basename, &b0->human_name, ignore_syms, nr_ignore_syms, b0->type)) - return; - - if (cblock_cmp(b0, b1, CBLOCK_CMP_SECT|CBLOCK_CMP_RENAME)) -@@ -1114,12 +1167,12 @@ static void analyze_func_cblocks(struct kp_file *f0, struct kp_file *f1) - if (b1->type != CBLOCK_FUNC || !b1->pair) - continue; - -- if (in_syms_list(b1->f->basename, &b1->human_name, ignore_syms, nr_ignore_syms)) { -+ if (in_syms_list(b1->f->basename, &b1->human_name, ignore_syms, nr_ignore_syms, b1->type)) { - rename_del(b1->f, &b1->name); - rename_del(b1->pair->f, &b1->pair->name); - b1->ignore = 1; - } -- if (in_syms_list(b1->f->basename, &b1->human_name, unlink_syms, nr_unlink_syms)) { -+ if (in_syms_list(b1->f->basename, &b1->human_name, unlink_syms, nr_unlink_syms, b1->type)) { - kplog(LOG_DEBUG, "unlinking %.*s\n", b1->name.l, b1->name.s); - b1->unlink = 1; - } -@@ -1141,7 +1194,7 @@ static void analyze_func_cblocks(struct kp_file *f0, struct kp_file *f1) - rename_add(b1->f, &b1->name, &b0->name); - b1->ignore = 1; - } else { -- if (!b1->adapted && in_syms_list(b1->f->basename, &b1->human_name, must_adapt_syms, nr_must_adapt_syms)) { -+ if (!b1->adapted && in_syms_list(b1->f->basename, &b1->human_name, must_adapt_syms, nr_must_adapt_syms, b1->type)) { - not_adapted= 1; - kplog(LOG_ERR, "FATAL! not adapted function change %.*s\n", b1->name.l, b1->name.s); - } --- -2.27.0 - diff --git a/0054-arch-aarch64-arch_parse-modify-is_variable_start-for.patch b/0054-arch-aarch64-arch_parse-modify-is_variable_start-for.patch deleted file mode 100644 index c874832..0000000 --- a/0054-arch-aarch64-arch_parse-modify-is_variable_start-for.patch +++ /dev/null @@ -1,67 +0,0 @@ -From afd9b74e49cb4f392b9f5c5a72ea7c1a8f5981fa Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 30 Nov 2020 16:50:41 +0800 -Subject: [PATCH 54/62] arch/aarch64/arch_parse: modify is_variable_start for - arm asm - -Because is arm, the .rodata pseudoinstruction is used for all rodata. -If it is seperate by .set pseudoinstruction, the .rodata sentence will -be recognized as OTHER_CBLOCK, as a result, some rodata will be in .text -which will change function offset in .text. So we need to adjust it. - -Signed-off-by: Jiajie Li -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/arch/aarch64/arch_parse.c | 18 +++++++++++++++++- - 1 file changed, 17 insertions(+), 1 deletion(-) - -diff --git a/src/arch/aarch64/arch_parse.c b/src/arch/aarch64/arch_parse.c -index e0f0c8b..a79e27f 100644 ---- a/src/arch/aarch64/arch_parse.c -+++ b/src/arch/aarch64/arch_parse.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.09.23 - arch/aarch64/arch_parse: modify is_variable_start function for gensrc in arm -+ * Huawei Technologies Co., Ltd. - 0.1.4-10 -+ ******************************************************************************/ -+ - #include - - #include "include/kpatch_log.h" -@@ -105,6 +110,7 @@ int is_variable_start(struct kp_file *f, int l, int *e, int *pglobl, kpstr_t *nm - char *s; - int l0 = l, globl = 0; - kpstr_t nm2, attr; -+ nm2.s = NULL; - - kpstrset(nm, "", 0); - for ( ; cline(f, l); l++) { -@@ -130,12 +136,22 @@ int is_variable_start(struct kp_file *f, int l, int *e, int *pglobl, kpstr_t *nm - case DIRECTIVE_TEXT: - case DIRECTIVE_DATA: - case DIRECTIVE_BSS: -- case DIRECTIVE_SECTION: - case DIRECTIVE_PUSHSECTION: - case DIRECTIVE_POPSECTION: - case DIRECTIVE_PREVIOUS: - case DIRECTIVE_SUBSECTION: - break; -+ case DIRECTIVE_SECTION: -+ if (nm2.s != NULL) -+ break; -+ get_token(&s, &nm2); -+ get_token(&s, &nm2); -+ if (kpstrcmpz(&nm2, ".rodata") == 0) { -+ *nm = nm2; -+ if(e) -+ *e = l + 2; -+ return 1; -+ } - case DIRECTIVE_TYPE: - get_type_args(cline(f, l), &nm2, &attr); - if (kpstrcmpz(&attr, "%object") && kpstrcmpz(&attr, "%tls_object")) --- -2.27.0 - diff --git a/0055-libcare-ctl-implement-applied-patch-list.patch b/0055-libcare-ctl-implement-applied-patch-list.patch deleted file mode 100644 index 62848c7..0000000 --- a/0055-libcare-ctl-implement-applied-patch-list.patch +++ /dev/null @@ -1,392 +0,0 @@ -From f2011e266d923e8928667736d57fec9b5cdcfa7e Mon Sep 17 00:00:00 2001 -From: Hao Wang -Date: Sat, 5 Dec 2020 17:54:02 +0800 -Subject: [PATCH 55/62] libcare-ctl: implement applied patch list - -Implement applied patch list to support multi-patches management. - -Signed-off-by: Hao Wang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/include/kpatch_process.h | 29 ++++++++++++----- - src/kpatch_patch.c | 61 +++++++----------------------------- - src/kpatch_process.c | 58 ++++++++++++++++++++++++++++++---- - src/kpatch_user.c | 22 ++++++++----- - 4 files changed, 99 insertions(+), 71 deletions(-) - -diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h -index b96a6da..431e598 100644 ---- a/src/include/kpatch_process.h -+++ b/src/include/kpatch_process.h -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.09.23 - libcare-ctl: implement applied patch list -+ * Huawei Technologies Co., Ltd. - 0.1.4-11 -+ ******************************************************************************/ -+ - #ifndef __KPATCH_PROCESS__ - #define __KPATCH_PROCESS__ - -@@ -32,6 +37,11 @@ struct obj_vm_area { - struct list_head list; - }; - -+struct obj_applied_patch { -+ struct list_head list; -+ struct object_file *patch_file; -+}; -+ - struct object_file { - struct list_head list; - kpatch_process_t *proc; -@@ -95,8 +105,10 @@ struct object_file { - /* Pointer to the previous hole in the patient's mapping */ - struct vm_hole *previous_hole; - -- /* Pointer to the applied patch, if any */ -- struct object_file *applied_patch; -+ /* Pointer to the applied patch list, if any */ -+ struct list_head applied_patch; -+ /* The number of applied patch */ -+ size_t num_applied_patch; - - /* Do we have patch for the object? */ - unsigned int has_patch:1; -@@ -204,11 +216,11 @@ kpatch_process_get_obj_by_regex(kpatch_process_t *proc, const char *regex); - static inline int - is_kernel_object_name(char *name) - { -- if ((name[0] == '[') && (name[strlen(name) - 1] == ']')) -- return 1; -- if (strncmp(name, "anon_inode", 10) == 0) -- return 1; -- return 0; -+ if ((name[0] == '[') && (name[strlen(name) - 1] == ']')) -+ return 1; -+ if (strncmp(name, "anon_inode", 10) == 0) -+ return 1; -+ return 0; - } - - struct vm_hole *next_hole(struct vm_hole *hole, struct list_head *head); -@@ -220,4 +232,7 @@ unsigned long object_find_patch_region(struct object_file *obj, - size_t memsize, - struct vm_hole **hole); - -+int kpatch_object_add_applied_patch(struct object_file *o, struct object_file *new); -+struct object_file * kpatch_object_find_applied_patch(struct object_file *o); -+ - #endif /* ifndef __KPATCH_PROCESS__ */ -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index 4a1d149..3f2665d 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.09.23 - libcare-ctl: implement applied patch list -+ * Huawei Technologies Co., Ltd. - 0.1.4-11 -+ ******************************************************************************/ -+ - #include - #include - #include -@@ -300,12 +305,6 @@ object_apply_patch(struct object_file *o) - if (o->skpfile == NULL || o->is_patch) - return 0; - -- if (o->applied_patch) { -- kpinfo("Object '%s' already have a patch, not patching\n", -- o->name); -- return 0; -- } -- - ret = duplicate_kp_file(o); - if (ret < 0) { - kplogerror("can't duplicate kp_file\n"); -@@ -379,43 +378,6 @@ object_apply_patch(struct object_file *o) - static int - object_unapply_patch(struct object_file *o, int check_flag); - --static int --object_unapply_old_patch(struct object_file *o) --{ -- struct kpatch_file *kpatch_applied, *kpatch_storage; -- int ret; -- -- if (o->skpfile == NULL || o->is_patch || o->applied_patch == NULL) -- return 0; -- -- kpatch_applied = o->applied_patch->kpfile.patch; -- kpatch_storage = o->skpfile->patch; -- -- if (kpatch_applied->user_level >= kpatch_storage->user_level) { -- kpinfo("'%s' applied patch level is %d (storage has %d\n)\n", -- o->name, -- kpatch_applied->user_level, -- kpatch_storage->user_level); -- return 1; -- } -- -- printf("%s: replacing patch level %d with level %d\n", -- o->name, -- kpatch_applied->user_level, -- kpatch_storage->user_level); -- ret = object_unapply_patch(o, /* check_flag */ 0); -- if (ret < 0) -- kperr("can't unapply patch for %s\n", o->name); -- else { -- /* TODO(pboldin): handle joining the holes here */ -- o->applied_patch = NULL; -- o->info = NULL; -- o->ninfo = 0; -- } -- -- return ret; --} -- - static int - kpatch_apply_patches(kpatch_process_t *proc) - { -@@ -424,10 +386,6 @@ kpatch_apply_patches(kpatch_process_t *proc) - - list_for_each_entry(o, &proc->objs, list) { - -- ret = object_unapply_old_patch(o); -- if (ret < 0) -- break; -- - ret = object_apply_patch(o); - if (ret < 0) - goto unpatch; -@@ -551,6 +509,7 @@ object_find_applied_patch_info(struct object_file *o) - size_t nalloc = 0; - struct process_mem_iter *iter; - int ret; -+ struct object_file *target = kpatch_object_find_applied_patch(o); - - if (o->info != NULL) - return 0; -@@ -579,8 +538,8 @@ object_find_applied_patch_info(struct object_file *o) - o->ninfo++; - } while (1); - -- o->applied_patch->info = o->info; -- o->applied_patch->ninfo = o->ninfo; -+ target->info = o->info; -+ target->ninfo = o->ninfo; - - err: - kpatch_process_mem_iter_free(iter); -@@ -660,12 +619,14 @@ kpatch_unapply_patches(kpatch_process_t *proc, - int ret; - size_t unapplied = 0; - -+ /* TODO: disable before patch->id is introduced - ret = kpatch_process_associate_patches(proc); - if (ret < 0) - return ret; -+ */ - - list_for_each_entry(o, &proc->objs, list) { -- if (o->applied_patch == NULL) -+ if (o->num_applied_patch == 0) - continue; - - if (!kpatch_should_unapply_patch(o, buildids, nbuildids)) -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index f987b7e..e29c4f4 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.09.23 - libcare-ctl: implement applied patch list -+ * Huawei Technologies Co., Ltd. - 0.1.4-11 -+ ******************************************************************************/ -+ - #include - #include - #include -@@ -107,6 +112,8 @@ process_new_object(kpatch_process_t *proc, - } - list_init(&o->list); - list_init(&o->vma); -+ list_init(&o->applied_patch); -+ o->num_applied_patch = 0; - o->proc = proc; - o->skpfile = NULL; - o->dev = dev; -@@ -126,7 +133,6 @@ process_new_object(kpatch_process_t *proc, - o->kpta = 0UL; - o->info = NULL; - o->ninfo = 0; -- o->applied_patch = NULL; - o->vma_start = ~(unsigned long)0; - o->load_offset = ~(unsigned long)0; - memset(&o->ehdr, 0, sizeof(o->ehdr)); -@@ -289,12 +295,17 @@ static void - object_destroy(struct object_file *o) - { - struct obj_vm_area *ovma, *tmp; -+ struct obj_applied_patch *patch, *temp; - - list_del(&o->list); - list_for_each_entry_safe(ovma, tmp, &o->vma, list) { - list_del(&ovma->list); - free(ovma); - } -+ list_for_each_entry_safe(patch, temp, &o->applied_patch, list) { -+ list_del(&patch->list); -+ free(patch); -+ } - o->proc->num_objs--; - if (o->jmp_table) - free(o->jmp_table); -@@ -309,7 +320,7 @@ object_destroy(struct object_file *o) - if (o->is_patch) { - free(o->info); - } -- if (o->applied_patch == NULL) -+ if (o->num_applied_patch == 0) - free(o->kpfile.patch); - free(o); - } -@@ -329,8 +340,8 @@ kpatch_object_dump(struct object_file *o) - if (log_level < LOG_INFO) - return; - -- if (o->applied_patch) -- patchinfo = o->applied_patch->name; -+ if (o->num_applied_patch > 0) -+ patchinfo = "yes"; - else - patchinfo = o->skpfile != NULL ? "yes" : "no"; - -@@ -393,11 +404,12 @@ kpatch_process_associate_patches(kpatch_process_t *proc) - struct obj_vm_area *patchvma; - - bid = kpatch_get_buildid(o); -- if (o->applied_patch != NULL || bid == NULL || -+ if (bid == NULL || - strcmp(bid, objpatch->kpfile.patch->uname)) - continue; - -- o->applied_patch = objpatch; -+ if (kpatch_object_add_applied_patch(o, objpatch) < 0) -+ return -1; - patchvma = list_first_entry(&objpatch->vma, - struct obj_vm_area, - list); -@@ -1124,3 +1136,37 @@ kpatch_process_get_obj_by_regex(kpatch_process_t *proc, const char *regex) - regfree(&r); - return found; - } -+ -+int -+kpatch_object_add_applied_patch(struct object_file *o, struct object_file *new) -+{ -+ struct obj_applied_patch *patch; -+ -+ patch = malloc(sizeof(*patch)); -+ if (!patch) -+ return -1; -+ -+ if (!o || !new) { -+ free(patch); -+ return -1; -+ } -+ -+ patch->patch_file = new; -+ list_add(&patch->list, &o->applied_patch); -+ o->num_applied_patch++; -+ -+ return 0; -+} -+ -+struct object_file * -+kpatch_object_find_applied_patch(struct object_file *o) -+{ -+ struct obj_applied_patch *patch; -+ struct object_file *target = NULL; -+ -+ list_for_each_entry(patch, &o->applied_patch, list) { -+ target = patch->patch_file; -+ } -+ -+ return target; -+} -diff --git a/src/kpatch_user.c b/src/kpatch_user.c -index c74a5cd..aef1ba8 100644 ---- a/src/kpatch_user.c -+++ b/src/kpatch_user.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.09.23 - libcare-ctl: implement applied patch list -+ * Huawei Technologies Co., Ltd. - 0.1.4-11 -+ ******************************************************************************/ -+ - #include - #include - #include -@@ -232,6 +237,7 @@ object_info(struct info_data *data, struct object_file *o, - int pid = proc->pid; - struct kpatch_storage_patch *patch = NULL; - int patch_found = PATCH_NOT_FOUND; -+ struct obj_applied_patch *applied_patch; - - if (!o->is_elf || is_kernel_object_name(o->name)) - return 0; -@@ -262,7 +268,7 @@ object_info(struct info_data *data, struct object_file *o, - buildid, - &patch); - -- if (o->applied_patch == NULL && !patch_found) -+ if (o->num_applied_patch == 0 && !patch_found) - return 0; - - if (!*pid_printed) { -@@ -270,17 +276,17 @@ object_info(struct info_data *data, struct object_file *o, - *pid_printed = 1; - } - -- printf("%s buildid=%s", o->name, buildid); -- if (o->applied_patch != NULL) { -- int patchlvl = o->kpfile.patch->user_level; -- printf(" patchlvl=%d", patchlvl); -+ printf("process=%s; buildid=%s; applied patch number=%ld\n", o->name, buildid, o->num_applied_patch); -+ list_for_each_entry(applied_patch, &o->applied_patch, list) { -+ printf("--->patch->magic=%s\n", applied_patch->patch_file->kpfile.patch->magic); - } -+ - if (storage_patch_found(patch) && patch->patchlevel) { - printf(" latest=%d", patch->patchlevel); - } - - /* empty patch patchlevel=0 with description of bugs in the version */ -- if (patch && patch->patchlevel == 0 && o->applied_patch == NULL) { -+ if (patch && patch->patchlevel == 0 && o->num_applied_patch == 0) { - printf(" %sVULNERABLE%s\n", RED, RESET); - - if (data->print_description) { -@@ -299,7 +305,7 @@ object_info(struct info_data *data, struct object_file *o, - - /* Old or no patch applied but we have one in storage */ - if (patch && patch->patchlevel != 0 && -- (o->applied_patch == NULL || patch->patchlevel > o->kpfile.patch->user_level)) { -+ (o->num_applied_patch == 0 || patch->patchlevel > o->kpfile.patch->user_level)) { - if (data->print_description) { - char *desc; - -@@ -314,7 +320,7 @@ object_info(struct info_data *data, struct object_file *o, - } - - /* patch applied and is latest version. show descripition for it */ -- if (patch && o->applied_patch != NULL && data->print_description) { -+ if (patch && (o->num_applied_patch > 0) && data->print_description) { - char *desc; - - printf("\n%slatest patch applied\n", GREEN); --- -2.27.0 - diff --git a/0056-libcare-ctl-introduce-patch-id.patch b/0056-libcare-ctl-introduce-patch-id.patch deleted file mode 100644 index 56386ff..0000000 --- a/0056-libcare-ctl-introduce-patch-id.patch +++ /dev/null @@ -1,625 +0,0 @@ -From 2e398b2e7d5665e1ad8dcc0596af5a73093844ad Mon Sep 17 00:00:00 2001 -From: Hao Wang -Date: Mon, 7 Dec 2020 14:18:54 +0800 -Subject: [PATCH 56/62] libcare-ctl: introduce patch-id - -Unique patch-id is necessary when multi-patches unpatching and querying. -Introduce patch-id and bring two interface changes: - -1.making kpatch: -kpatch_make -b -i - -2.unapplying kpatch: -libcare-ctl unpatch -p -i - -Signed-off-by: Hao Wang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/include/kpatch_file.h | 6 ++++ - src/include/kpatch_patch.h | 6 ++++ - src/include/kpatch_process.h | 10 +++++-- - src/kpatch_make.c | 22 ++++++++++---- - src/kpatch_patch.c | 43 +++++++++++++++++++------- - src/kpatch_process.c | 58 ++++++++++++++++++++++++++---------- - src/kpatch_user.c | 39 +++++++++++++++--------- - src/libcare-patch-make | 16 ++++++++-- - 8 files changed, 149 insertions(+), 51 deletions(-) - -diff --git a/src/include/kpatch_file.h b/src/include/kpatch_file.h -index 0b314e3..e307d0c 100644 ---- a/src/include/kpatch_file.h -+++ b/src/include/kpatch_file.h -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.09.23 - libcare-ctl: introduce patch-id -+ * Huawei Technologies Co., Ltd. - 0.1.4-12 -+ ******************************************************************************/ -+ - #ifndef __KPATCH_FILE_H__ - #define __KPATCH_FILE_H__ - -@@ -113,6 +118,7 @@ struct kpatch_payload { - - struct kpatch_file { - char magic[8]; /* magic string */ -+ char id[8]; /* unique patch id */ - unsigned char flags; - unsigned char safety_method; - char pad[6]; -diff --git a/src/include/kpatch_patch.h b/src/include/kpatch_patch.h -index fa96b08..bd086df 100644 ---- a/src/include/kpatch_patch.h -+++ b/src/include/kpatch_patch.h -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.09.23 - libcare-ctl: introduce patch-id -+ * Huawei Technologies Co., Ltd. - 0.1.4-12 -+ ******************************************************************************/ -+ - #ifndef __KPATCH_PATCH__ - #define __KPATCH_PATCH__ - -@@ -20,6 +25,7 @@ struct patch_data { - struct unpatch_data { - char **buildids; - int nbuildids; -+ const char *patch_id; - }; - - int process_patch(int pid, void *_data); -diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h -index 431e598..9409917 100644 ---- a/src/include/kpatch_process.h -+++ b/src/include/kpatch_process.h -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.09.23 - libcare-ctl: introduce patch-id -+ * Huawei Technologies Co., Ltd. - 0.1.4-12 -+ * - * 2021.09.23 - libcare-ctl: implement applied patch list - * Huawei Technologies Co., Ltd. - 0.1.4-11 - ******************************************************************************/ -@@ -179,11 +182,11 @@ kpatch_object_allocate_patch(struct object_file *obj, - size_t sz); - - int --kpatch_process_associate_patches(kpatch_process_t *proc); -+kpatch_process_associate_patches(kpatch_process_t *proc, const char *patch_id); - int - kpatch_process_parse_proc_maps(kpatch_process_t *proc); - int --kpatch_process_map_object_files(kpatch_process_t *proc); -+kpatch_process_map_object_files(kpatch_process_t *proc, const char *patch_id); - int - kpatch_process_attach(kpatch_process_t *proc); - -@@ -232,7 +235,8 @@ unsigned long object_find_patch_region(struct object_file *obj, - size_t memsize, - struct vm_hole **hole); - -+int kpatch_object_check_duplicate_id(struct object_file *o, const char *patch_id); - int kpatch_object_add_applied_patch(struct object_file *o, struct object_file *new); --struct object_file * kpatch_object_find_applied_patch(struct object_file *o); -+struct object_file * kpatch_object_find_applied_patch(struct object_file *o, const char *patch_id); - - #endif /* ifndef __KPATCH_PROCESS__ */ -diff --git a/src/kpatch_make.c b/src/kpatch_make.c -index 6a173e6..043cd24 100644 ---- a/src/kpatch_make.c -+++ b/src/kpatch_make.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.09.23 - libcare-ctl: introduce patch-id -+ * Huawei Technologies Co., Ltd. - 0.1.4-12 -+ ******************************************************************************/ -+ - #include - #include - #include -@@ -26,7 +31,7 @@ static void xerror(const char *fmt, ...) - exit(1); - } - --int make_file(int fdo, void *buf1, off_t size, const char *buildid) -+int make_file(int fdo, void *buf1, off_t size, const char *buildid, const char *patch_id) - { - int res; - struct kpatch_file khdr; -@@ -34,6 +39,7 @@ int make_file(int fdo, void *buf1, off_t size, const char *buildid) - memset(&khdr, 0, sizeof(khdr)); - - memcpy(khdr.magic, KPATCH_FILE_MAGIC1, sizeof(khdr.magic)); -+ strncpy(khdr.id, patch_id, sizeof(khdr.id)); - strncpy(khdr.uname, buildid, sizeof(khdr.uname)); - khdr.build_time = (uint64_t)time(NULL); - khdr.csum = 0; /* FIXME */ -@@ -55,9 +61,10 @@ int make_file(int fdo, void *buf1, off_t size, const char *buildid) - - static void usage(void) - { -- printf("Usage: kpatch_make [-d] -n [-v ] -e [-o ] [input2]\n"); -+ printf("Usage: kpatch_make [-d] -n [-v ] -e [-o ] -i [input2]\n"); - printf(" -b buildid = target buildid for patch\n"); - printf(" -d debug (verbose)\n"); -+ printf(" -i unique patch id\n"); - printf("\n"); - printf(" result is printed to output and is the following:\n"); - printf(" header - struct kpatch_file\n"); -@@ -71,9 +78,9 @@ int main(int argc, char **argv) - int fd1, fdo; - void *buf; - struct stat st; -- char *buildid = NULL, *outputname = NULL; -+ char *buildid = NULL, *outputname = NULL, *patch_id = NULL; - -- while ((opt = getopt(argc, argv, "db:o:v:s:")) != -1) { -+ while ((opt = getopt(argc, argv, "db:o:i:v:s:")) != -1) { - switch (opt) { - case 'd': - verbose = 1; -@@ -84,12 +91,15 @@ int main(int argc, char **argv) - case 'o': - outputname = strdup(optarg); - break; -+ case 'i': -+ patch_id = strdup(optarg); -+ break; - default: /* '?' */ - usage(); - } - } - -- if (buildid == NULL) -+ if (buildid == NULL || patch_id == NULL) - usage(); - - fd1 = open(argv[optind], O_RDONLY); -@@ -109,5 +119,5 @@ int main(int argc, char **argv) - xerror("Can't open output file '%s'", outputname); - } - -- return make_file(fdo, buf, st.st_size, buildid); -+ return make_file(fdo, buf, st.st_size, buildid, patch_id); - } -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index 3f2665d..3eb0922 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.09.23 - libcare-ctl: introduce patch-id -+ * Huawei Technologies Co., Ltd. - 0.1.4-12 -+ * - * 2021.09.23 - libcare-ctl: implement applied patch list - * Huawei Technologies Co., Ltd. - 0.1.4-11 - ******************************************************************************/ -@@ -311,6 +314,12 @@ object_apply_patch(struct object_file *o) - return -1; - } - -+ if (kpatch_object_check_duplicate_id(o, (const char *)o->kpfile.patch->id)) { -+ kplogerror("A patch with patch-id(%s) is already applied by %s", -+ o->kpfile.patch->id, o->name); -+ return -1; -+ } -+ - ret = kpatch_elf_load_kpatch_info(o); - if (ret < 0) - return ret; -@@ -450,7 +459,7 @@ int process_patch(int pid, void *_data) - * Because we know uniq BuildID of the object the section addresses - * stored in the patch are valid for the original object. - */ -- ret = kpatch_process_map_object_files(proc); -+ ret = kpatch_process_map_object_files(proc, NULL); - if (ret < 0) - goto out_free; - -@@ -509,11 +518,23 @@ object_find_applied_patch_info(struct object_file *o) - size_t nalloc = 0; - struct process_mem_iter *iter; - int ret; -- struct object_file *target = kpatch_object_find_applied_patch(o); -+ struct object_file *applied_patch; -+ const char *patch_id = NULL; - - if (o->info != NULL) - return 0; - -+ if (o->kpfile.patch) -+ patch_id = o->kpfile.patch->id; -+ else -+ return -1; -+ -+ applied_patch = kpatch_object_find_applied_patch(o, patch_id); -+ if (!applied_patch) { -+ fprintf(stderr, "Failed to find target applied patch!\n"); -+ return -1; -+ } -+ - iter = kpatch_process_mem_iter_init(o->proc); - if (iter == NULL) - return -1; -@@ -538,8 +559,8 @@ object_find_applied_patch_info(struct object_file *o) - o->ninfo++; - } while (1); - -- target->info = o->info; -- target->ninfo = o->ninfo; -+ applied_patch->info = o->info; -+ applied_patch->ninfo = o->ninfo; - - err: - kpatch_process_mem_iter_free(iter); -@@ -613,20 +634,19 @@ kpatch_should_unapply_patch(struct object_file *o, - static int - kpatch_unapply_patches(kpatch_process_t *proc, - char *buildids[], -- int nbuildids) -+ int nbuildids, -+ const char *patch_id) - { - struct object_file *o; - int ret; - size_t unapplied = 0; - -- /* TODO: disable before patch->id is introduced -- ret = kpatch_process_associate_patches(proc); -+ ret = kpatch_process_associate_patches(proc, patch_id); - if (ret < 0) - return ret; -- */ - - list_for_each_entry(o, &proc->objs, list) { -- if (o->num_applied_patch == 0) -+ if (o->is_patch || o->num_applied_patch == 0) - continue; - - if (!kpatch_should_unapply_patch(o, buildids, nbuildids)) -@@ -648,6 +668,7 @@ int process_unpatch(int pid, void *_data) - struct unpatch_data *data = _data; - char **buildids = data->buildids; - int nbuildids = data->nbuildids; -+ const char *patch_id = data->patch_id; - - ret = kpatch_process_init(proc, pid, /* start */ 0, /* send_fd */ -1); - if (ret < 0) -@@ -659,7 +680,7 @@ int process_unpatch(int pid, void *_data) - if (ret < 0) - goto out; - -- ret = kpatch_process_map_object_files(proc); -+ ret = kpatch_process_map_object_files(proc, patch_id); - if (ret < 0) - goto out; - -@@ -667,7 +688,7 @@ int process_unpatch(int pid, void *_data) - if (ret < 0) - goto out; - -- ret = kpatch_unapply_patches(proc, buildids, nbuildids); -+ ret = kpatch_unapply_patches(proc, buildids, nbuildids, patch_id); - - out: - kpatch_process_free(proc); -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index e29c4f4..9753bad 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.09.23 - libcare-ctl: introduce patch-id -+ * Huawei Technologies Co., Ltd. - 0.1.4-12 -+ * - * 2021.09.23 - libcare-ctl: implement applied patch list - * Huawei Technologies Co., Ltd. - 0.1.4-11 - ******************************************************************************/ -@@ -389,10 +392,11 @@ process_add_vm_hole(kpatch_process_t *proc, - } - - int --kpatch_process_associate_patches(kpatch_process_t *proc) -+kpatch_process_associate_patches(kpatch_process_t *proc, const char *patch_id) - { - struct object_file *o, *objpatch; - size_t found = 0; -+ size_t found_target = 0; - - list_for_each_entry(objpatch, &proc->objs, list) { - -@@ -410,17 +414,24 @@ kpatch_process_associate_patches(kpatch_process_t *proc) - - if (kpatch_object_add_applied_patch(o, objpatch) < 0) - return -1; -- patchvma = list_first_entry(&objpatch->vma, -- struct obj_vm_area, -- list); -- o->kpta = patchvma->inmem.start; -- o->kpfile = objpatch->kpfile; -+ -+ if (patch_id && !strcmp(objpatch->kpfile.patch->id, patch_id)) { -+ patchvma = list_first_entry(&objpatch->vma, -+ struct obj_vm_area, -+ list); -+ o->kpta = patchvma->inmem.start; -+ o->kpfile = objpatch->kpfile; -+ found_target = 1; -+ } - - found++; - break; - } - } - -+ if (patch_id && !found_target) -+ fprintf(stderr, "Failed to find target patch with patch_id=%s!\n", patch_id); -+ - return found; - } - -@@ -518,7 +529,7 @@ error: - } - - int --kpatch_process_map_object_files(kpatch_process_t *proc) -+kpatch_process_map_object_files(kpatch_process_t *proc, const char *patch_id) - { - struct object_file *o; - int ret; -@@ -533,7 +544,7 @@ kpatch_process_map_object_files(kpatch_process_t *proc) - return -1; - } - -- ret = kpatch_process_associate_patches(proc); -+ ret = kpatch_process_associate_patches(proc, patch_id); - if (ret >= 0) { - kpinfo("Found %d applied patch(es).\n", ret); - } -@@ -1137,18 +1148,33 @@ kpatch_process_get_obj_by_regex(kpatch_process_t *proc, const char *regex) - return found; - } - -+int -+kpatch_object_check_duplicate_id(struct object_file *o, const char *patch_id) -+{ -+ struct obj_applied_patch *applied_patch; -+ -+ list_for_each_entry(applied_patch, &o->applied_patch, list) { -+ if (!strcmp(patch_id, applied_patch->patch_file->kpfile.patch->id)) -+ return 1; -+ } -+ -+ return 0; -+} -+ - int - kpatch_object_add_applied_patch(struct object_file *o, struct object_file *new) - { - struct obj_applied_patch *patch; -+ const char *patch_id; - - patch = malloc(sizeof(*patch)); - if (!patch) - return -1; - -- if (!o || !new) { -+ patch_id = new->kpfile.patch->id; -+ if (kpatch_object_check_duplicate_id(o, patch_id)) { - free(patch); -- return -1; -+ return 0; - } - - patch->patch_file = new; -@@ -1159,14 +1185,16 @@ kpatch_object_add_applied_patch(struct object_file *o, struct object_file *new) - } - - struct object_file * --kpatch_object_find_applied_patch(struct object_file *o) -+kpatch_object_find_applied_patch(struct object_file *o, const char *patch_id) - { -- struct obj_applied_patch *patch; -+ struct obj_applied_patch *applied_patch; - struct object_file *target = NULL; - -- list_for_each_entry(patch, &o->applied_patch, list) { -- target = patch->patch_file; -+ list_for_each_entry(applied_patch, &o->applied_patch, list) { -+ target = applied_patch->patch_file; -+ if (!strcmp(target->kpfile.patch->id, patch_id)) -+ return target; - } - -- return target; -+ return NULL; - } -diff --git a/src/kpatch_user.c b/src/kpatch_user.c -index aef1ba8..66f3efa 100644 ---- a/src/kpatch_user.c -+++ b/src/kpatch_user.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.09.23 - libcare-ctl: introduce patch-id -+ * Huawei Technologies Co., Ltd. - 0.1.4-12 -+ * - * 2021.09.23 - libcare-ctl: implement applied patch list - * Huawei Technologies Co., Ltd. - 0.1.4-11 - ******************************************************************************/ -@@ -135,11 +138,12 @@ out_err: - } - - static int --processes_unpatch(int pid, char *buildids[], int nbuildids) -+processes_unpatch(int pid, char *buildids[], int nbuildids, const char *patch_id) - { - struct unpatch_data data = { - .buildids = buildids, -- .nbuildids = nbuildids -+ .nbuildids = nbuildids, -+ .patch_id = patch_id - }; - - return processes_do(pid, process_unpatch, &data); -@@ -149,22 +153,24 @@ static int usage_unpatch(const char *err) - { - if (err) - fprintf(stderr, "err: %s\n", err); -- fprintf(stderr, "usage: libcare-ctl unpatch [options] <-p PID> " -+ fprintf(stderr, "usage: libcare-ctl unpatch [options] <-p PID> <-i patch_id>" - "[Build-ID or name ...]\n"); - fprintf(stderr, "\nOptions:\n"); -- fprintf(stderr, " -h - this message\n"); -- fprintf(stderr, " -p - target process\n"); -+ fprintf(stderr, " -h - this message\n"); -+ fprintf(stderr, " -p - target process\n"); -+ fprintf(stderr, " -i - target patch id\n"); - return err ? 0 : -1; - } - - int cmd_unpatch_user(int argc, char *argv[]) - { - int opt, pid = -1, is_pid_set = 0; -+ const char *patch_id = NULL; - -- if (argc < 3) -+ if (argc < 4) - return usage_unpatch(NULL); - -- while ((opt = getopt(argc, argv, "hp:")) != EOF) { -+ while ((opt = getopt(argc, argv, "hp:i:")) != EOF) { - switch (opt) { - case 'h': - return usage_unpatch(NULL); -@@ -173,6 +179,9 @@ int cmd_unpatch_user(int argc, char *argv[]) - pid = atoi(optarg); - is_pid_set = 1; - break; -+ case 'i': -+ patch_id = optarg; -+ break; - default: - return usage_unpatch("unknown option"); - } -@@ -181,13 +190,13 @@ int cmd_unpatch_user(int argc, char *argv[]) - argc -= optind; - argv += optind; - -- if (!is_pid_set) -- return usage_patch("PID argument is mandatory"); -+ if (!is_pid_set || !patch_id) -+ return usage_unpatch("PID or patch_id argument is mandatory"); - - if (!kpatch_check_system()) - return -1; - -- return processes_unpatch(pid, argv, argc); -+ return processes_unpatch(pid, argv, argc, patch_id); - } - - static -@@ -238,6 +247,7 @@ object_info(struct info_data *data, struct object_file *o, - struct kpatch_storage_patch *patch = NULL; - int patch_found = PATCH_NOT_FOUND; - struct obj_applied_patch *applied_patch; -+ int i = 1; - - if (!o->is_elf || is_kernel_object_name(o->name)) - return 0; -@@ -276,9 +286,10 @@ object_info(struct info_data *data, struct object_file *o, - *pid_printed = 1; - } - -- printf("process=%s; buildid=%s; applied patch number=%ld\n", o->name, buildid, o->num_applied_patch); -+ printf("process = %s; buildid = %s; applied patch number = %ld:\n", o->name, buildid, o->num_applied_patch); - list_for_each_entry(applied_patch, &o->applied_patch, list) { -- printf("--->patch->magic=%s\n", applied_patch->patch_file->kpfile.patch->magic); -+ printf("%d. patch->id = %s\n", i, applied_patch->patch_file->kpfile.patch->id); -+ i++; - } - - if (storage_patch_found(patch) && patch->patchlevel) { -@@ -349,7 +360,7 @@ process_info(int pid, void *_data) - if (ret < 0) - goto out; - -- ret = kpatch_process_map_object_files(proc); -+ ret = kpatch_process_map_object_files(proc, NULL); - if (ret < 0) - goto out; - -@@ -620,7 +631,7 @@ server_stress_test(int fd, int argc, char *argv[]) - if (server_wait(pid, delay) < 0) - return 0; - -- while (processes_unpatch(pid, 0, 0) < 0) -+ while (processes_unpatch(pid, 0, 0, NULL) < 0) - if (server_wait(pid, 1) < 0) - return 0; - test_info.stat_cycle_num++; -diff --git a/src/libcare-patch-make b/src/libcare-patch-make -index 64fc709..01181b1 100755 ---- a/src/libcare-patch-make -+++ b/src/libcare-patch-make -@@ -7,6 +7,7 @@ Makes `kpatch'es for the makesystem in the current directory. - Usage: libcare-patch-make [-h|--help] [-u|--update || -c|--clean] - [-s|--srcdir=SRCDIR] \ - [-d|--destdir=DESTDIRVAR] \ -+ [-i|--id=PATCH-ID] \ - [-j|--jobs=] \ - PATCH1 PATCH2 ... - -@@ -18,6 +19,7 @@ install with specified DESTDIR. - working on patch utils. - -d --destdir specify variable makefile system uses to specify destination - directory for the installation -+ -i --id>-give this patch an unique id (less than 7 char) - -j --jobs specify variable makefile system jobs of compile, for example - `make -j 4` is startup `4` jobs to compile. - EOF -@@ -145,7 +147,7 @@ build_kpatches() { - "${patchedexec}.stripped" || continue - /usr/bin/strip --strip-unneeded "${patchedexec}.stripped" - $KPATCH_PATH/kpatch_strip --undo-link "$origexec" "${patchedexec}.stripped" -- $KPATCH_PATH/kpatch_make -b "$buildid" \ -+ $KPATCH_PATH/kpatch_make -b "$buildid" -i "$patch_id" \ - "${patchedexec}.stripped" -o "${patchedexec}.kpatch" - cp "${patchedexec}.kpatch" "${LPMAKE_PATCHROOT}"/${buildid}.kpatch - echo "patch for ${origexec} is in ${LPMAKE_PATCHROOT}/${buildid}.kpatch" -@@ -155,7 +157,7 @@ build_kpatches() { - main() { - PROG_NAME=$(basename $0) - -- TEMP=$(getopt -o s:ucd:j: --long srcdir:,update,clean,destdir:,jobs: -n ${PROG_NAME} -- "$@" || usage 1) -+ TEMP=$(getopt -o s:ucd:i:j: --long srcdir:,update,clean,destdir:,id:,jobs: -n ${PROG_NAME} -- "$@" || usage 1) - eval set -- "$TEMP" - - destdir="DESTDIR" -@@ -179,6 +181,11 @@ main() { - destdir=$1 - shift - ;; -+ -i|--id) -+ shift -+ patch_id="$1" -+ shift -+ ;; - -j|--jobs) - shift - jobs_make=$1 -@@ -190,6 +197,11 @@ main() { - esac - done - -+ if [ -z "$patch_id" ] || [ ${#patch_id} -gt 7 ];then -+ echo "Invalid patch-id!" >&2 -+ usage 1 -+ fi -+ - prepare_env - - if test -z "$only_update"; then --- -2.27.0 - diff --git a/0057-arch-aarch64-arch_elf-Add-LDR-and-B-instruction-relo.patch b/0057-arch-aarch64-arch_elf-Add-LDR-and-B-instruction-relo.patch deleted file mode 100644 index 1839e56..0000000 --- a/0057-arch-aarch64-arch_elf-Add-LDR-and-B-instruction-relo.patch +++ /dev/null @@ -1,155 +0,0 @@ -From e76db94fc8573f366d7da1f7e6620c44e298302e Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Tue, 8 Dec 2020 19:08:17 +0800 -Subject: [PATCH 57/62] arch/aarch64/arch_elf: Add LDR and B instruction - relocation - -In arm, relocation is specfic to instruction, the common pair is ADRP&ADD, -ADRP&LDR. Since we use jmp table instead of GOT, for function, we change LDR -insturction to add instruction; For variable, we keep LDR instruction, -not load jmp table entry instruction, but directly load the var addr. - -Signed-off-by: Jiajie Li -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/arch/aarch64/arch_elf.c | 83 ++++++++++++++++++++++++++++++------- - 1 file changed, 69 insertions(+), 14 deletions(-) - -diff --git a/src/arch/aarch64/arch_elf.c b/src/arch/aarch64/arch_elf.c -index deacb6f..83aa703 100644 ---- a/src/arch/aarch64/arch_elf.c -+++ b/src/arch/aarch64/arch_elf.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.09.23 - arch/aarch64/arch_elf: Add LDR and B instruction relocation -+ * Huawei Technologies Co., Ltd. - 0.1.4-13 -+ ******************************************************************************/ -+ - #include - #include - #include -@@ -19,47 +24,95 @@ - static int kpatch_arch_apply_relocate(GElf_Rela *r, GElf_Sym *s, - void *loc, void *loc2, unsigned long val) - { -+ uint32_t mask; -+ uint32_t immLo; -+ uint32_t immHi; -+ - switch (GELF_R_TYPE(r->r_info)) { - case R_AARCH64_ABS64: - *(unsigned long *)loc = val; - kpdebug("R_AARCH64_ABS64: loc=0x%x, val =0x%lx\n",*(unsigned int*)loc,val); - break; - case R_AARCH64_ADD_ABS_LO12_NC: { -- //ADD ins -+ /* ADD ins */ - kpdebug("R_AARCH64_ADD_ABS_LO12_NC: val=0x%lx\n", val); - val = val & 0xfff; -- uint32_t mask = 0xfff << 10; -+ mask = 0xfff << 10; - *(unsigned int*)loc &= ~mask; - or_32(loc, (val & 0xfff) << 10); - kpdebug("R_AARCH64_ADD_ABS_LO12_NC: loc=0x%x, val =0x%lx\n",*(unsigned int*)loc,val); - break; - } - case R_AARCH64_CALL26: { -- // TODO bl ins -+ /* BL ins */ - kpdebug("R_AARCH64_CALL26: val=0x%lx\n", val); - val -= (unsigned long)loc2; -- uint32_t mask = 0x03FFFFFF;; -+ mask = 0x03FFFFFF;; - *(unsigned int*)loc &= ~mask; - or_32(loc, (val >> 2) & mask); - kpdebug("R_AARCH64_CALL26: loc=0x%x, val =0x%lx\n",*(unsigned int*)loc, val); - break; - } - case R_AARCH64_ADR_PREL_PG_HI21: { -- // TODO ADRP ins -- kpdebug("RR_AARCH64_ADR_PREL_PG_HI21: val=0x%lx\n", val); -+ /* ADRP ins */ -+ kpdebug("R_AARCH64_ADR_PREL_PG_HI21: val=0x%lx\n", val); - val = (val >> 12) - ((unsigned long)loc2 >> 12); -- kpdebug("val=0x%lx\n",val); -- uint32_t immLo = (val & 0x3) << 29; -- uint32_t immHi = (val & 0x1FFFFC) << 3; -- uint64_t mask = (0x3 << 29) | (0x1FFFFC << 3); -+ immLo = (val & 0x3) << 29; -+ immHi = (val & 0x1FFFFC) << 3; -+ mask = (0x3 << 29) | (0x1FFFFC << 3); - *(unsigned int*)loc = (*(unsigned int*)loc & ~mask) | immLo | immHi; -- //*(unsigned int*)loc &= 0x7fffffff; -- kpdebug("lo=0x%x hi=0x%x\n",immLo,immHi); - kpdebug("R_AARCH64_ADR_PREL_PG_HI21: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); - break; - } -+ case R_AARCH64_ADR_GOT_PAGE: { -+ /* ADRP ins */ -+ kpdebug("R_AARCH64_ADR_GOT_PAGE: val=0x%lx\n", val); -+ val = (val >> 12) - ((unsigned long)loc2 >> 12); -+ immLo = (val & 0x3) << 29; -+ immHi = (val & 0x1FFFFC) << 3; -+ mask = (0x3 << 29) | (0x1FFFFC << 3); -+ *(unsigned int*)loc = (*(unsigned int*)loc & ~mask) | immLo | immHi; -+ kpdebug("R_AARCH64_ADR_GOT_PAGE: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); -+ break; -+ } -+ case R_AARCH64_LD64_GOT_LO12_NC: { -+ /* LDR ins -+ * For function, because we don't use GOT in patch code, -+ * so chang LDR to ADD. -+ * For object, we use jmp table instead GOT, so keep using LDR. -+ */ -+ kpdebug("R_AARCH64_LD64_GOT_LO12_NC: val=0x%lx\n", val); -+ if (GELF_ST_TYPE(s->st_info) == STT_OBJECT && -+ s->st_shndx == SHN_UNDEF && -+ GELF_ST_BIND(s->st_info) == STB_GLOBAL) { -+ /* This case is for a new global var from DSO */ -+ val += 8; -+ val = ((val & 0xfff) >> 3) << 10; -+ *(unsigned int*)loc = *(unsigned int*)loc & ~(0xfff << 10); -+ *(unsigned int*)loc = *(unsigned int*)loc | val; -+ break; -+ } -+ *(unsigned int*)loc = (*(unsigned int*)loc & ~(0x3ff << 22)); -+ *(unsigned int*)loc = (*(unsigned int*)loc | (0x244 << 22)); -+ val = val & 0xfff; -+ mask = 0xfff << 10; -+ *(unsigned int*)loc &= ~mask; -+ or_32(loc, (val & 0xfff) << 10); -+ kpdebug("R_AARCH64_LD64_GOT_LO12_NC: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); -+ break; -+ } -+ case R_AARCH64_JUMP26: { -+ /* B ins */ -+ kpdebug("R_AARCH64_JUMP26: val=0x%lx\n", val); -+ val = (val >> 2) - ((unsigned long)loc2 >> 2); -+ val = val & ~(0x3f << 26); -+ *(unsigned int*)loc = *(unsigned int*)loc & (0x3f << 26); -+ *(unsigned int*)loc = *(unsigned int*)loc | val; -+ kpdebug("R_AARCH64_JUMP26: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); -+ break; -+ } - default: -- kperr("unknown relocation type: %lx\n", r->r_info); -+ kperr("unknown relocation type: %ld\n", GELF_R_TYPE(r->r_info)); - return -1; - } - return 0; -@@ -108,7 +161,9 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) - val = s->st_size; - } - -- kpatch_arch_apply_relocate(r, s, loc, loc2, val); -+ if(kpatch_arch_apply_relocate(r, s, loc, loc2, val)) { -+ return -1; -+ } - } - - return 0; --- -2.27.0 - diff --git a/0058-arch-aarch64-arch_parse-improve-VAR_CBLOCK-start-ind.patch b/0058-arch-aarch64-arch_parse-improve-VAR_CBLOCK-start-ind.patch deleted file mode 100644 index 59699f8..0000000 --- a/0058-arch-aarch64-arch_parse-improve-VAR_CBLOCK-start-ind.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 05b128f942851a59fa7320557023a66ec97c5c2c Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Tue, 8 Dec 2020 19:11:37 +0800 -Subject: [PATCH 58/62] arch/aarch64/arch_parse: improve VAR_CBLOCK start - indentify - -The real problem with arm gensrc is .set pseudoinstruction separate the -.rodata / .rodata.* / .bss / .data.* such section start identifier with -follow var_cblock. So instead of handle the section start identifier -one by one, we should solve the root problem with the additional -judge of .set pseudoinstruction in is_variable_start function. - -Signed-off-by: Jiajie Li -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/arch/aarch64/arch_parse.c | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) - -diff --git a/src/arch/aarch64/arch_parse.c b/src/arch/aarch64/arch_parse.c -index a79e27f..84caf82 100644 ---- a/src/arch/aarch64/arch_parse.c -+++ b/src/arch/aarch64/arch_parse.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.09.23 - arch/aarch64/arch_parse: improve VAR_CBLOCK start indentify -+ * Huawei Technologies Co., Ltd. - 0.1.4-14 -+ * - * 2021.09.23 - arch/aarch64/arch_parse: modify is_variable_start function for gensrc in arm - * Huawei Technologies Co., Ltd. - 0.1.4-10 - ******************************************************************************/ -@@ -136,22 +139,19 @@ int is_variable_start(struct kp_file *f, int l, int *e, int *pglobl, kpstr_t *nm - case DIRECTIVE_TEXT: - case DIRECTIVE_DATA: - case DIRECTIVE_BSS: -+ case DIRECTIVE_SECTION: - case DIRECTIVE_PUSHSECTION: - case DIRECTIVE_POPSECTION: - case DIRECTIVE_PREVIOUS: - case DIRECTIVE_SUBSECTION: - break; -- case DIRECTIVE_SECTION: -- if (nm2.s != NULL) -- break; -+ case DIRECTIVE_SET: - get_token(&s, &nm2); - get_token(&s, &nm2); -- if (kpstrcmpz(&nm2, ".rodata") == 0) { -- *nm = nm2; -- if(e) -- *e = l + 2; -- return 1; -- } -+ *nm = nm2; -+ if (e) -+ *e = l + 1; -+ return 1; - case DIRECTIVE_TYPE: - get_type_args(cline(f, l), &nm2, &attr); - if (kpstrcmpz(&attr, "%object") && kpstrcmpz(&attr, "%tls_object")) --- -2.27.0 - diff --git a/0059-tls-add-support-for-TLS-symbol-with-IE-model.patch b/0059-tls-add-support-for-TLS-symbol-with-IE-model.patch deleted file mode 100644 index 2171123..0000000 --- a/0059-tls-add-support-for-TLS-symbol-with-IE-model.patch +++ /dev/null @@ -1,406 +0,0 @@ -From 9de6ed39b3f7ce1250dbcbf7f07bf163f1271e00 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Tue, 15 Dec 2020 20:00:19 +0800 -Subject: [PATCH 59/62] tls: add support for TLS symbol with IE model - -Since we have implement init-exec mode for qemu, we can take care -of tls symbol in libcare. -i. as for x86, we do need to do relocation for both global and local - tls symbol. This is because it uses %fs register to restore GOT - offset. -ii. it is really tricky for global tls symbol reference on arch64, - because it uses adrp and ldr to locate the offset of GOT entry. - We need to parse the GOT offset in fix-relocation stage and get - the right address. No more relocation for local symbol because it - has been optimized as relative addressing other than GOT reference. - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/Makefile | 2 +- - src/arch/aarch64/arch_elf.c | 26 ++++++++ - src/arch/aarch64/arch_strip.c | 109 +++++++++++++++++++++++++++++++++ - src/arch/x86/arch_strip.c | 111 ++++++++++++++++++++++++++++++++++ - src/include/kpatch_strip.h | 31 ++++++++++ - src/kpatch_strip.c | 11 +++- - 6 files changed, 287 insertions(+), 3 deletions(-) - create mode 100644 src/arch/aarch64/arch_strip.c - create mode 100644 src/arch/x86/arch_strip.c - create mode 100644 src/include/kpatch_strip.h - -diff --git a/src/Makefile b/src/Makefile -index 3cb1358..6989617 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -55,7 +55,7 @@ libcare-stresstest: LDLIBS += -lelf -lrt $(LIBUNWIND_LIBS) - - libcare-client: libcare-client.o - --kpatch_strip: kpatch_strip.o kpatch_elf_objinfo.o kpatch_log.o -+kpatch_strip: kpatch_strip.o kpatch_elf_objinfo.o kpatch_log.o arch_strip.o - kpatch_strip: LDLIBS = -lelf - - libcare-cc: kpatch_cc.o -diff --git a/src/arch/aarch64/arch_elf.c b/src/arch/aarch64/arch_elf.c -index 83aa703..6bbb153 100644 ---- a/src/arch/aarch64/arch_elf.c -+++ b/src/arch/aarch64/arch_elf.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.09.23 - tls: add support for tls symbol -+ * Huawei Technologies Co., Ltd. - 0.1.4-15 -+ * - * 2021.09.23 - arch/aarch64/arch_elf: Add LDR and B instruction relocation - * Huawei Technologies Co., Ltd. - 0.1.4-13 - ******************************************************************************/ -@@ -29,6 +32,18 @@ static int kpatch_arch_apply_relocate(GElf_Rela *r, GElf_Sym *s, - uint32_t immHi; - - switch (GELF_R_TYPE(r->r_info)) { -+ case R_AARCH64_NONE: -+ case R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC: -+ break; -+ case R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21: -+ kpdebug("R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21: val=0x%lx\n", val); -+ val = (val >> 12) - ((unsigned long)loc2 >> 12); -+ immLo = (val & 0x3) << 29; -+ immHi = (val & 0x1FFFFC) << 3; -+ mask = (0x3 << 29) | (0x1FFFFC << 3); -+ *(unsigned int*)loc = (*(unsigned int*)loc & ~mask) | immLo | immHi; -+ kpdebug("R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); -+ break; - case R_AARCH64_ABS64: - *(unsigned long *)loc = val; - kpdebug("R_AARCH64_ABS64: loc=0x%x, val =0x%lx\n",*(unsigned int*)loc,val); -@@ -160,6 +175,17 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) - if (is_kpatch_info && is_undef_symbol(s)) { - val = s->st_size; - } -+ /* -+ Special care for TLS symbol -+ i. For GLOBAL TLS symbol, point to GOT entry -+ ii. For LOCAL TLS symbol, do nothing since everything is done in static-link -+ */ -+ if (GELF_ST_TYPE(s->st_info) == STT_TLS) { -+ if (GELF_ST_BIND(s->st_info) == STB_LOCAL) -+ return 0; -+ else -+ val = r->r_addend + o->load_offset; -+ } - - if(kpatch_arch_apply_relocate(r, s, loc, loc2, val)) { - return -1; -diff --git a/src/arch/aarch64/arch_strip.c b/src/arch/aarch64/arch_strip.c -new file mode 100644 -index 0000000..5ec317d ---- /dev/null -+++ b/src/arch/aarch64/arch_strip.c -@@ -0,0 +1,109 @@ -+/****************************************************************************** -+ * Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved. -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 and -+ * only version 2 as published by the Free Software Foundation. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Description: add support for aarch64 architecture TLS symbol with IE model. -+ ******************************************************************************/ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "include/kpatch_file.h" -+#include "include/kpatch_common.h" -+ -+#include -+#include "include/kpatch_elf_objinfo.h" -+ -+#include "include/kpatch_log.h" -+#include "include/kpatch_strip.h" -+ -+ -+/* Update relocation against TLS symbol. -+ * -+ * Thread-Local Storage variables require special care because they are -+ * referenced by the offset into Thread Local Storage allocated for each -+ * thread. There are different models for TLS and we only support Initial-Exec. -+ * -+ * Returns 1 when symbol must be updated, 0 when everything is OK, -1 on error. -+ */ -+ -+#define MASK(n) ((1u << (n)) - 1) -+ -+static uint32_t objinfo_find_tls_got_by_offset(GElf_Rela *rel, -+ GElf_Shdr *sh_text, -+ unsigned char *text) -+{ -+ int i; -+ unsigned long off; -+ uint32_t insn; -+ uint32_t imm; -+ uint32_t gotoffset; -+ -+ off = rel->r_offset - sh_text->sh_addr; -+ -+ /* Get ins from text according to ARM ABI */ -+ insn = (unsigned long)text[off]; -+ for (i = 1; i <= 3; i++) { -+ insn = insn + ((unsigned long)text[off + i] << (8 * i)); -+ } -+ -+ imm = (((insn >> 5) & MASK (19)) << 2) | ((insn >> 29) & MASK (2)); -+ imm = imm << 12; -+ -+ gotoffset = imm + (sh_text->sh_addr & 0xfffff000); -+ -+ return gotoffset; -+} -+ -+int -+kpatch_arch_fixup_rela_update_tls(kpatch_objinfo *origbin, -+ kpatch_objinfo *patch, -+ GElf_Rela *rela, -+ GElf_Sym *sym, -+ GElf_Shdr *sh_text, -+ unsigned char *text) -+{ -+ unsigned long got_offset; -+ -+ char *symname, *tmp; -+ -+ /* Do nothing for Local TLS symbol */ -+ if (GELF_ST_BIND(sym->st_info) != STB_LOCAL) -+ return 0; -+ -+ symname = (char *)kpatch_objinfo_strptr(patch, -+ SYMBOL_NAME, sym->st_name); -+ tmp = strchr(symname, '@'); -+ if (tmp != NULL) -+ *tmp = '\0'; -+ -+ switch (GELF_R_TYPE(rela->r_info)) { -+ case R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21: -+ got_offset = objinfo_find_tls_got_by_offset(rela, sh_text, text); -+ kpinfo("Fix relocation for TLS symbol %s from %lx to %lx\n", -+ symname, rela->r_addend, got_offset); -+ rela->r_addend = got_offset; -+ break; -+ case R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC: -+ break; -+ default: -+ kpfatalerror("non-supported TLS model\n"); -+ return -1; -+ } -+ -+ return 0; -+} -diff --git a/src/arch/x86/arch_strip.c b/src/arch/x86/arch_strip.c -new file mode 100644 -index 0000000..ff1e212 ---- /dev/null -+++ b/src/arch/x86/arch_strip.c -@@ -0,0 +1,111 @@ -+/****************************************************************************** -+ * Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved. -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 and -+ * only version 2 as published by the Free Software Foundation. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Description: add support for x86 architecture TLS symbol with IE model. -+ ******************************************************************************/ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "include/kpatch_file.h" -+#include "include/kpatch_common.h" -+ -+#include -+#include "include/kpatch_elf_objinfo.h" -+ -+#include "include/kpatch_log.h" -+#include "include/kpatch_strip.h" -+ -+#define SECTION_OFFSET_FOUND 0x0 -+#define SECTION_NOT_FOUND 0x1 -+ -+/* Update relocation against TLS symbol. -+ * -+ * Thread-Local Storage variables require special care because they are -+ * referenced by the offset into Thread Local Storage allocated for each -+ * thread. There are different models for TLS and we only support Initial-Exec. -+ * -+ * The following types of relocations are handled: -+ * -+ * - Relocs of type TPOFF32 targeting symbols in the original are changed -+ * to reloc type NONE after the symbol is checked to be present at the -+ * same place in the original binary. (TODO) -+ * -+ * *NOTE* the only way to support new variables allocated by patch is to use -+ * dlopen-loaded patches. -+ * - Relocs of type TPOFF64 are ignored. These are only used for long memory -+ * model or as entries to GOT. -+ * - Relocs of type GOTTPOFF are quite tricky. These usually point to a GOT -+ * entry filled with TPOFF64 relocation. We can't do this relocation on our -+ * own because it requires digging into glibc internels with a hack. -+ * -+ * Instead, we cheat here and find the appropriate TPOFF64 relocations IN -+ * THE ORIGINAL object and make GOTTPOFF point there. This is different for -+ * local/global symbols but is not very hard. -+ * -+ * Returns 1 when symbol must be updated, 0 when everything is OK, -1 on error. -+ */ -+int -+kpatch_arch_fixup_rela_update_tls(kpatch_objinfo *origbin, -+ kpatch_objinfo *patch, -+ GElf_Rela *rela, -+ GElf_Sym *sym, -+ GElf_Shdr *sh_text, -+ unsigned char *text) -+{ -+ switch (GELF_R_TYPE(rela->r_info)) { -+ case R_X86_64_GOTTPOFF: -+ case R_X86_64_TPOFF32: { -+ const char *symname; -+ int rv; -+ unsigned long off; -+ /* Leave the value as is, just check offset is the same. */ -+ rela->r_info = GELF_R_INFO(0, R_X86_64_NONE); -+ symname = kpatch_objinfo_strptr(patch, SYMBOL_NAME, -+ sym->st_name); -+ -+ rv = kpatch_get_original_symbol_loc( -+ origbin, symname, &off, NULL); -+ if (rv == SECTION_NOT_FOUND) { -+ kpfatalerror( -+ "TLS symbol %s not found in original binary", -+ symname); -+ } -+ -+ kpinfo("Compare TLS symbol %s offset: %lx in origbinal binary, %lx in patch\n", -+ symname, off, sym->st_value); -+ if (off != sym->st_value) { -+ kpfatalerror("TLS symbol %s has different offset!\n", symname); -+ } -+ -+ return 0; -+ } -+ -+ case R_X86_64_DTPOFF32: -+ case R_X86_64_DTPOFF64: -+ case R_X86_64_DTPMOD64: -+ case R_X86_64_TLSGD: -+ case R_X86_64_TLSLD: -+ case R_X86_64_TPOFF64: -+ default: -+ kpfatalerror("non-supported TLS model\n"); -+ return -1; -+ } -+ -+ return 0; -+} -diff --git a/src/include/kpatch_strip.h b/src/include/kpatch_strip.h -new file mode 100644 -index 0000000..07774c5 ---- /dev/null -+++ b/src/include/kpatch_strip.h -@@ -0,0 +1,31 @@ -+/****************************************************************************** -+ * Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved. -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 and -+ * only version 2 as published by the Free Software Foundation. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ ******************************************************************************/ -+ -+#ifndef __KPATCH_STRIP_H__ -+#define __KPATCH_STRIP_H__ -+ -+int -+kpatch_get_original_symbol_loc(kpatch_objinfo *origbin, -+ const char *symname, -+ size_t *symoff, -+ const char **secname); -+ -+int -+kpatch_arch_fixup_rela_update_tls(kpatch_objinfo *origbin, -+ kpatch_objinfo *patch, -+ GElf_Rela *rela, -+ GElf_Sym *sym, -+ GElf_Shdr *sh_text, -+ unsigned char *text); -+ -+#endif -diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c -index 6ad56a3..bfc95a8 100644 ---- a/src/kpatch_strip.c -+++ b/src/kpatch_strip.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.09.23 - tls: add support for tls symbol -+ * Huawei Technologies Co., Ltd. - 0.1.4-15 -+ ******************************************************************************/ -+ - #include - #include - #include -@@ -14,6 +19,7 @@ - #include "include/kpatch_elf_objinfo.h" - - #include "include/kpatch_log.h" -+#include "include/kpatch_strip.h" - - #define ALIGN(off,sz) (((off)+(sz)-1)&~((sz)-1)) - -@@ -211,7 +217,7 @@ kpatch_get_symbol_offset_rel_section(kpatch_objinfo *oi, - return 0; - } - --static int -+int - kpatch_get_original_symbol_loc(kpatch_objinfo *origbin, - const char *symname, - size_t *symoff, -@@ -499,7 +505,8 @@ kpatch_fixup_rela_one(kpatch_objinfo *origbin, - } - - if (GELF_ST_TYPE(sym->st_info) == STT_TLS) { -- rv = kpatch_fixup_rela_update_tls(origbin, patch, rel, sym); -+ rv = kpatch_arch_fixup_rela_update_tls(origbin, patch, rel, -+ sym, sh_text, text); - if (rv < 0) - kpfatalerror("kpatch_fixup_rela_update_tls"); - --- -2.27.0 - diff --git a/0060-arch64-arch_elf-add-R_AARCH64_LDST32_ABS_LO12_NC-rel.patch b/0060-arch64-arch_elf-add-R_AARCH64_LDST32_ABS_LO12_NC-rel.patch deleted file mode 100644 index 7a81e8a..0000000 --- a/0060-arch64-arch_elf-add-R_AARCH64_LDST32_ABS_LO12_NC-rel.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 81b38ad6f44183dce7ecca58e8ff891212cadf75 Mon Sep 17 00:00:00 2001 -From: Jiajie Li -Date: Mon, 21 Dec 2020 20:20:01 +0800 -Subject: [PATCH 60/62] arch64/arch_elf: add R_AARCH64_LDST32_ABS_LO12_NC - relocation type for aarch64 - -Add a new relocation type for aarch64: R_AARCH64_LDST32_ABS_LO12_NC. -It's a LDR instruction, change the imm according to arm manual. - -Signed-off-by: Jiajie Li -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/arch/aarch64/arch_elf.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/src/arch/aarch64/arch_elf.c b/src/arch/aarch64/arch_elf.c -index 6bbb153..fe7393e 100644 ---- a/src/arch/aarch64/arch_elf.c -+++ b/src/arch/aarch64/arch_elf.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.07 - aarch64/arch_elf: Add R_AARCH64_LDST32_ABS_LO12_NC relocation type for arm -+ * Huawei Technologies Co., Ltd. - 0.1.4-16 -+ * - * 2021.09.23 - tls: add support for tls symbol - * Huawei Technologies Co., Ltd. - 0.1.4-15 - * -@@ -126,6 +129,14 @@ static int kpatch_arch_apply_relocate(GElf_Rela *r, GElf_Sym *s, - kpdebug("R_AARCH64_JUMP26: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); - break; - } -+ case R_AARCH64_LDST32_ABS_LO12_NC: { -+ /* LDR ins */ -+ val = ((val & 0xfff) >> 3) << 10; -+ *(unsigned int*)loc = *(unsigned int*)loc & ~(0xfff << 10); -+ *(unsigned int*)loc = *(unsigned int*)loc | val; -+ kpdebug("R_AARCH64_LDST32_ABS_LO12_NC: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); -+ break; -+ } - default: - kperr("unknown relocation type: %ld\n", GELF_R_TYPE(r->r_info)); - return -1; --- -2.27.0 - diff --git a/0061-process-fix-region-start-calculation.patch b/0061-process-fix-region-start-calculation.patch deleted file mode 100644 index b125a6c..0000000 --- a/0061-process-fix-region-start-calculation.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 0e67320d7a01d301929ed28524920b0c466d40b1 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Fri, 25 Dec 2020 16:24:20 +0800 -Subject: [PATCH 61/62] process: fix region start calculation - -1), as for x86, we do not need to add a total PAGE_SIZE because we have - added one page when process_add_vm_hole() -2), as for arm, max_distance should be limited to 128M due to branch - instruction jump size -3), do not do random for region start to make cumulative patches allocation - in order - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/arch/aarch64/arch_process.c | 19 +++++++------------ - src/arch/x86/arch_process.c | 7 ++++++- - 2 files changed, 13 insertions(+), 13 deletions(-) - -diff --git a/src/arch/aarch64/arch_process.c b/src/arch/aarch64/arch_process.c -index 3a64d77..6fa6fdc 100644 ---- a/src/arch/aarch64/arch_process.c -+++ b/src/arch/aarch64/arch_process.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.10.07 - process: fix region_start caclulation -+ * Huawei Technologies Co., Ltd. - 0.1.4-17 -+ ******************************************************************************/ -+ - #include - #include - #include -@@ -47,7 +52,7 @@ object_find_patch_region(struct object_file *obj, - struct list_head *head = &obj->proc->vmaholes; - struct vm_hole *left_hole = obj->previous_hole, - *right_hole = next_hole(left_hole, head); -- unsigned long max_distance = 0x80000000; -+ unsigned long max_distance = 0x8000000; - struct obj_vm_area *sovma; - - unsigned long obj_start, obj_end; -@@ -102,17 +107,7 @@ object_find_patch_region(struct object_file *obj, - return -1UL; - } - -- /* -- * On aarch64, virtual address of text and data segments may be continuous, -- * gap between data segment and process heap may be huge. Need to have -- * region_end fixed. Here goes the trick: -- * The branch instruction jump size is in the range of +/-128MB. -- * So we need to put limitation to the region_end. -- */ -- region_end = region_start + (0x1<<25); -- region_start = random_from_range(region_start >> PAGE_SHIFT, -- region_end >> PAGE_SHIFT); -- region_start <<= PAGE_SHIFT; -+ region_start = (region_start >> PAGE_SHIFT) << PAGE_SHIFT; - kpdebug("Found patch region for '%s' at %lx\n", obj->name, region_start); - - return region_start; -diff --git a/src/arch/x86/arch_process.c b/src/arch/x86/arch_process.c -index ba66134..9b6ba84 100644 ---- a/src/arch/x86/arch_process.c -+++ b/src/arch/x86/arch_process.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.10.07 - process: fix region_start caclulation -+ * Huawei Technologies Co., Ltd. - 0.1.4-17 -+ ******************************************************************************/ -+ - #include - #include - #include -@@ -101,7 +106,7 @@ unsigned long object_find_patch_region(struct object_file *obj, - return -1UL; - } - -- region_start += PAGE_SIZE; -+ region_start = (region_start >> PAGE_SHIFT) << PAGE_SHIFT; - kpdebug("Found patch region for '%s' at %lx\n", obj->name, region_start); - - return region_start; --- -2.27.0 - diff --git a/0062-aarch64-arch_elf-Add-ldr-and-ldrb-relocation-for-aar.patch b/0062-aarch64-arch_elf-Add-ldr-and-ldrb-relocation-for-aar.patch deleted file mode 100644 index e995c36..0000000 --- a/0062-aarch64-arch_elf-Add-ldr-and-ldrb-relocation-for-aar.patch +++ /dev/null @@ -1,62 +0,0 @@ -From e49c69f5c9e2b70e561df4e1ebad1deb63e7e5d3 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Mon, 28 Dec 2020 12:21:52 +0800 -Subject: [PATCH 62/62] aarch64/arch_elf: Add ldr and ldrb relocation for - aarch64 - -i: Add a new relocation type for aarch64: R_AARCH64_LDST64_ABS_LO12_NC. -It's a LDR instruction, change the imm according to arm manual. -Assemble shows like: -8013f0: fd438749 ldr d9, [x26, #1800] - -ii:Add a new relocation type for aarch64: R_AARCH64_LDST8_ABS_LO12_NC. -It's a LDRB instruction, change the imm according to arm manual. -Assemble shows like: -801230: 395e2000 ldrb w0, [x0, #1928] - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/arch/aarch64/arch_elf.c | 19 +++++++++++++++++++ - 1 file changed, 19 insertions(+) - -diff --git a/src/arch/aarch64/arch_elf.c b/src/arch/aarch64/arch_elf.c -index fe7393e..2a9b5dc 100644 ---- a/src/arch/aarch64/arch_elf.c -+++ b/src/arch/aarch64/arch_elf.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.07 - aarch64/arch_elf: Add ldr and ldrb relocation for aarch64 -+ * Huawei Technologies Co., Ltd. - 0.1.4-18 -+ * - * 2021.10.07 - aarch64/arch_elf: Add R_AARCH64_LDST32_ABS_LO12_NC relocation type for arm - * Huawei Technologies Co., Ltd. - 0.1.4-16 - * -@@ -137,6 +140,22 @@ static int kpatch_arch_apply_relocate(GElf_Rela *r, GElf_Sym *s, - kpdebug("R_AARCH64_LDST32_ABS_LO12_NC: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); - break; - } -+ case R_AARCH64_LDST64_ABS_LO12_NC: { -+ /* LDR ins */ -+ val = ((val & 0xfff) >> 3) << 10; -+ *(unsigned int*)loc = *(unsigned int*)loc & ~(0xfff << 10); -+ *(unsigned int*)loc = *(unsigned int*)loc | val; -+ kpdebug("R_AARCH64_LDST64_ABS_LO12_NC: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); -+ break; -+ } -+ case R_AARCH64_LDST8_ABS_LO12_NC: { -+ /* LDRB ins */ -+ val = ((val & 0xfff) >> 3) << 10; -+ *(unsigned int*)loc = *(unsigned int*)loc & ~(0xfff << 10); -+ *(unsigned int*)loc = *(unsigned int*)loc | val; -+ kpdebug("R_AARCH64_LDST8_ABS_LO12_NC: loc=0x%x, val=0x%lx\n", *(unsigned int *)loc, val); -+ break; -+ } - default: - kperr("unknown relocation type: %ld\n", GELF_R_TYPE(r->r_info)); - return -1; --- -2.27.0 - diff --git a/0063-process-add-some-checks-before-patching.patch b/0063-process-add-some-checks-before-patching.patch deleted file mode 100644 index fb0729a..0000000 --- a/0063-process-add-some-checks-before-patching.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 545f861d2c0586f78d4860406f107a3fd963218c Mon Sep 17 00:00:00 2001 -From: Hao Wang -Date: Wed, 6 Jan 2021 14:16:15 +0800 -Subject: [PATCH 063/118] process: add some checks before patching - -Add some checks before patching: - 1. exit if target patch is not found - 2. exit if inputted patch-id is a empty string - -Signed-off-by: Hao Wang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_make.c | 7 +++++-- - src/kpatch_process.c | 13 +++++++++---- - 2 files changed, 14 insertions(+), 6 deletions(-) - -diff --git a/src/kpatch_make.c b/src/kpatch_make.c -index 043cd24..ceadd1c 100644 ---- a/src/kpatch_make.c -+++ b/src/kpatch_make.c -@@ -1,6 +1,9 @@ - /****************************************************************************** -+ * 2021.10.07 - process: add some checks before patching -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.09.23 - libcare-ctl: introduce patch-id -- * Huawei Technologies Co., Ltd. - 0.1.4-12 -+ * Huawei Technologies Co., Ltd. - ******************************************************************************/ - - #include -@@ -99,7 +102,7 @@ int main(int argc, char **argv) - } - } - -- if (buildid == NULL || patch_id == NULL) -+ if (buildid == NULL || patch_id == NULL || *patch_id == '\0') - usage(); - - fd1 = open(argv[optind], O_RDONLY); -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index 9753bad..4734930 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -1,9 +1,12 @@ - /****************************************************************************** -+ * 2021.10.07 - process: add some checks before patching -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.09.23 - libcare-ctl: introduce patch-id -- * Huawei Technologies Co., Ltd. - 0.1.4-12 -+ * Huawei Technologies Co., Ltd. - * - * 2021.09.23 - libcare-ctl: implement applied patch list -- * Huawei Technologies Co., Ltd. - 0.1.4-11 -+ * Huawei Technologies Co., Ltd. - ******************************************************************************/ - - #include -@@ -429,8 +432,10 @@ kpatch_process_associate_patches(kpatch_process_t *proc, const char *patch_id) - } - } - -- if (patch_id && !found_target) -+ if (patch_id && !found_target) { - fprintf(stderr, "Failed to find target patch with patch_id=%s!\n", patch_id); -+ return -1; -+ } - - return found; - } -@@ -549,7 +554,7 @@ kpatch_process_map_object_files(kpatch_process_t *proc, const char *patch_id) - kpinfo("Found %d applied patch(es).\n", ret); - } - -- return 0; -+ return ret; - } - - static void --- -2.27.0 - diff --git a/0064-time-add-frozen-time-count-for-patch-unpatch.patch b/0064-time-add-frozen-time-count-for-patch-unpatch.patch deleted file mode 100644 index 345f274..0000000 --- a/0064-time-add-frozen-time-count-for-patch-unpatch.patch +++ /dev/null @@ -1,103 +0,0 @@ -From 67aa886cba66819468adb7ccc1326ee40d9ab1e2 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Thu, 7 Jan 2021 13:30:36 +0800 -Subject: [PATCH 064/118] time: add frozen time count for patch/unpatch - -It is necessary to calculate frozeon time which is directly related -to live patch downtime. - -Signed-off-by: JiaJie Li -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_patch.c | 21 +++++++++++++++++++-- - 1 file changed, 19 insertions(+), 2 deletions(-) - -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index 3eb0922..e0d533d 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -1,9 +1,12 @@ - /****************************************************************************** -+ * 2021.10.07 - time: add frozen time count for patch/unpatch -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.09.23 - libcare-ctl: introduce patch-id -- * Huawei Technologies Co., Ltd. - 0.1.4-12 -+ * Huawei Technologies Co., Ltd. - * - * 2021.09.23 - libcare-ctl: implement applied patch list -- * Huawei Technologies Co., Ltd. - 0.1.4-11 -+ * Huawei Technologies Co., Ltd. - ******************************************************************************/ - - #include -@@ -28,7 +31,9 @@ - #include "include/kpatch_ptrace.h" - #include "include/list.h" - #include "include/kpatch_log.h" -+#include - -+#define GET_MICROSECONDS(a, b) ((a.tv_sec - b.tv_sec) * 1000000 + (a.tv_usec - b.tv_usec)) - - static inline int - is_addr_in_info(unsigned long addr, -@@ -421,6 +426,8 @@ int process_patch(int pid, void *_data) - int ret; - kpatch_process_t _proc, *proc = &_proc; - struct patch_data *data = _data; -+ struct timeval start_tv, end_tv; -+ unsigned long frozen_time; - - kpatch_storage_t *storage = data->storage; - int is_just_started = data->is_just_started; -@@ -470,6 +477,7 @@ int process_patch(int pid, void *_data) - if (ret <= 0) - goto out_free; - -+ gettimeofday(&start_tv, NULL); - /* Finally, attach to process */ - ret = kpatch_process_attach(proc); - if (ret < 0) -@@ -491,6 +499,9 @@ int process_patch(int pid, void *_data) - - out_free: - kpatch_process_free(proc); -+ gettimeofday(&end_tv, NULL); -+ frozen_time = GET_MICROSECONDS(end_tv, start_tv); -+ kpinfo("PID '%d' process patch frozen_time is %ld microsecond\n", pid, frozen_time); - - out: - if (ret < 0) { -@@ -669,6 +680,8 @@ int process_unpatch(int pid, void *_data) - char **buildids = data->buildids; - int nbuildids = data->nbuildids; - const char *patch_id = data->patch_id; -+ struct timeval start_tv, end_tv; -+ unsigned long frozen_time; - - ret = kpatch_process_init(proc, pid, /* start */ 0, /* send_fd */ -1); - if (ret < 0) -@@ -676,6 +689,7 @@ int process_unpatch(int pid, void *_data) - - kpatch_process_print_short(proc); - -+ gettimeofday(&start_tv, NULL); - ret = kpatch_process_attach(proc); - if (ret < 0) - goto out; -@@ -692,6 +706,9 @@ int process_unpatch(int pid, void *_data) - - out: - kpatch_process_free(proc); -+ gettimeofday(&end_tv, NULL); -+ frozen_time = GET_MICROSECONDS(end_tv, start_tv); -+ kpinfo("PID '%d' process unpatch frozen_time is %ld microsecond\n", pid, frozen_time); - - if (ret < 0) - printf("Failed to cancel patches for %d\n", pid); --- -2.27.0 - diff --git a/0065-libcare-ctl-optimize-output-of-libcare-ctl-info.patch b/0065-libcare-ctl-optimize-output-of-libcare-ctl-info.patch deleted file mode 100644 index c59887c..0000000 --- a/0065-libcare-ctl-optimize-output-of-libcare-ctl-info.patch +++ /dev/null @@ -1,96 +0,0 @@ -From e9aae44bb4ffd25a3a3feb9b8423ac0d692312c3 Mon Sep 17 00:00:00 2001 -From: Hao Wang -Date: Thu, 21 Jan 2021 19:21:33 +0800 -Subject: [PATCH 065/118] libcare-ctl: optimize output of libcare-ctl info - -Signed-off-by: Hao Wang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_user.c | 30 +++++++++++++----------------- - 1 file changed, 13 insertions(+), 17 deletions(-) - -diff --git a/src/kpatch_user.c b/src/kpatch_user.c -index 66f3efa..4283e33 100644 ---- a/src/kpatch_user.c -+++ b/src/kpatch_user.c -@@ -1,9 +1,12 @@ - /****************************************************************************** -+ * 2021.10.07 - libcare-ctl: optimize output of libcare-ctl info -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.09.23 - libcare-ctl: introduce patch-id -- * Huawei Technologies Co., Ltd. - 0.1.4-12 -+ * Huawei Technologies Co., Ltd. - * - * 2021.09.23 - libcare-ctl: implement applied patch list -- * Huawei Technologies Co., Ltd. - 0.1.4-11 -+ * Huawei Technologies Co., Ltd. - ******************************************************************************/ - - #include -@@ -238,8 +241,7 @@ init_colors(void) - } - - static int --object_info(struct info_data *data, struct object_file *o, -- int *pid_printed) -+object_info(struct info_data *data, struct object_file *o) - { - const char *buildid; - kpatch_process_t *proc = o->proc; -@@ -247,7 +249,6 @@ object_info(struct info_data *data, struct object_file *o, - struct kpatch_storage_patch *patch = NULL; - int patch_found = PATCH_NOT_FOUND; - struct obj_applied_patch *applied_patch; -- int i = 1; - - if (!o->is_elf || is_kernel_object_name(o->name)) - return 0; -@@ -281,15 +282,12 @@ object_info(struct info_data *data, struct object_file *o, - if (o->num_applied_patch == 0 && !patch_found) - return 0; - -- if (!*pid_printed) { -- printf("pid=%d comm=%s\n", pid, proc->comm); -- *pid_printed = 1; -- } -- -- printf("process = %s; buildid = %s; applied patch number = %ld:\n", o->name, buildid, o->num_applied_patch); -+ printf("%-25s %d\n", "Pid:", pid); -+ printf("%-25s %s\n", "Process:", o->name); -+ printf("%-25s %s\n", "Build id:", buildid); -+ printf("%-25s %ld\n", "Applied patch number:", o->num_applied_patch); - list_for_each_entry(applied_patch, &o->applied_patch, list) { -- printf("%d. patch->id = %s\n", i, applied_patch->patch_file->kpfile.patch->id); -- i++; -+ printf("%-25s %s\n", "Patch id:", applied_patch->patch_file->kpfile.patch->id); - } - - if (storage_patch_found(patch) && patch->patchlevel) { -@@ -347,7 +345,7 @@ object_info(struct info_data *data, struct object_file *o, - static int - process_info(int pid, void *_data) - { -- int ret, pid_printed = 0; -+ int ret; - kpatch_process_t _proc, *proc = &_proc; - struct info_data *data = _data; - struct object_file *o; -@@ -366,11 +364,9 @@ process_info(int pid, void *_data) - - - list_for_each_entry(o, &proc->objs, list) -- if (object_info(data, o, &pid_printed)) -+ if (object_info(data, o)) - break; - -- if (pid_printed && data->print_description) -- printf("========================================\n"); - out: - kpatch_process_free(proc); - --- -2.27.0 - diff --git a/0066-libcare-patch-make-add-build-id-options.patch b/0066-libcare-patch-make-add-build-id-options.patch deleted file mode 100644 index fb8ef8d..0000000 --- a/0066-libcare-patch-make-add-build-id-options.patch +++ /dev/null @@ -1,73 +0,0 @@ -From b946c0505cabaacf780a3903097e685af44d6945 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Mon, 1 Feb 2021 16:26:16 +0800 -Subject: [PATCH 066/118] libcare-patch-make: add --build-id options - -build-id could change between a complete packages and a package -after extracting debuginfo through rpmbuild. -Note that, it would not change any symbol offset when do stripping -debuginfo, it would be safe to assign the build-id forcely. - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/libcare-patch-make | 13 ++++++++++++- - 1 file changed, 12 insertions(+), 1 deletion(-) - -diff --git a/src/libcare-patch-make b/src/libcare-patch-make -index 01181b1..7e0edf0 100755 ---- a/src/libcare-patch-make -+++ b/src/libcare-patch-make -@@ -8,6 +8,7 @@ Usage: libcare-patch-make [-h|--help] [-u|--update || -c|--clean] - [-s|--srcdir=SRCDIR] \ - [-d|--destdir=DESTDIRVAR] \ - [-i|--id=PATCH-ID] \ -+ [-b|--buildid=BUILD-ID] \ - [-j|--jobs=] \ - PATCH1 PATCH2 ... - -@@ -20,6 +21,7 @@ install with specified DESTDIR. - -d --destdir specify variable makefile system uses to specify destination - directory for the installation - -i --id>-give this patch an unique id (less than 7 char) -+ -b --buildid give this patch an unique build-id - -j --jobs specify variable makefile system jobs of compile, for example - `make -j 4` is startup `4` jobs to compile. - EOF -@@ -140,6 +142,10 @@ build_kpatches() { - - test -n "$buildid" || continue - -+ if [ ! -z ${build_id} ];then -+ buildid=${build_id} -+ fi -+ - chmod u+w "${origexec}" "${patchedexec}" - $KPATCH_PATH/kpatch_strip --strip "${patchedexec}" \ - "${patchedexec}.stripped" >/dev/null -@@ -157,7 +163,7 @@ build_kpatches() { - main() { - PROG_NAME=$(basename $0) - -- TEMP=$(getopt -o s:ucd:i:j: --long srcdir:,update,clean,destdir:,id:,jobs: -n ${PROG_NAME} -- "$@" || usage 1) -+ TEMP=$(getopt -o s:ucd:i:b:j: --long srcdir:,update,clean,destdir:,id:,buildid:,jobs: -n ${PROG_NAME} -- "$@" || usage 1) - eval set -- "$TEMP" - - destdir="DESTDIR" -@@ -186,6 +192,11 @@ main() { - patch_id="$1" - shift - ;; -+ -b|--buildid) -+ shift -+ build_id="$1" -+ shift -+ ;; - -j|--jobs) - shift - jobs_make=$1 --- -2.27.0 - diff --git a/0067-libcare-patch-make-add-j-option-to-accelarate-make-p.patch b/0067-libcare-patch-make-add-j-option-to-accelarate-make-p.patch deleted file mode 100644 index dddc2e8..0000000 --- a/0067-libcare-patch-make-add-j-option-to-accelarate-make-p.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 9818d259a05f1da3eef99b2dc7df28b653d02f89 Mon Sep 17 00:00:00 2001 -From: Bihong Yu -Date: Sun, 7 Feb 2021 18:51:24 +0800 -Subject: [PATCH 067/118] libcare-patch-make: add -j option to accelarate make - process - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/libcare-patch-make | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/libcare-patch-make b/src/libcare-patch-make -index 7e0edf0..3b757aa 100755 ---- a/src/libcare-patch-make -+++ b/src/libcare-patch-make -@@ -83,7 +83,7 @@ build_objects() { - test $jobs_make && JOBS_MAKE="-j $jobs_make" - - if test -n "$do_clean"; then -- make $LPMAKEFILE clean >$MAKE_OUTPUT 2>&1 -+ make $LPMAKEFILE $JOBS_MAKE clean >$MAKE_OUTPUT 2>&1 - rm -rf "$LPMAKE_ORIGINAL_DIR" "$LPMAKE_PATCHED_DIR" - fi - -@@ -94,7 +94,7 @@ build_objects() { - make $LPMAKEFILE $JOBS_MAKE >$MAKE_OUTPUT 2>&1 - - echo "${green}INSTALLING ORIGINAL OBJECTS INTO $LPMAKE_ORIGINAL_DIR${reset}" -- make $LPMAKEFILE install \ -+ make $LPMAKEFILE $JOBS_MAKE install \ - "$destdir=$LPMAKE_ORIGINAL_DIR" \ - >$MAKE_OUTPUT 2>&1 - -@@ -120,7 +120,7 @@ build_objects() { - make $LPMAKEFILE $JOBS_MAKE >$MAKE_OUTPUT 2>&1 - - echo "${green}INSTALLING PATCHED OBJECTS INTO $LPMAKE_PATCHED_DIR${reset}" -- make $LPMAKEFILE install \ -+ make $LPMAKEFILE $JOBS_MAKE install \ - "$destdir=$LPMAKE_PATCHED_DIR" \ - >$MAKE_OUTPUT 2>&1 - } --- -2.27.0 - diff --git a/0068-Makefile-make-binfiles-permission-as-500.patch b/0068-Makefile-make-binfiles-permission-as-500.patch deleted file mode 100644 index c22d8ca..0000000 --- a/0068-Makefile-make-binfiles-permission-as-500.patch +++ /dev/null @@ -1,42 +0,0 @@ -From e17ed8e58c3aa6c4450316ed2131b1d5ba263c4a Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Sun, 7 Feb 2021 20:38:54 +0800 -Subject: [PATCH 068/118] Makefile: make binfiles' permission as 500 - -Permission as 500 should be enough for all binfiles, change it. - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/Makefile | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - -diff --git a/src/Makefile b/src/Makefile -index 6989617..9071be4 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -111,12 +111,12 @@ libexecdir ?= /usr/local/libexec - INSTALL ?= install - install: all - $(INSTALL) -d $(DESTDIR)/$(bindir) -- $(INSTALL) -m 0755 libcare-ctl $(DESTDIR)/$(bindir)/libcare-ctl -- $(INSTALL) -m 0755 libcare-client $(DESTDIR)/$(bindir)/libcare-client -- $(INSTALL) -m 0755 libcare-cc $(DESTDIR)/$(bindir)/libcare-cc -- $(INSTALL) -m 0755 libcare-patch-make $(DESTDIR)/$(bindir)/libcare-patch-make -- $(INSTALL) -m 0755 kpatch_gensrc $(DESTDIR)/$(bindir)/kpatch_gensrc -- $(INSTALL) -m 0755 kpatch_make $(DESTDIR)/$(bindir)/kpatch_make -- $(INSTALL) -m 0755 kpatch_strip $(DESTDIR)/$(bindir)/kpatch_strip -+ $(INSTALL) -m 0500 libcare-ctl $(DESTDIR)/$(bindir)/libcare-ctl -+ $(INSTALL) -m 0500 libcare-client $(DESTDIR)/$(bindir)/libcare-client -+ $(INSTALL) -m 0500 libcare-cc $(DESTDIR)/$(bindir)/libcare-cc -+ $(INSTALL) -m 0500 libcare-patch-make $(DESTDIR)/$(bindir)/libcare-patch-make -+ $(INSTALL) -m 0500 kpatch_gensrc $(DESTDIR)/$(bindir)/kpatch_gensrc -+ $(INSTALL) -m 0500 kpatch_make $(DESTDIR)/$(bindir)/kpatch_make -+ $(INSTALL) -m 0500 kpatch_strip $(DESTDIR)/$(bindir)/kpatch_strip - - .PHONY: all clean test tests tests-gensrc tests-strip --- -2.27.0 - diff --git a/0069-libcare-ctl-remove-useless-codes-for-info-interface.patch b/0069-libcare-ctl-remove-useless-codes-for-info-interface.patch deleted file mode 100644 index 162bc30..0000000 --- a/0069-libcare-ctl-remove-useless-codes-for-info-interface.patch +++ /dev/null @@ -1,315 +0,0 @@ -From 7f5ab12da72aa5878c61b0078fedfb82575d0b5d Mon Sep 17 00:00:00 2001 -From: Hao Wang -Date: Fri, 26 Feb 2021 15:42:13 +0800 -Subject: [PATCH 069/118] libcare-ctl: remove useless codes for info interface - -Signed-off-by: Hao Wang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_user.c | 216 ++++------------------------------------------ - 1 file changed, 19 insertions(+), 197 deletions(-) - -diff --git a/src/kpatch_user.c b/src/kpatch_user.c -index 4283e33..8eaec58 100644 ---- a/src/kpatch_user.c -+++ b/src/kpatch_user.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.07 - libcare-ctl: remove useless codes for info interface -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.07 - libcare-ctl: optimize output of libcare-ctl info - * Huawei Technologies Co., Ltd. - * -@@ -202,87 +205,40 @@ int cmd_unpatch_user(int argc, char *argv[]) - return processes_unpatch(pid, argv, argc, patch_id); - } - --static --int usage_info(const char *err) -+static int -+usage_info(const char *err) - { - if (err) - fprintf(stderr, "err: %s\n", err); -- fprintf(stderr, "usage: libcare-ctl info [options] [-b BUILDID] [-p PID] [-s STORAGE] [-r REGEXP]\n"); -+ -+ fprintf(stderr, "usage: libcare-ctl info -p PID\n"); - fprintf(stderr, "\nOptions:\n"); - fprintf(stderr, " -h - this message\n"); -- fprintf(stderr, " -n - don't print patch descriptions\n"); -- fprintf(stderr, " -b - output all processes having object with specified BuildID loaded\n"); - fprintf(stderr, " -p - target process, 'all' or omitted for all the system processes\n"); -- fprintf(stderr, " -s - only show BuildIDs of object having patches in STORAGE, default %s\n", -- storage_dir); -- fprintf(stderr, " -r - only show BuildIDs of object having name matching REGEXP\n"); - return err ? 0 : -1; - } - --struct info_data { -- const char *buildid; -- kpatch_storage_t *storage; -- regex_t *name_re; -- int print_description; -- int may_update, vulnerable; --}; -- --const char *RED = "\x1B[31m"; --const char *GREEN = "\x1B[32m"; --const char *YELLOW = "\x1B[33m"; --const char *RESET = "\x1B[0m"; -- --static void --init_colors(void) --{ -- if (!isatty(fileno(stdout))) { -- RED = GREEN = YELLOW = RESET = ""; -- } --} -- - static int --object_info(struct info_data *data, struct object_file *o) -+object_info(struct object_file *o) - { - const char *buildid; - kpatch_process_t *proc = o->proc; -- int pid = proc->pid; -- struct kpatch_storage_patch *patch = NULL; -- int patch_found = PATCH_NOT_FOUND; -- struct obj_applied_patch *applied_patch; -+ struct obj_applied_patch *applied_patch = NULL; - - if (!o->is_elf || is_kernel_object_name(o->name)) - return 0; - - -- if (data->name_re != NULL && -- regexec(data->name_re, o->name, -- 0, NULL, REG_EXTENDED) == REG_NOMATCH) -+ if (!o->num_applied_patch) - return 0; - - buildid = kpatch_get_buildid(o); - if (buildid == NULL) { - kpinfo("can't get buildid for %s\n", o->name); -- return 0; -- } -- -- if (data->buildid) { -- if (!strcmp(data->buildid, buildid)) { -- printf("pid=%d comm=%s\n", pid, proc->comm); -- printf("%s %s\n", o->name, buildid); -- return 1; -- } -- return 0; -+ return -1; - } - -- if (data->storage) -- patch_found = storage_have_patch(data->storage, -- buildid, -- &patch); -- -- if (o->num_applied_patch == 0 && !patch_found) -- return 0; -- -- printf("%-25s %d\n", "Pid:", pid); -+ printf("%-25s %d\n", "Pid:", proc->pid); - printf("%-25s %s\n", "Process:", o->name); - printf("%-25s %s\n", "Build id:", buildid); - printf("%-25s %ld\n", "Applied patch number:", o->num_applied_patch); -@@ -290,64 +246,16 @@ object_info(struct info_data *data, struct object_file *o) - printf("%-25s %s\n", "Patch id:", applied_patch->patch_file->kpfile.patch->id); - } - -- if (storage_patch_found(patch) && patch->patchlevel) { -- printf(" latest=%d", patch->patchlevel); -- } -- -- /* empty patch patchlevel=0 with description of bugs in the version */ -- if (patch && patch->patchlevel == 0 && o->num_applied_patch == 0) { -- printf(" %sVULNERABLE%s\n", RED, RESET); -- -- if (data->print_description) { -- char *desc; -- -- desc = storage_get_description(data->storage, patch); -- printf("\n%sVULNERABLE VERSION:\n", RED); -- -- printf("%s%s", desc, RESET); -- } -- -- data->vulnerable ++; -- } -- - printf("\n"); - -- /* Old or no patch applied but we have one in storage */ -- if (patch && patch->patchlevel != 0 && -- (o->num_applied_patch == 0 || patch->patchlevel > o->kpfile.patch->user_level)) { -- if (data->print_description) { -- char *desc; -- -- printf("\n%snew patch description:\n", YELLOW); -- -- desc = storage_get_description(data->storage, patch); -- printf("%s%s", desc, RESET); -- } -- -- data->may_update++; -- return 0; -- } -- -- /* patch applied and is latest version. show descripition for it */ -- if (patch && (o->num_applied_patch > 0) && data->print_description) { -- char *desc; -- -- printf("\n%slatest patch applied\n", GREEN); -- -- desc = storage_get_description(data->storage, patch); -- printf("%s%s", desc, RESET); -- return 0; -- } -- - return 0; - } - - static int --process_info(int pid, void *_data) -+process_info(int pid) - { - int ret; - kpatch_process_t _proc, *proc = &_proc; -- struct info_data *data = _data; - struct object_file *o; - - ret = kpatch_process_init(proc, pid, /* start */ 0, /* send_fd */ -1); -@@ -363,102 +271,23 @@ process_info(int pid, void *_data) - goto out; - - -- list_for_each_entry(o, &proc->objs, list) -- if (object_info(data, o)) -+ list_for_each_entry(o, &proc->objs, list) { -+ if ((ret = object_info(o)) < 0) - break; -+ } - - out: - kpatch_process_free(proc); -- -- return ret; --} -- --static int --processes_info(int pid, -- const char *buildid, -- const char *storagepath, -- const char *regexp, -- int print_description) --{ -- int ret = -1; -- struct info_data data = { 0, }; -- kpatch_storage_t storage; -- regex_t regex; -- -- init_colors(); -- -- data.buildid = buildid; -- data.print_description = print_description; -- data.may_update = 0; -- data.vulnerable = 0; -- -- if (regexp != NULL) { -- ret = regcomp(®ex, regexp, REG_EXTENDED); -- if (ret != 0) { -- ret = -1; -- goto out_err; -- } -- data.name_re = ®ex; -- } -- -- if (storagepath != NULL) { -- ret = storage_init(&storage, storagepath); -- if (ret < 0) -- goto out_err; -- data.storage = &storage; -- } -- -- ret = processes_do(pid, process_info, &data); -- -- if (data.vulnerable) { -- printf("%s%d object(s) are vulnerable%s\n", RED, data.vulnerable, RESET); -- } -- -- if (data.may_update) { -- printf("%s%d object(s) may be updated to the latest patch%s\n", -- YELLOW, data.may_update, RESET); -- printf("\n%sRun: libcare-client update%s\n", -- RED, RESET); -- } -- --out_err: -- if (data.storage != NULL) { -- storage_free(data.storage); -- } -- if (data.name_re != NULL) { -- regfree(data.name_re); -- } -- - return ret; - } - - int cmd_info_user(int argc, char *argv[]) - { -- int opt, pid = -1, verbose = 0, print_description = 1; -- const char *buildid = NULL; -- const char *storagepath = storage_dir; -- const char *regexp = NULL; -+ int opt, pid = -1, verbose = 0; - -- while ((opt = getopt(argc, argv, "hb:p:s:r:vn")) != EOF) { -+ while ((opt = getopt(argc, argv, "hp:v")) != EOF) { - switch (opt) { -- case 'b': -- buildid = optarg; -- break; - case 'p': -- if (strcmp(optarg, "all")) -- pid = atoi(optarg); -- break; -- case 's': -- storagepath = optarg; -- if (storagepath[0] == '\0' || -- !strcmp(storagepath, "/dev/null")) -- storagepath = NULL; -- break; -- case 'n': -- print_description = 0; -- break; -- case 'r': -- regexp = optarg; - break; - case 'v': - verbose = 1; -@@ -473,14 +302,7 @@ int cmd_info_user(int argc, char *argv[]) - if (!verbose) - log_level = LOG_ERR; - -- if ((regexp != NULL && buildid != NULL) || -- (buildid != NULL && storagepath != NULL)) { -- return usage_info("regexp & buildid | buildid & storage are mutual"); -- } -- -- -- return processes_info(pid, buildid, storagepath, regexp, -- print_description); -+ return process_info(pid); - } - - --- -2.27.0 - diff --git a/0070-kpatch_object-combine-funcitons-with-similar-functio.patch b/0070-kpatch_object-combine-funcitons-with-similar-functio.patch deleted file mode 100644 index baea253..0000000 --- a/0070-kpatch_object-combine-funcitons-with-similar-functio.patch +++ /dev/null @@ -1,154 +0,0 @@ -From 1f57665d6e1a71879dd782fc6e166ad89e09e57b Mon Sep 17 00:00:00 2001 -From: Bihong Yu -Date: Mon, 22 Feb 2021 17:11:01 +0800 -Subject: [PATCH 070/118] kpatch_object: combine funcitons with similar - function - -the kpatch_object_find_applied_patch() and -the kpatch_object_check_duplicate_id() have similar function, so -combine them. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/include/kpatch_process.h | 11 +++++++---- - src/kpatch_patch.c | 10 ++++++++-- - src/kpatch_process.c | 29 +++++++++-------------------- - 3 files changed, 24 insertions(+), 26 deletions(-) - -diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h -index 9409917..ea5aa27 100644 ---- a/src/include/kpatch_process.h -+++ b/src/include/kpatch_process.h -@@ -1,9 +1,12 @@ - /****************************************************************************** -+ * 2021.10.07 - kpatch_object: combine funcitons with similar function -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.09.23 - libcare-ctl: introduce patch-id -- * Huawei Technologies Co., Ltd. - 0.1.4-12 -+ * Huawei Technologies Co., Ltd. - * - * 2021.09.23 - libcare-ctl: implement applied patch list -- * Huawei Technologies Co., Ltd. - 0.1.4-11 -+ * Huawei Technologies Co., Ltd. - ******************************************************************************/ - - #ifndef __KPATCH_PROCESS__ -@@ -235,8 +238,8 @@ unsigned long object_find_patch_region(struct object_file *obj, - size_t memsize, - struct vm_hole **hole); - --int kpatch_object_check_duplicate_id(struct object_file *o, const char *patch_id); -+struct object_file * -+kpatch_object_get_applied_patch_by_id(struct object_file *o, const char *patch_id); - int kpatch_object_add_applied_patch(struct object_file *o, struct object_file *new); --struct object_file * kpatch_object_find_applied_patch(struct object_file *o, const char *patch_id); - - #endif /* ifndef __KPATCH_PROCESS__ */ -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index e0d533d..f3e35e6 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.07 - kpatch_object: combine funcitons with similar function -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.07 - time: add frozen time count for patch/unpatch - * Huawei Technologies Co., Ltd. - * -@@ -307,6 +310,7 @@ static int - object_apply_patch(struct object_file *o) - { - struct kpatch_file *kp; -+ struct object_file *applied_patch; - size_t sz, i; - int undef, ret; - -@@ -319,7 +323,9 @@ object_apply_patch(struct object_file *o) - return -1; - } - -- if (kpatch_object_check_duplicate_id(o, (const char *)o->kpfile.patch->id)) { -+ applied_patch = kpatch_object_get_applied_patch_by_id(o, -+ (const char *)o->kpfile.patch->id); -+ if (applied_patch) { - kplogerror("A patch with patch-id(%s) is already applied by %s", - o->kpfile.patch->id, o->name); - return -1; -@@ -540,7 +546,7 @@ object_find_applied_patch_info(struct object_file *o) - else - return -1; - -- applied_patch = kpatch_object_find_applied_patch(o, patch_id); -+ applied_patch = kpatch_object_get_applied_patch_by_id(o, patch_id); - if (!applied_patch) { - fprintf(stderr, "Failed to find target applied patch!\n"); - return -1; -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index 4734930..a6fcd51 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.07 - kpatch_object: combine funcitons with similar function -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.07 - process: add some checks before patching - * Huawei Technologies Co., Ltd. - * -@@ -1153,17 +1156,18 @@ kpatch_process_get_obj_by_regex(kpatch_process_t *proc, const char *regex) - return found; - } - --int --kpatch_object_check_duplicate_id(struct object_file *o, const char *patch_id) -+struct object_file * -+kpatch_object_get_applied_patch_by_id(struct object_file *o, -+ const char *patch_id) - { - struct obj_applied_patch *applied_patch; - - list_for_each_entry(applied_patch, &o->applied_patch, list) { - if (!strcmp(patch_id, applied_patch->patch_file->kpfile.patch->id)) -- return 1; -+ return applied_patch->patch_file; - } - -- return 0; -+ return NULL; - } - - int -@@ -1177,7 +1181,7 @@ kpatch_object_add_applied_patch(struct object_file *o, struct object_file *new) - return -1; - - patch_id = new->kpfile.patch->id; -- if (kpatch_object_check_duplicate_id(o, patch_id)) { -+ if (kpatch_object_get_applied_patch_by_id(o, patch_id)) { - free(patch); - return 0; - } -@@ -1188,18 +1192,3 @@ kpatch_object_add_applied_patch(struct object_file *o, struct object_file *new) - - return 0; - } -- --struct object_file * --kpatch_object_find_applied_patch(struct object_file *o, const char *patch_id) --{ -- struct obj_applied_patch *applied_patch; -- struct object_file *target = NULL; -- -- list_for_each_entry(applied_patch, &o->applied_patch, list) { -- target = applied_patch->patch_file; -- if (!strcmp(target->kpfile.patch->id, patch_id)) -- return target; -- } -- -- return NULL; --} --- -2.27.0 - diff --git a/0071-process_unpatch-adapt-return-value.patch b/0071-process_unpatch-adapt-return-value.patch deleted file mode 100644 index 7951517..0000000 --- a/0071-process_unpatch-adapt-return-value.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 75a44219e086e31f1c8b05368b0a0d30c31e3bef Mon Sep 17 00:00:00 2001 -From: Bihong Yu -Date: Sat, 27 Feb 2021 11:13:56 +0800 -Subject: [PATCH 071/118] process_unpatch: adapt return value - -return 0 if unpatch patch(es) successfully or no releative patch -deactive; return negative value if unpatch failed. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_patch.c | 18 +++++++++++++----- - 1 file changed, 13 insertions(+), 5 deletions(-) - -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index f3e35e6..b286eef 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.08 - process_unpatch: adapt return value -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.07 - kpatch_object: combine funcitons with similar function - * Huawei Technologies Co., Ltd. - * -@@ -623,7 +626,10 @@ object_unapply_patch(struct object_file *o, int check_flag) - o->kpta, - o->kpfile.size); - -- return ret; -+ if (ret < 0) -+ return ret; -+ -+ return 1; - } - - static int -@@ -716,13 +722,15 @@ out: - frozen_time = GET_MICROSECONDS(end_tv, start_tv); - kpinfo("PID '%d' process unpatch frozen_time is %ld microsecond\n", pid, frozen_time); - -- if (ret < 0) -+ if (ret < 0) { - printf("Failed to cancel patches for %d\n", pid); -- else if (ret == 0) -+ return ret; -+ } else if (ret == 0) { - printf("No patch(es) cancellable from PID '%d' were found\n", pid); -- else -+ } else { - printf("%d patch hunk(s) were successfully cancelled from PID '%d'\n", ret, pid); -+ } - -- return ret; -+ return 0; - } - --- -2.27.0 - diff --git a/0072-kpatch_elf-arch_elf-enhance-kpatch_elf-and-arch_elf-.patch b/0072-kpatch_elf-arch_elf-enhance-kpatch_elf-and-arch_elf-.patch deleted file mode 100644 index 7017d51..0000000 --- a/0072-kpatch_elf-arch_elf-enhance-kpatch_elf-and-arch_elf-.patch +++ /dev/null @@ -1,269 +0,0 @@ -From c1cf30cd1c1d6a03ad6e68d3811b6beeb9a68d5b Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Wed, 10 Mar 2021 14:52:36 +0800 -Subject: [PATCH 072/118] kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf - code - -1. it should be tell caller failure if symhdr could not found -2. do not do rude abort in ptrace, otherwise it could not deattach forever -3. fix unint codex warning - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/arch/aarch64/arch_elf.c | 22 ++++++++++++++++------ - src/arch/x86/arch_elf.c | 16 ++++++++++++++-- - src/kpatch_elf.c | 33 +++++++++++++++++++++++++-------- - src/kpatch_elf_objinfo.c | 7 +++++++ - src/kpatch_patch.c | 6 ++++++ - 5 files changed, 68 insertions(+), 16 deletions(-) - -diff --git a/src/arch/aarch64/arch_elf.c b/src/arch/aarch64/arch_elf.c -index 2a9b5dc..eccf0b6 100644 ---- a/src/arch/aarch64/arch_elf.c -+++ b/src/arch/aarch64/arch_elf.c -@@ -1,15 +1,18 @@ - /****************************************************************************** -+ * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.07 - aarch64/arch_elf: Add ldr and ldrb relocation for aarch64 -- * Huawei Technologies Co., Ltd. - 0.1.4-18 -+ * Huawei Technologies Co., Ltd. - * - * 2021.10.07 - aarch64/arch_elf: Add R_AARCH64_LDST32_ABS_LO12_NC relocation type for arm -- * Huawei Technologies Co., Ltd. - 0.1.4-16 -+ * Huawei Technologies Co., Ltd. - * - * 2021.09.23 - tls: add support for tls symbol -- * Huawei Technologies Co., Ltd. - 0.1.4-15 -+ * Huawei Technologies Co., Ltd. - * - * 2021.09.23 - arch/aarch64/arch_elf: Add LDR and B instruction relocation -- * Huawei Technologies Co., Ltd. - 0.1.4-13 -+ * Huawei Technologies Co., Ltd. - ******************************************************************************/ - - #include -@@ -167,7 +170,8 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) - { - struct kpatch_file *kp = o->kpfile.patch; - GElf_Ehdr *ehdr = (void *)kp + kp->kpatch_offset; -- GElf_Shdr *shdr = (void *)ehdr + ehdr->e_shoff, *symhdr; -+ GElf_Shdr *shdr = (void *)ehdr + ehdr->e_shoff; -+ GElf_Shdr *symhdr = NULL; - GElf_Rela *relocs = (void *)ehdr + relsec->sh_offset; - GElf_Shdr *tshdr = shdr + relsec->sh_info; - void *t = (void *)ehdr + shdr[relsec->sh_info].sh_offset; -@@ -180,6 +184,11 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) - symhdr = &shdr[i]; - } - -+ if (symhdr == NULL) { -+ kperr("symhdr is null, failed to do relocations.\n"); -+ return -1; -+ } -+ - scnname = secname(ehdr, shdr + relsec->sh_info); - kpdebug("applying relocations to '%s'\n", scnname); - is_kpatch_info = strcmp(scnname, ".kpatch.info") == 0; -@@ -190,10 +199,11 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) - unsigned long val; - void *loc, *loc2; - -- if (r->r_offset < 0 || r->r_offset >= tshdr->sh_size) -+ if (r->r_offset < 0 || r->r_offset >= tshdr->sh_size) { - kpfatalerror("Relocation offset for section '%s'" - " is at 0x%lx beyond the section size 0x%lx\n", - scnname, r->r_offset, tshdr->sh_size); -+ } - - /* Location in our address space */ - loc = t + r->r_offset; -diff --git a/src/arch/x86/arch_elf.c b/src/arch/x86/arch_elf.c -index 52de117..3e6f1ad 100644 ---- a/src/arch/x86/arch_elf.c -+++ b/src/arch/x86/arch_elf.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code -+ * Huawei Technologies Co., Ltd. -+ ******************************************************************************/ -+ - #include - #include - #include -@@ -19,8 +24,9 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) - { - struct kpatch_file *kp = o->kpfile.patch; - GElf_Ehdr *ehdr = (void *)kp + kp->kpatch_offset; -- GElf_Shdr *shdr = (void *)ehdr + ehdr->e_shoff, *symhdr; - GElf_Rela *relocs = (void *)ehdr + relsec->sh_offset; -+ GElf_Shdr *shdr = (void *)ehdr + ehdr->e_shoff; -+ GElf_Shdr *symhdr = NULL; - GElf_Shdr *tshdr = shdr + relsec->sh_info; - void *t = (void *)ehdr + shdr[relsec->sh_info].sh_offset; - void *tshdr2 = (void *)shdr[relsec->sh_info].sh_addr; -@@ -32,6 +38,11 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) - symhdr = &shdr[i]; - } - -+ if (symhdr == NULL) { -+ kperr("symhdr is null, failed to do relocations.\n"); -+ return -1; -+ } -+ - scnname = secname(ehdr, shdr + relsec->sh_info); - kpdebug("applying relocations to '%s'\n", scnname); - is_kpatch_info = strcmp(scnname, ".kpatch.info") == 0; -@@ -42,10 +53,11 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) - unsigned long val; - void *loc, *loc2; - -- if (r->r_offset < 0 || r->r_offset >= tshdr->sh_size) -+ if (r->r_offset < 0 || r->r_offset >= tshdr->sh_size) { - kpfatalerror("Relocation offset for section '%s'" - " is at 0x%lx beyond the section size 0x%lx\n", - scnname, r->r_offset, tshdr->sh_size); -+ } - - /* Location in our address space */ - loc = t + r->r_offset; -diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c -index d443001..219a5ef 100644 ---- a/src/kpatch_elf.c -+++ b/src/kpatch_elf.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code -+ * Huawei Technologies Co., Ltd. -+ ******************************************************************************/ -+ - #include - #include - #include -@@ -444,6 +449,10 @@ struct kpatch_jmp_table *kpatch_new_jmp_table(int entries) - size_t sz = sizeof(*jtbl) + entries * sizeof(struct kpatch_jmp_table_entry); - - jtbl = malloc(sz); -+ if (jtbl == NULL) { -+ kperr("Failed to malloc jump table !\n"); -+ return NULL; -+ } - memset(jtbl, 0, sz); - jtbl->size = sz; - jtbl->max_entry = entries; -@@ -520,13 +529,16 @@ sym_name_cmp(const void *a_, const void *b_, void *s_) - static int - elf_object_load_dynsym(struct object_file *o) - { -- int rv; -+ int rv = -1; -+ int ret = -1; - size_t i; - Elf64_Dyn *dynamics = NULL; - char *buffer = NULL; - Elf64_Phdr *phdr; -- unsigned long symtab_addr, strtab_addr; -- unsigned long symtab_sz, strtab_sz; -+ unsigned long symtab_addr = 0; -+ unsigned long strtab_addr = 0; -+ unsigned long symtab_sz = 0; -+ unsigned long strtab_sz = 0; - - if (o->dynsyms != NULL) - return 0; -@@ -578,11 +590,13 @@ elf_object_load_dynsym(struct object_file *o) - } - } - -+ /* Note strtab_addr, strtab_addr, strtab_sz should always have been assigned by curdyn */ - symtab_sz = (strtab_addr - symtab_addr); - - buffer = malloc(strtab_sz + symtab_sz); -- if (buffer == NULL) -+ if (buffer == NULL) { - goto out_free; -+ } - - rv = kpatch_process_mem_read(o->proc, - symtab_addr, -@@ -594,7 +608,9 @@ elf_object_load_dynsym(struct object_file *o) - o->dynsyms = (Elf64_Sym*) buffer; - o->ndynsyms = symtab_sz / sizeof(Elf64_Sym); - o->dynsymnames = malloc(sizeof(char *) * o->ndynsyms); -- -+ if (o->dynsymnames == NULL) { -+ goto out_free; -+ } - qsort_r((void *)o->dynsyms, o->ndynsyms, sizeof(Elf64_Sym), - sym_name_cmp, buffer + symtab_sz); - -@@ -604,14 +620,15 @@ elf_object_load_dynsym(struct object_file *o) - o->dynsymnames[i] = buffer + symtab_sz + o->dynsyms[i].st_name; - } - o->ndynsyms = i; -- -+ ret = 0; - - out_free: -- if (rv < 0) -+ if (rv < 0) { - free(buffer); -+ } - free(dynamics); - -- return rv; -+ return ret; - } - - /* TODO reuse kpatch_cc */ -diff --git a/src/kpatch_elf_objinfo.c b/src/kpatch_elf_objinfo.c -index c967c37..cadde4c 100644 ---- a/src/kpatch_elf_objinfo.c -+++ b/src/kpatch_elf_objinfo.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code -+ * Huawei Technologies Co., Ltd. -+ ******************************************************************************/ -+ - - #include - #include -@@ -49,6 +54,8 @@ int kpatch_objinfo_load(kpatch_objinfo *oi) - GElf_Shdr shdr; - Elf_Scn *scn = NULL; - -+ memset(&shdr, 0, sizeof(GElf_Shdr)); -+ - scn = kpatch_objinfo_getshdr(oi, i, &shdr); - if (scn == NULL) - return -1; -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index b286eef..8465162 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - process_unpatch: adapt return value - * Huawei Technologies Co., Ltd. - * -@@ -344,6 +347,9 @@ object_apply_patch(struct object_file *o) - undef = kpatch_count_undefined(o); - if (undef) { - o->jmp_table = kpatch_new_jmp_table(undef); -+ if (o->jmp_table == NULL) { -+ return -1; -+ } - kp->jmp_offset = sz; - kpinfo("Jump table %d bytes for %d syms at offset 0x%x\n", - o->jmp_table->size, undef, kp->jmp_offset); --- -2.27.0 - diff --git a/0073-tls-prctl-remove-deprecated-code-for-tls-and-prctl.patch b/0073-tls-prctl-remove-deprecated-code-for-tls-and-prctl.patch deleted file mode 100644 index 95bbe46..0000000 --- a/0073-tls-prctl-remove-deprecated-code-for-tls-and-prctl.patch +++ /dev/null @@ -1,300 +0,0 @@ -From ea83bc4e3406c650aa45b3e3484c3e3cbb8efad9 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Thu, 11 Mar 2021 16:00:53 +0800 -Subject: [PATCH 073/118] tls/prctl: remove deprecated code for tls and prctl - -1. for now, we just suppport IE model for thread local storage -2. we do not use get_ptr_guard to obtain coro for ARM64 - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/arch/aarch64/arch_ptrace.c | 54 +-------- - src/kpatch_strip.c | 194 +-------------------------------- - 2 files changed, 8 insertions(+), 240 deletions(-) - -diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c -index 9f87d10..70ef683 100644 ---- a/src/arch/aarch64/arch_ptrace.c -+++ b/src/arch/aarch64/arch_ptrace.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.10.08 - remove deprecated code -+ * Huawei Technologies Co., Ltd. -+ ******************************************************************************/ -+ - #include - #include - #include -@@ -208,55 +213,6 @@ int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, - return ret; - } - --int kpatch_arch_prctl_remote(struct kpatch_ptrace_ctx *pctx, int code, unsigned long *addr) --{ -- struct user_regs_struct regs; -- struct iovec regs_iov; -- regs_iov.iov_base = ®s; -- regs_iov.iov_len = sizeof(regs); -- -- unsigned long res, sp; -- int ret; -- -- kpdebug("arch_prctl_remote: %d, %p\n", code, addr); -- ret = ptrace(PTRACE_GETREGSET, pctx->pid, (void*)NT_PRSTATUS, (void*)®s_iov); -- if (ret < 0) { -- kpdebug("FAIL. Can't get regs - %s\n", strerror(errno)); -- return -1; -- } -- ret = kpatch_process_mem_read(pctx->proc, -- regs.sp, -- &sp, -- sizeof(sp)); -- if (ret < 0) { -- kplogerror("can't peek original stack data\n"); -- return -1; -- } -- //ret = kpatch_arch_syscall_remote(pctx, __NR_arch_prctl, code, regs.sp, 0, 0, 0, 0, &res); -- if (ret < 0) -- goto poke; -- if (ret == 0 && res >= (unsigned long)-MAX_ERRNO) { -- errno = -(long)res; -- ret = -1; -- goto poke; -- } -- ret = kpatch_process_mem_read(pctx->proc, -- regs.sp, -- &res, -- sizeof(res)); -- if (ret < 0) -- kplogerror("can't peek new stack data\n"); -- --poke: -- if (kpatch_process_mem_write(pctx->proc, -- &sp, -- regs.sp, -- sizeof(sp))) -- kplogerror("can't poke orig stack data\n"); -- *addr = res; -- return ret; --} -- - int kpatch_arch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, - unsigned long *addr) - { -diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c -index bfc95a8..f32dddd 100644 ---- a/src/kpatch_strip.c -+++ b/src/kpatch_strip.c -@@ -1,6 +1,8 @@ - /****************************************************************************** -+ * 2021.10.08 - remove deprecated code -+ * Huawei Technologies Co., Ltd. - * 2021.09.23 - tls: add support for tls symbol -- * Huawei Technologies Co., Ltd. - 0.1.4-15 -+ * Huawei Technologies Co., Ltd. - ******************************************************************************/ - - #include -@@ -276,196 +278,6 @@ kpatch_get_local_symbol_loc(kpatch_objinfo *oi, - return SECTION_OFFSET_FOUND; - } - --/* Find Global Offset Table entry with the address of the TLS-variable -- * specified by the `tls_offset`. Dynamic linker allocates Thread-Local storage -- * as described in ABI and places the correct offset at that address in GOT. We -- * then read this offset and use it in our jmp table. -- */ --static unsigned long --objinfo_find_tls_got_by_offset(kpatch_objinfo *oi, -- unsigned long tls_offset) --{ -- Elf64_Rela *rela; -- size_t nrela; -- -- if (kpatch_objinfo_load_tls_reladyn(oi) < 0) -- kpfatalerror("kpatch_objinfo_load_tls_reladyn"); -- -- rela = oi->tlsreladyn; -- nrela = oi->ntlsreladyn; -- -- for (; nrela != 0; rela++, nrela--) { -- if (!kpatch_is_tls_rela(rela)) -- continue; -- -- if (ELF64_R_SYM(rela->r_info) == 0 && -- rela->r_addend == tls_offset) -- return rela->r_offset; -- } -- -- kpfatalerror("cannot find GOT entry for %lx\n", tls_offset); -- return 0; --} -- --static unsigned long --objinfo_find_tls_got_by_symname(kpatch_objinfo *oi, -- const char *symname) --{ -- Elf64_Rela *rela; -- size_t nrela; -- Elf64_Sym sym; -- -- if (kpatch_objinfo_load_tls_reladyn(oi) < 0) -- kpfatalerror("kpatch_objinfo_load_tls_reladyn"); -- -- rela = oi->tlsreladyn; -- nrela = oi->ntlsreladyn; -- -- for (; nrela != 0; rela++, nrela--) { -- const char *origname; -- -- if (!kpatch_is_tls_rela(rela)) -- continue; -- -- if (ELF64_R_SYM(rela->r_info) == 0 || -- rela->r_addend != 0) -- continue; -- -- if (!gelf_getsym(oi->dynsymtab, ELF64_R_SYM(rela->r_info), &sym)) -- kpfatalerror("gelf_getsym"); -- -- origname = kpatch_objinfo_strptr(oi, DYNAMIC_NAME, -- sym.st_name); -- -- if (strcmp(origname, symname) == 0 && -- rela->r_addend == 0) -- return rela->r_offset; -- } -- -- kpfatalerror("cannot find GOT entry for %s\n", symname); -- return 0; --} -- --static inline int --update_reloc_with_tls_got_entry(kpatch_objinfo *origbin, -- kpatch_objinfo *patch, -- GElf_Rela *rela, -- GElf_Sym *sym) --{ -- unsigned long got_offset; -- char *symname, *tmp; -- -- symname = (char *)kpatch_objinfo_strptr(patch, -- SYMBOL_NAME, sym->st_name); -- -- tmp = strchr(symname, '@'); -- if (tmp != NULL) -- *tmp = '\0'; -- -- if (GELF_ST_BIND(sym->st_info) == STB_LOCAL || -- sym->st_shndx != SHN_UNDEF) { -- /* This symbol should have a TPOFF64 entry in the GOT with -- * the offset of sym->st_value. Find GOT entry for this TLS -- * variable. Make st_value point to that GOT entry and mark it -- * with flag. -- */ -- -- got_offset = objinfo_find_tls_got_by_offset(origbin, -- sym->st_value); -- } else if (GELF_ST_BIND(sym->st_info) == STB_GLOBAL && -- sym->st_shndx == SHN_UNDEF) { -- /* This is a GLOBAL symbol we require from some other binary. -- * It has a GOT entry that is referenced by the symbol name, -- * not the offset. -- */ -- -- got_offset = objinfo_find_tls_got_by_symname(origbin, symname); -- } -- -- if (rela->r_addend != got_offset) { -- kpinfo("Changing GOTTPOFF symbol %s from %lx to %lx\n", -- symname, rela->r_addend, got_offset); -- rela->r_addend = got_offset; -- } -- return 0; --} -- --/* Update relocation against TLS symbol. -- * -- * Thread-Local Storage variables require special care because they are -- * referenced by the offset into Thread Local Storage allocated for each -- * thread. There are different models for TLS and we only support Initial-Exec. -- * -- * The following types of relocations are handled: -- * -- * - Relocs of type TPOFF32 targeting symbols in the original are changed -- * to reloc type NONE after the symbol is checked to be present at the -- * same place in the original binary. (TODO) -- * -- * *NOTE* the only way to support new variables allocated by patch is to use -- * dlopen-loaded patches. -- * - Relocs of type TPOFF64 are ignored. These are only used for long memory -- * model or as entries to GOT. -- * - Relocs of type GOTTPOFF are quite tricky. These usually point to a GOT -- * entry filled with TPOFF64 relocation. We can't do this relocation on our -- * own because it requires digging into glibc internels with a hack. -- * -- * Instead, we cheat here and find the appropriate TPOFF64 relocations IN -- * THE ORIGINAL object and make GOTTPOFF point there. This is different for -- * local/global symbols but is not very hard. -- * -- * Returns 1 when symbol must be updated, 0 when everything is OK, -1 on error. -- */ --static inline int --kpatch_fixup_rela_update_tls(kpatch_objinfo *origbin, -- kpatch_objinfo *patch, -- GElf_Rela *rela, -- GElf_Sym *sym) --{ -- switch (GELF_R_TYPE(rela->r_info)) { -- case R_X86_64_TPOFF32: { -- const char *symname; -- int rv; -- unsigned long off; -- /* Leave the value as is, just check offset is the same. */ -- rela->r_info = GELF_R_INFO(0, R_X86_64_NONE); -- symname = kpatch_objinfo_strptr(patch, SYMBOL_NAME, -- sym->st_name); -- -- rv = kpatch_get_original_symbol_loc( -- origbin, symname, &off, NULL); -- if (rv == SECTION_NOT_FOUND) { -- kpfatalerror( -- "TLS symbol %s not found in original binary", -- symname); -- } -- -- if (off != sym->st_value) { -- kpfatalerror( -- "TLS symbol %s has different offset: %lx in origbinal binary, %lx in patch\n", -- symname, off, sym->st_value); -- } -- -- return 0; -- } -- -- case R_X86_64_GOTTPOFF: -- return update_reloc_with_tls_got_entry(origbin, patch, rela, sym); -- -- case R_X86_64_DTPOFF32: -- case R_X86_64_DTPOFF64: -- case R_X86_64_DTPMOD64: -- case R_X86_64_TLSGD: -- case R_X86_64_TLSLD: -- case R_X86_64_TPOFF64: -- default: -- kpfatalerror("non-supported TLS model\n"); -- return -1; -- } -- -- return 0; --} -- - /* Redos one relocation with addend against symbol into relocation against - * section. - * --- -2.27.0 - diff --git a/0074-kpatch_parse-fix-possible-Null-pointer-dereferences.patch b/0074-kpatch_parse-fix-possible-Null-pointer-dereferences.patch deleted file mode 100644 index 3ef78b5..0000000 --- a/0074-kpatch_parse-fix-possible-Null-pointer-dereferences.patch +++ /dev/null @@ -1,93 +0,0 @@ -From e8445c1e2cc185564ae76e01262813d2fab96c3c Mon Sep 17 00:00:00 2001 -From: Jin Yan -Date: Fri, 12 Mar 2021 16:45:12 +0800 -Subject: [PATCH 074/118] kpatch_parse: fix possible Null pointer dereferences - -Signed-off-by: Jin Yan -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_parse.c | 27 +++++++++++++++++++++++++++ - 1 file changed, 27 insertions(+) - -diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c -index 3df658d..2bf755e 100644 ---- a/src/kpatch_parse.c -+++ b/src/kpatch_parse.c -@@ -1,3 +1,8 @@ -+/******************************************************************************* -+ * 2021.10.08 - kpatch_parse: fix possible Null pointer dereferences -+ * Huawei Technologies Co., Ltd. -+*******************************************************************************/ -+ - #include - - #include "include/kpatch_log.h" -@@ -141,6 +146,10 @@ void init_ctypes(struct kp_file *f) - int i; - - f->ctype = malloc(f->nr_lines * sizeof(f->ctype[0])); -+ if (!f->ctype) { -+ kpfatal("Failed to allocate ctype for kp_file\n"); -+ } -+ - for (i = 0; i < f->nr_lines; i++) { - f->ctype[i] = parse_ctype(cline(f, i), true); - } -@@ -204,6 +213,9 @@ static void cblock_make_human_name(kpstr_t *hnm, kpstr_t *nm) - struct cblock * cblock_add(struct kp_file *f, int s, int e, kpstr_t *nm, int type, int globl) - { - struct cblock *blk = malloc(sizeof(*blk)); -+ if (!blk) { -+ kpfatal("Failed to allocate cblock\n"); -+ } - - if (nm->l && cblock_find_by_name(f, nm)) - kpfatal("duplicate cblock name '%.*s'", nm->l, nm->s); -@@ -365,6 +377,9 @@ static void init_attr_block(struct kp_file *f, int *i) - void cblock_split(struct cblock *b, int len) - { - struct cblock *blk = malloc(sizeof(*blk)); -+ if (!blk) { -+ kpfatal("Failed to allocate cblock when splitting it\n"); -+ } - - memset(blk, 0, sizeof(*blk)); - blk->start = b->start + len; -@@ -509,6 +524,10 @@ struct section_desc *find_section(char *name) - static struct section_desc *dup_section(struct section_desc *sect) - { - struct section_desc *s = malloc(sizeof(*s)); -+ if (!s) { -+ kpfatal("Failed to allocate duplicate section\n"); -+ } -+ - *s = *sect; - s->prev = NULL; - memset(&s->rbnm, 0, sizeof(s->rbnm)); -@@ -559,6 +578,10 @@ static struct section_desc *__parse_section(char *s) - } - - sect = malloc(sizeof(*sect)); -+ if (!sect) { -+ kpfatal("Failed to allocate section\n"); -+ } -+ - memset(sect, 0, sizeof(*sect)); - sect->name = sname; - -@@ -612,6 +635,10 @@ void init_sections(struct kp_file *f) - rb_insert_node(§ions_rbroot_byname, &predefined_sections[i].rbnm, section_name_cmp, (unsigned long)predefined_sections[i].name); - - f->section = malloc(f->nr_lines * sizeof(void *)); -+ if (!f->section) { -+ kpfatal("Failed to allocate section for kp_file\n"); -+ } -+ - f->section[0] = find_section(".text"); /* code can start w/o sectiong directive */ - for (i = 1; i < f->nr_lines; i++) { - sect = parse_section(f, i); --- -2.27.0 - diff --git a/0075-gensrc-cc-elf-optimize-libcare-code-to-make-checker-.patch b/0075-gensrc-cc-elf-optimize-libcare-code-to-make-checker-.patch deleted file mode 100644 index 28bfd52..0000000 --- a/0075-gensrc-cc-elf-optimize-libcare-code-to-make-checker-.patch +++ /dev/null @@ -1,489 +0,0 @@ -From 2ce1f513affaa705d781275d8923bc165454e258 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Thu, 11 Mar 2021 22:53:14 +0800 -Subject: [PATCH 075/118] gensrc/cc/elf: optimize libcare code to make checker - happy - -i. Checker warning happens for these files, optimize it; -ii. Change filter function to make it simplier; - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/arch/aarch64/arch_parse.c | 9 +++++++-- - src/arch/aarch64/arch_ptrace.c | 12 +++++++---- - src/arch/x86/arch_parse.c | 7 +++++++ - src/arch/x86/arch_ptrace.c | 13 +++++++++--- - src/kpatch_cc.c | 33 +++++++++++++++--------------- - src/kpatch_elf.c | 11 +++++++++- - src/kpatch_gensrc.c | 37 +++++++++++++++++++++++++++------- - src/kpatch_parse.c | 7 +++++-- - 8 files changed, 94 insertions(+), 35 deletions(-) - -diff --git a/src/arch/aarch64/arch_parse.c b/src/arch/aarch64/arch_parse.c -index 84caf82..f91ef0c 100644 ---- a/src/arch/aarch64/arch_parse.c -+++ b/src/arch/aarch64/arch_parse.c -@@ -1,9 +1,12 @@ - /****************************************************************************** -+ * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.09.23 - arch/aarch64/arch_parse: improve VAR_CBLOCK start indentify -- * Huawei Technologies Co., Ltd. - 0.1.4-14 -+ * Huawei Technologies Co., Ltd. - * - * 2021.09.23 - arch/aarch64/arch_parse: modify is_variable_start function for gensrc in arm -- * Huawei Technologies Co., Ltd. - 0.1.4-10 -+ * Huawei Technologies Co., Ltd. - ******************************************************************************/ - - #include -@@ -19,6 +22,7 @@ int is_function_start(struct kp_file *f, int l, kpstr_t *nm) - int l0 = l, func = 0; - - kpstrset(nm, "", 0); -+ kpstrset(&attr, "", 0); - for (; l < f->nr_lines; l++) { - if (l != l0 && cline(f, l)[0] == '\0') - continue; -@@ -116,6 +120,7 @@ int is_variable_start(struct kp_file *f, int l, int *e, int *pglobl, kpstr_t *nm - nm2.s = NULL; - - kpstrset(nm, "", 0); -+ kpstrset(&attr, "", 0); - for ( ; cline(f, l); l++) { - - /* first verify that all the commands we met has the same symbol name... just to be safe! */ -diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c -index 70ef683..d4f6991 100644 ---- a/src/arch/aarch64/arch_ptrace.c -+++ b/src/arch/aarch64/arch_ptrace.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - remove deprecated code - * Huawei Technologies Co., Ltd. - ******************************************************************************/ -@@ -37,7 +40,8 @@ - int - kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) - { -- int ret, pid = 0; -+ int ret = 0; -+ int pid = 0; - struct kpatch_ptrace_ctx *pctx, *ptmp, *execve_pctx = NULL; - long rv; - -@@ -61,7 +65,7 @@ kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) - /* Send a message to our `execve` wrapper so it will continue - * execution - */ -- ret = send(proc->send_fd, &ret, sizeof(ret), 0); -+ ret = send(proc->send_fd, &ret, sizeof(int), 0); - if (ret < 0) { - kplogerror("send failed\n"); - return ret; -@@ -190,7 +194,6 @@ int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, - unsigned long *res) - { - struct user_regs_struct regs; -- - unsigned char syscall[] = { - 0x01, 0x00, 0x00, 0xd4, //0xd4000001 svc #0 = syscall - 0xa0, 0x00, 0x20, 0xd4, //0xd42000a0 brk #5 = int3 -@@ -217,13 +220,14 @@ int kpatch_arch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, - unsigned long *addr) - { - struct user_regs_struct regs; -- - unsigned char callrax[] = { - 0x00, 0x01, 0x3f, 0xd6, // blr x8 - 0xa0, 0x00, 0x20, 0xd4, // brk #5 - }; - int ret; -+ - kpdebug("Executing callrax %lx (pid %d)\n", *addr, pctx->pid); -+ memset(®s, 0, sizeof(struct user_regs_struct)); - regs.regs[8] = *addr; - - ret = kpatch_execute_remote(pctx, callrax, sizeof(callrax), ®s); -diff --git a/src/arch/x86/arch_parse.c b/src/arch/x86/arch_parse.c -index c51c49b..15cf9fe 100644 ---- a/src/arch/x86/arch_parse.c -+++ b/src/arch/x86/arch_parse.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code -+ * Huawei Technologies Co., Ltd. -+ ******************************************************************************/ -+ - #include - - #include "include/kpatch_log.h" -@@ -11,6 +16,7 @@ int is_function_start(struct kp_file *f, int l, kpstr_t *nm) - int l0 = l, func = 0; - - kpstrset(nm, "", 0); -+ kpstrset(&attr, "", 0); - for (; l < f->nr_lines; l++) { - if (l != l0 && cline(f, l)[0] == '\0') - continue; -@@ -77,6 +83,7 @@ int is_variable_start(struct kp_file *f, int l, int *e, int *pglobl, kpstr_t *nm - kpstr_t nm2, attr; - - kpstrset(nm, "", 0); -+ kpstrset(&attr, "", 0); - for ( ; cline(f, l); l++) { - - /* first verify that all the commands we met has the same symbol name... just to be safe! */ -diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c -index ef0f460..e9d4530 100644 ---- a/src/arch/x86/arch_ptrace.c -+++ b/src/arch/x86/arch_ptrace.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code -+ * Huawei Technologies Co., Ltd. -+ ******************************************************************************/ -+ - #include - #include - #include -@@ -32,7 +37,8 @@ - int - kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) - { -- int ret, pid = 0; -+ int ret = 0; -+ int pid = 0; - struct kpatch_ptrace_ctx *pctx, *ptmp, *execve_pctx = NULL; - long rv; - -@@ -56,7 +62,7 @@ kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) - /* Send a message to our `execve` wrapper so it will continue - * execution - */ -- ret = send(proc->send_fd, &ret, sizeof(ret), 0); -+ ret = send(proc->send_fd, &ret, sizeof(int), 0); - if (ret < 0) { - kplogerror("send failed\n"); - return ret; -@@ -192,6 +198,7 @@ int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, - }; - int ret; - -+ memset(®s, 0, sizeof(struct user_regs_struct)); - kpdebug("Executing syscall %d (pid %d)...\n", nr, pctx->pid); - regs.rax = (unsigned long)nr; - regs.rdi = arg1; -@@ -257,7 +264,6 @@ int kpatch_arch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, - unsigned long *addr) - { - struct user_regs_struct regs; -- - unsigned char callrax[] = { - 0xff, 0xd0, /* call *%rax */ - 0xcc, /* int3 */ -@@ -265,6 +271,7 @@ int kpatch_arch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, - int ret; - - kpdebug("Executing callrax %lx (pid %d)\n", *addr, pctx->pid); -+ memset(®s, 0, sizeof(struct user_regs_struct)); - regs.rax = *addr; - - ret = kpatch_execute_remote(pctx, callrax, sizeof(callrax), ®s); -diff --git a/src/kpatch_cc.c b/src/kpatch_cc.c -index 312c9e5..672038f 100644 ---- a/src/kpatch_cc.c -+++ b/src/kpatch_cc.c -@@ -1,3 +1,7 @@ -+/****************************************************************************** -+ * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code -+ * Huawei Technologies Co., Ltd. -+******************************************************************************/ - - #include - #include -@@ -247,7 +251,6 @@ static void init(int argc_, const char **argv_) - char *args; - int ninput = 0, i; - const char *realgccenv = "KPCCREAL"; -- static char pathbuf[PATH_MAX]; - - prog_name = argv_[0]; - -@@ -261,17 +264,7 @@ static void init(int argc_, const char **argv_) - - kpatch_path = getenv("KPATCH_PATH"); - if (kpatch_path == NULL) { -- strcpy(pathbuf, argv_[0]); -- dirname(pathbuf); -- strcat(pathbuf, "/kpatch_gensrc"); -- if (access(pathbuf, X_OK) != 0) { -- kpccfatal("can't find kpatch_gensrc at %s, define KPATCH_PATH\n", -- pathbuf); -- } -- -- dirname(pathbuf); -- -- kpatch_path = pathbuf; -+ kpccfatal("KPATCH_PATH is undefined\n"); - } - - kpatch_stage = getenv("KPATCH_STAGE"); -@@ -309,7 +302,7 @@ static void init(int argc_, const char **argv_) - if (args != NULL) { - nremove_args = split_args(remove_args, args); - -- qsort(remove_args, nremove_args, sizeof(*remove_args), -+ qsort(remove_args, nremove_args, sizeof(char *), - (int (*)(const void *, const void *))strcmp); - } - -@@ -440,6 +433,11 @@ static void init(int argc_, const char **argv_) - if ((action == COMPILE_SINGLE || action == GENERATE_ASSEMBLY_SINGLE) - && output_file == NULL && input[idxinput_file] != stdin_path) { - char *ofile = (char *)basename((char *)argv[idxinput_file]); -+ -+ if (ofile == NULL) { -+ fprintf(stderr, "ofile is null!\n"); -+ exit(EXIT_FAILURE); -+ } - ofile = strdup(ofile); - CHECK_ALLOC(ofile); - -@@ -545,6 +543,7 @@ static void fini(void) - - if (argv_allocated) { - free(argv); -+ argv = NULL; - argv_allocated = 1; - } - -@@ -573,7 +572,7 @@ static int modify_args(void) - continue; - - found = bsearch(argv[i], remove_args, nremove_args, -- sizeof (*remove_args), -+ sizeof (char *), - bsearch_strcmp); - - if (found != NULL) -@@ -916,8 +915,10 @@ passthrough_file: - - out: - for (j = 1; j < i; j++) { -- if (input_files[j]) -+ if (input_files[j]) { - free((void *)input_files[j]); -+ input_files[j] = NULL; -+ } - } - - return rv; -@@ -1092,7 +1093,7 @@ static int get_assembler_filename(char *aspath, const char *srcorobjpath) - rv = snprintf(aspath, PATH_MAX, "%s%s/%s%s.%s.s", - kpatch_asm_dir ?: "", - dname, kpatch_prefix, bname, kpatch_stage); -- if (rv == PATH_MAX) -+ if (rv >= PATH_MAX) - kpccfatal("%s: buffer overflow\n", __func__); - - if (kpatch_asm_dir != NULL) { -diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c -index 219a5ef..8447356 100644 ---- a/src/kpatch_elf.c -+++ b/src/kpatch_elf.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code - * Huawei Technologies Co., Ltd. - ******************************************************************************/ -@@ -776,7 +779,9 @@ int kpatch_resolve(struct object_file *o) - GElf_Ehdr *ehdr; - GElf_Shdr *shdr; - GElf_Sym *sym; -- int i, symidx, rv; -+ int i; -+ int rv; -+ int symidx = -1; - char *strsym; - - ehdr = (void *)o->kpfile.patch + o->kpfile.patch->kpatch_offset; -@@ -807,6 +812,10 @@ int kpatch_resolve(struct object_file *o) - kpdebug("section '%s' = 0x%lx\n", secname(ehdr, s), s->sh_addr); - } - -+ if (symidx == -1) { -+ kperr("Unexpected symidx!\n"); -+ return -1; -+ } - kpdebug("Resolving symbols for '%s'\n", o->name); - sym = (void *)ehdr + shdr[symidx].sh_offset; - strsym = (void *)ehdr + shdr[shdr[symidx].sh_link].sh_offset; -diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c -index 36ff24f..35e067e 100644 ---- a/src/kpatch_gensrc.c -+++ b/src/kpatch_gensrc.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.09.23 - kpatch_gensrc.c: support ignoring functions which we don't need - * Huawei Technologies Co., Ltd. - ******************************************************************************/ -@@ -43,7 +46,7 @@ static int nr_must_adapt_syms; - static int force_gotpcrel; - static int force_global; - --static char* patch_func_file_name = "/etc/libcare/patch_func_names.conf"; -+static char* patch_func_file_name = "/etc/libcare.conf"; - - static int is_func_in_patch_func_file(FILE *fp, kpstr_t *sym) - { -@@ -64,7 +67,9 @@ static int is_func_in_patch_func_file(FILE *fp, kpstr_t *sym) - return 0; - } - --static inline int in_syms_list(char *filename, kpstr_t *sym, const struct sym_desc *sym_arr, int nr_syms, int cblock_type) -+static inline int in_syms_list(const char *filename, kpstr_t *sym, -+ const struct sym_desc *sym_arr, -+ int nr_syms, int cblock_type) - { - int i, len, rv; - -@@ -145,11 +150,15 @@ void rename_add(struct kp_file *f, kpstr_t *src, kpstr_t *dst) - - if ((r2 = rename_find(f, src))) { - if (kpstrcmp(&r2->dst, dst)) -- kpfatal("Rename conflict %.*s -> %.*s and -> %.*s\n", src->l, src->s, r2->dst.l, r2->dst.s, dst->l, dst->s); -+ kpfatal("Rename conflict %.*s -> %.*s and -> %.*s\n", -+ src->l, src->s, r2->dst.l, r2->dst.s, dst->l, dst->s); - return; - } - - r = malloc(sizeof(*r)); -+ if (r == NULL) { -+ kpfatal("Failed to malloc rbtree!\n"); -+ } - r->src = *src; - r->dst = *dst; - rb_insert_node(&f->renames, &r->rb, rename_cmp, (unsigned long)src); -@@ -395,6 +404,10 @@ static void change_section(struct kp_file *fout, struct section_desc *sect, int - { - char *s; - -+ if (sect == NULL) { -+ kpfatal("Section description is NULL!\n"); -+ } -+ - if (sect->outname) - s = sect->outname; - else if (sect->type & SECTION_EXECUTABLE) -@@ -492,7 +505,8 @@ static inline int get_mov_const_reg(const char *s, char *regname) - static int get_possible_lineno_funcs(const char *s0, const char *s1) - { - int i, try = 0; -- char regname0[32], regname1[32]; -+ char regname0[32] = {0}; -+ char regname1[32] = {0}; - - if (ARRAY_SIZE(lineno_functions) > sizeof(try) * 8) - kpfatal("get_possible_lineno_funcs return value overflow"); -@@ -622,7 +636,7 @@ static int match_build_path(struct cblock *b0, int *p0, struct cblock *b1, int * - } - - /* this is a minor improvement to avoid function patching just because of code line numbers are screwed, but real function hasn't changed */ --static int match_var_descriptor(struct cblock *b0, int *p0, struct cblock *b1, int *p1) -+static int match_var_descriptor(struct cblock *b0, int *p0, struct cblock *b1, const int *p1) - { - char *s0, *s1; - kpstr_t t0, t1; -@@ -677,7 +691,7 @@ static int match_var_datetime(struct cblock *b0, int *p0, struct cblock *b1, int - } - - /* this is a minor improvement to avoid function patching just because of code line numbers are screwed, but real function hasn't changed */ --static int match_bug_on(struct cblock *b0, int *p0, struct cblock *b1, int *p1) -+static int match_bug_on(struct cblock *b0, int *p0, struct cblock *b1, const int *p1) - { - char *s0, *s1; - kpstr_t t00, t01, t10, t11, t20, t21, t30, t31, t40, t41, t50, t51, t60, t61; -@@ -715,6 +729,9 @@ static int match_bug_on(struct cblock *b0, int *p0, struct cblock *b1, int *p1) - * .popsection - */ - s0 = cline(b0->f, *p0); s1 = cline(b1->f, *p1); -+ if (csect(b0->f, *p0) == NULL || csect(b1->f, *p1) == NULL) { -+ kpfatal("Could not find vaild section!\n"); -+ } - if (strcmp(csect(b0->f, *p0)->name, "__bug_table") || strcmp(csect(b1->f, *p1)->name, "__bug_table")) - return 0; - if (!strncmp(s0, "2:\t.long 1b - 2b, ", 18) && !strncmp(s1, "2:\t.long 1b - 2b, ", 18)) -@@ -916,6 +933,9 @@ static void __name_add_kpatch_suffix(struct kp_file *f, kpstr_t *t, kpstr_t *bas - /* rename name to name.kpatch */ - tnew.l = basename->l + strlen(suffix) + 1; - tnew.s = malloc(tnew.l); -+ if (tnew.s == NULL) { -+ kpfatal("Failed to alloc tnew!\n"); -+ } - snprintf(tnew.s, tnew.l, "%.*s%s", basename->l, basename->s, suffix); - rename_add(f, t, &tnew); - kplog(LOG_DEBUG, "RENAME[%d]: %.*s -> %.*s\n", f->id, t->l, t->s, tnew.l, tnew.s); -@@ -1597,6 +1617,8 @@ int main(int argc, char **argv) - int err, ch, k = 0, dbgfilter = 0, dbgfilter_options = 0; - struct kp_file infile[2], outfile; - -+ memset(&outfile, 0, sizeof(struct kp_file)); -+ outfile.f = NULL; - while ((ch = getopt_long(argc, argv, "d:O:i:o:a:f", long_opts, 0)) != -1) { - switch (ch) { - case 'd': -@@ -1656,8 +1678,9 @@ int main(int argc, char **argv) - usage(); - } - } -- if (optind != argc) -+ if (optind != argc || outfile.f == NULL) { - usage(); -+ } - - if (dbgfilter) { - if (k < 1) -diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c -index 2bf755e..2f6fd7a 100644 ---- a/src/kpatch_parse.c -+++ b/src/kpatch_parse.c -@@ -1,4 +1,7 @@ - /******************************************************************************* -+ * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - kpatch_parse: fix possible Null pointer dereferences - * Huawei Technologies Co., Ltd. - *******************************************************************************/ -@@ -547,12 +550,12 @@ struct section_desc *csect(struct kp_file *f, int l) - - int is_data_sect(struct section_desc *sect) - { -- return !(sect->type & SECTION_EXECUTABLE); -+ return (sect == NULL) ? 1 : !(sect->type & SECTION_EXECUTABLE); - } - - int is_code_sect(struct section_desc *sect) - { -- return (sect->type & SECTION_EXECUTABLE); -+ return (sect == NULL) ? 0 : (sect->type & SECTION_EXECUTABLE); - } - - static struct section_desc *__parse_section(char *s) --- -2.27.0 - diff --git a/0076-kpatch_parse-fix-wrong-return-in-is_data_sect.patch b/0076-kpatch_parse-fix-wrong-return-in-is_data_sect.patch deleted file mode 100644 index 3d2eed2..0000000 --- a/0076-kpatch_parse-fix-wrong-return-in-is_data_sect.patch +++ /dev/null @@ -1,39 +0,0 @@ -From a7819ceb9ff090411e47bd15afdc860bf5b3cc48 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Mon, 15 Mar 2021 09:21:55 +0800 -Subject: [PATCH 076/118] kpatch_parse: fix wrong return in is_data_sect - -It should return false/0 when the sect is NULL, Fix it. - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_parse.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c -index 2f6fd7a..8208642 100644 ---- a/src/kpatch_parse.c -+++ b/src/kpatch_parse.c -@@ -1,4 +1,7 @@ - /******************************************************************************* -+ * 2021.10.08 - kpatch_parse: fix wrong return in is_data_sec() -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code - * Huawei Technologies Co., Ltd. - * -@@ -550,7 +553,7 @@ struct section_desc *csect(struct kp_file *f, int l) - - int is_data_sect(struct section_desc *sect) - { -- return (sect == NULL) ? 1 : !(sect->type & SECTION_EXECUTABLE); -+ return (sect == NULL) ? 0 : !(sect->type & SECTION_EXECUTABLE); - } - - int is_code_sect(struct section_desc *sect) --- -2.27.0 - diff --git a/0077-libcare-patch-make-export-libcare-env-variables.patch b/0077-libcare-patch-make-export-libcare-env-variables.patch deleted file mode 100644 index d6c80a0..0000000 --- a/0077-libcare-patch-make-export-libcare-env-variables.patch +++ /dev/null @@ -1,34 +0,0 @@ -From ece0bca07ca10c1fb7fc78b24e0d200fa54e5e66 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Mon, 15 Mar 2021 14:34:42 +0800 -Subject: [PATCH 077/118] libcare-patch-make: export libcare env variables - -Export libcare env variables to make patch-make simpler. -Now we can just use one command to make a patch like this: -'libcare-patch-make --clean xxx.patch -i 0001' - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/libcare-patch-make | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/libcare-patch-make b/src/libcare-patch-make -index 3b757aa..3e5c7c6 100755 ---- a/src/libcare-patch-make -+++ b/src/libcare-patch-make -@@ -31,6 +31,9 @@ EOF - - prepare_env() { - KPATCH_PATH=$(dirname $0) -+ export KP_EXECVE_DEBUG=1; -+ export KPCC_DEBUG=1; -+ export KPATCH_PATH=$(dirname $0) - - if test ! -x "$KPATCH_PATH/kpatch_gensrc"; then - echo "kpatch tools are missing" >&2 --- -2.27.0 - diff --git a/0078-storage-strip-fix-some-bad-code-problem.patch b/0078-storage-strip-fix-some-bad-code-problem.patch deleted file mode 100644 index 7f99570..0000000 --- a/0078-storage-strip-fix-some-bad-code-problem.patch +++ /dev/null @@ -1,162 +0,0 @@ -From 90831300bb25959ec8e1c1bbecd07d81486c40db Mon Sep 17 00:00:00 2001 -From: Bihong Yu -Date: Tue, 16 Mar 2021 16:21:51 +0800 -Subject: [PATCH 078/118] storage/strip: fix some bad code problem - -kpatch_storage.c/kpatch_strip.c: fix some bad code problem found by codedex. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_storage.c | 34 +++++++++++++++++++++++++--------- - src/kpatch_strip.c | 18 ++++++++++++++++-- - 2 files changed, 41 insertions(+), 11 deletions(-) - -diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c -index 9165cbf..45caa90 100644 ---- a/src/kpatch_storage.c -+++ b/src/kpatch_storage.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.10.08 - storage/strip: fix some bad code problem -+ * Huawei Technologies Co., Ltd. -+ ******************************************************************************/ -+ - #include - #include - #include -@@ -60,15 +65,18 @@ int storage_init(kpatch_storage_t *storage, - int patch_fd = -1; - struct stat stat = { .st_mode = 0 }; - -- if (fname != NULL) { -- patch_fd = open(fname, O_RDONLY | O_CLOEXEC); -- if (patch_fd < 0) -- goto out_err; -- -- if (fstat(patch_fd, &stat) < 0) -- goto out_close; -+ if (fname == NULL) { -+ kperr("storage path is not configured\n"); -+ return -1; - } - -+ patch_fd = open(fname, O_RDONLY | O_CLOEXEC); -+ if (patch_fd < 0) -+ goto out_err; -+ -+ if (fstat(patch_fd, &stat) < 0) -+ goto out_close; -+ - storage->patch_fd = patch_fd; - storage->is_patch_dir = S_ISDIR(stat.st_mode); - storage->path = NULL; -@@ -119,6 +127,7 @@ void storage_free(kpatch_storage_t *storage) - if (storage->is_patch_dir) - rb_destroy(&storage->tree, free_storage_patch_cb); - free(storage->path); -+ storage->path = NULL; - } - - static int -@@ -166,7 +175,8 @@ storage_open_patch(kpatch_storage_t *storage, - struct kpatch_storage_patch* patch) - { - char fname[96]; -- int i, rv; -+ int rv = PATCH_NOT_FOUND; -+ int i; - - for (i = 0; i < ARRAY_SIZE(pathtemplates); i++) { - sprintf(fname, pathtemplates[i], buildid); -@@ -206,7 +216,8 @@ storage_stat_patch(kpatch_storage_t *storage, - { - char fname[96]; - struct stat buf; -- int i, rv; -+ int rv = PATCH_NOT_FOUND; -+ int i; - - for (i = 0; i < ARRAY_SIZE(pathtemplates); i++) { - sprintf(fname, pathtemplates[i], buildid); -@@ -362,6 +373,11 @@ char *storage_get_description(kpatch_storage_t *storage, - - desc = malloc(alloc); - -+ if (desc == NULL) { -+ kperr("failed to malloc memory for desc\n"); -+ goto err_free; -+ } -+ - if (olddesc != NULL) { - memcpy(desc, olddesc, sz); - free(olddesc); -diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c -index f32dddd..9812d6e 100644 ---- a/src/kpatch_strip.c -+++ b/src/kpatch_strip.c -@@ -1,6 +1,10 @@ - /****************************************************************************** -+ * 2021.10.08 - storage/strip: fix some bad code problem -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - remove deprecated code - * Huawei Technologies Co., Ltd. -+ * - * 2021.09.23 - tls: add support for tls symbol - * Huawei Technologies Co., Ltd. - ******************************************************************************/ -@@ -31,7 +35,7 @@ - #define MODE_REL_FIXUP 4 - #define MODE_UNDO_LINK 5 - --int need_section(char *name) -+int need_section(const char *name) - { - if (strstr(name, "kpatch")) - return 1; -@@ -44,7 +48,7 @@ int need_section(char *name) - return 0; - } - --Elf *kpatch_open_elf(char *file, int create) -+Elf *kpatch_open_elf(const char *file, int create) - { - int fd; - Elf *elf; -@@ -53,8 +57,10 @@ Elf *kpatch_open_elf(char *file, int create) - if (fd == -1) - kpfatalerror("open"); - elf = elf_begin(fd, (create ? ELF_C_WRITE : ELF_C_RDWR), NULL); -+ close(fd); - if (!elf) - kpfatalerror("elf_begin"); -+ - return elf; - } - -@@ -140,6 +146,9 @@ static int kpatch_strip(Elf *elfin, Elf *elfout) - if (!gelf_getshdr(scnin, &shin)) - kpfatalerror("gelf_getshdr in"); - scnname = elf_strptr(elfin, shstridx, shin.sh_name); -+ if (!scnname) { -+ kpfatalerror("elf_strptr"); -+ } - shout = shin; - - if (off != -1ull) { -@@ -167,6 +176,11 @@ static int kpatch_strip(Elf *elfin, Elf *elfout) - if (!elf_flagscn(scnout, ELF_C_SET, ELF_F_DIRTY)) - kpfatalerror("elf_flagscn"); - } -+ -+ if (off == -1ull) { -+ kpfatalerror("off is equal to -1"); -+ } -+ - off = ALIGN(off, 8); - ehout.e_shoff = off; - --- -2.27.0 - diff --git a/0079-ptrace-process-patch-fix-some-bad-code-problem.patch b/0079-ptrace-process-patch-fix-some-bad-code-problem.patch deleted file mode 100644 index 741a057..0000000 --- a/0079-ptrace-process-patch-fix-some-bad-code-problem.patch +++ /dev/null @@ -1,269 +0,0 @@ -From b61370de8022f4a82cda64ce09d2b4a46cd164d2 Mon Sep 17 00:00:00 2001 -From: Bihong Yu -Date: Wed, 17 Mar 2021 15:00:23 +0800 -Subject: [PATCH 079/118] ptrace/process/patch: fix some bad code problem - -kpatch_ptrace.c/kpatch_process.c/kpatch_patch.c: fix some bad code -problem found by code checker. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/arch/aarch64/arch_patch.c | 4 ++-- - src/arch/aarch64/arch_ptrace.c | 6 ++++-- - src/arch/x86/arch_patch.c | 9 +++++++-- - src/arch/x86/arch_ptrace.c | 6 ++++-- - src/include/kpatch_ptrace.h | 12 ++++++++---- - src/kpatch_patch.c | 12 ++++++++++++ - src/kpatch_process.c | 13 ++++++++----- - src/kpatch_ptrace.c | 9 +++++++-- - 8 files changed, 52 insertions(+), 19 deletions(-) - -diff --git a/src/arch/aarch64/arch_patch.c b/src/arch/aarch64/arch_patch.c -index 9102621..461e28c 100644 ---- a/src/arch/aarch64/arch_patch.c -+++ b/src/arch/aarch64/arch_patch.c -@@ -27,8 +27,8 @@ - * This flag is local, i.e. it is never stored to the - * patch applied to patient's memory. - */ --int PATCH_APPLIED = (1 << 31); --int HUNK_SIZE = 4; -+unsigned int PATCH_APPLIED = (1 << 31); -+unsigned int HUNK_SIZE = 4; - - int patch_apply_hunk(struct object_file *o, size_t nhunk) - { -diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c -index d4f6991..df89b7d 100644 ---- a/src/arch/aarch64/arch_ptrace.c -+++ b/src/arch/aarch64/arch_ptrace.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.08 - ptrace/process/patch: fix some bad code problem -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code - * Huawei Technologies Co., Ltd. - * -@@ -242,8 +245,7 @@ kpatch_arch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, - const unsigned char *code, - size_t codelen, - struct user_regs_struct *pregs, -- int (*func)(struct kpatch_ptrace_ctx *pctx, -- void *data), -+ int (*func)(struct kpatch_ptrace_ctx *pctx, const void *data), - void *data) - { - struct user_regs_struct orig_regs, regs; -diff --git a/src/arch/x86/arch_patch.c b/src/arch/x86/arch_patch.c -index a6e794d..91e041b 100644 ---- a/src/arch/x86/arch_patch.c -+++ b/src/arch/x86/arch_patch.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.10.08 - ptrace/process/patch: fix some bad code problem -+ * Huawei Technologies Co., Ltd. -+ ******************************************************************************/ -+ - #include - #include - #include -@@ -28,8 +33,8 @@ - * This flag is local, i.e. it is never stored to the - * patch applied to patient's memory. - */ --int PATCH_APPLIED = (1 << 31); --int HUNK_SIZE = 5; -+unsigned int PATCH_APPLIED = (1 << 31); -+unsigned int HUNK_SIZE = 5; - - int patch_apply_hunk(struct object_file *o, size_t nhunk) - { -diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c -index e9d4530..d8bb1f3 100644 ---- a/src/arch/x86/arch_ptrace.c -+++ b/src/arch/x86/arch_ptrace.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.08 - ptrace/process/patch: fix some bad code problem -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code - * Huawei Technologies Co., Ltd. - ******************************************************************************/ -@@ -286,8 +289,7 @@ kpatch_arch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, - const unsigned char *code, - size_t codelen, - struct user_regs_struct *pregs, -- int (*func)(struct kpatch_ptrace_ctx *pctx, -- void *data), -+ int (*func)(struct kpatch_ptrace_ctx *pctx, const void *data), - void *data) - { - struct user_regs_struct orig_regs, regs; -diff --git a/src/include/kpatch_ptrace.h b/src/include/kpatch_ptrace.h -index f0e83c0..003a4fa 100644 ---- a/src/include/kpatch_ptrace.h -+++ b/src/include/kpatch_ptrace.h -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.10.08 - ptrace/process/patch: fix some bad code problem -+ * Huawei Technologies Co., Ltd. -+ ******************************************************************************/ -+ - #ifndef __KPATCH_PTRACE_H__ - #define __KPATCH_PTRACE_H__ - -@@ -56,7 +61,7 @@ int kpatch_ptrace_handle_ld_linux(kpatch_process_t *proc, - unsigned long *pentry_point); - - --int wait_for_stop(struct kpatch_ptrace_ctx *pctx, void *data); -+int wait_for_stop(struct kpatch_ptrace_ctx *pctx, const void *data); - int get_threadgroup_id(int tid); - int kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc); - int kpatch_ptrace_get_entry_point(struct kpatch_ptrace_ctx *pctx, -@@ -66,7 +71,7 @@ int kpatch_ptrace_get_entry_point(struct kpatch_ptrace_ctx *pctx, - having non-zero execute_until */ - int kpatch_ptrace_execute_until(kpatch_process_t *proc, - int timeout_msec, -- int flags); -+ unsigned int flags); - - int kpatch_execute_remote(struct kpatch_ptrace_ctx *pctx, - const unsigned char *code, -@@ -135,8 +140,7 @@ kpatch_arch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, - const unsigned char *code, - size_t codelen, - struct user_regs_struct *pregs, -- int (*func)(struct kpatch_ptrace_ctx *pctx, -- void *data), -+ int (*func)(struct kpatch_ptrace_ctx *pctx, const void *data), - void *data); - - int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index 8465162..0b25bcb 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.08 - ptrace/process/patch: fix some bad code problem -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code - * Huawei Technologies Co., Ltd. - * -@@ -577,6 +580,12 @@ object_find_applied_patch_info(struct object_file *o) - if (o->ninfo == nalloc) { - nalloc += 16; - o->info = realloc(o->info, nalloc * sizeof(tmpinfo)); -+ if (o->info == NULL) { -+ kperr("Failed to realloc o->info!\n"); -+ o->ninfo = 0; -+ ret = -1; -+ goto err; -+ } - } - - o->info[o->ninfo] = tmpinfo; -@@ -650,6 +659,9 @@ kpatch_should_unapply_patch(struct object_file *o, - return 1; - - bid = kpatch_get_buildid(o); -+ if (bid == NULL) { -+ return 0; -+ } - - for (i = 0; i < nbuildids; i++) { - if (!strcmp(bid, buildids[i]) || -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index a6fcd51..b248d03 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.08 - ptrace/process/patch: fix some bad code problem -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.07 - kpatch_object: combine funcitons with similar function - * Huawei Technologies Co., Ltd. - * -@@ -364,7 +367,7 @@ kpatch_object_dump(struct object_file *o) - } - - static unsigned int --perms2prot(char *perms) -+perms2prot(const char *perms) - { - unsigned int prot = 0; - -@@ -739,8 +742,6 @@ kpatch_process_attach(kpatch_process_t *proc) - kpinfo(", %d", pids[i]); - kpinfo("\n"); - -- free(pids); -- - if (proc->ptrace.unwd == NULL) { - proc->ptrace.unwd = unw_create_addr_space(&_UPT_accessors, - __LITTLE_ENDIAN); -@@ -750,6 +751,7 @@ kpatch_process_attach(kpatch_process_t *proc) - } - } - -+ free(pids); - return 0; - - detach: -@@ -866,13 +868,14 @@ process_get_comm(kpatch_process_t *proc) - ret = readlink(path, realpath, sizeof(realpath)); - if (ret < 0) - return -1; -- realpath[ret] = '\0'; -+ realpath[ret - 1] = '\0'; - bn = basename(realpath); - strncpy(path, bn, sizeof(path)); - if ((c = strstr(path, " (deleted)"))) - *c = '\0'; -- strncpy(proc->comm, path, sizeof(proc->comm)); - -+ proc->comm[sizeof(proc->comm) - 1] = '\0'; -+ strncpy(proc->comm, path, sizeof(proc->comm) - 1); - if (!strncmp(proc->comm, "ld", 2)) { - proc->is_ld_linux = 1; - return process_get_comm_ld_linux(proc); -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index d0bfbdd..2a1b8aa 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.10.08 - ptrace/process/patch: fix some bad code problem -+ * Huawei Technologies Co., Ltd. -+ ******************************************************************************/ -+ - #include - #include - #include -@@ -215,7 +220,7 @@ struct breakpoint { - int - kpatch_ptrace_execute_until(kpatch_process_t *proc, - int timeout_msec, -- int flags) -+ unsigned int flags) - { - int ret = 0, errno_save; - char break_code[] = BREAK_INSN; -@@ -415,7 +420,7 @@ poke_back: - - int - wait_for_stop(struct kpatch_ptrace_ctx *pctx, -- void *data) -+ const void *data) - { - int ret, status = 0, pid = (int)(uintptr_t)data ?: pctx->pid; - kpdebug("wait_for_stop(pctx->pid=%d, pid=%d)\n", pctx->pid, pid); --- -2.27.0 - diff --git a/0080-kpatch-rename-uname-to-buildid.patch b/0080-kpatch-rename-uname-to-buildid.patch deleted file mode 100644 index 988fdf0..0000000 --- a/0080-kpatch-rename-uname-to-buildid.patch +++ /dev/null @@ -1,168 +0,0 @@ -From b99f1f1bc7ee003e60da3ce364eed22d3287cecc Mon Sep 17 00:00:00 2001 -From: Bihong Yu -Date: Tue, 16 Mar 2021 16:52:29 +0800 -Subject: [PATCH 080/118] kpatch: rename uname to buildid - -The member of uname of struct kpatch_file and struct kpatch_query_info -is used as buildid, rename uname to buildid for easy understanding. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/include/kpatch_file.h | 12 ++++++++---- - src/include/kpatch_process.h | 5 ++++- - src/kpatch_make.c | 9 ++++++++- - src/kpatch_process.c | 7 +++++-- - src/kpatch_storage.c | 5 ++++- - 5 files changed, 29 insertions(+), 9 deletions(-) - -diff --git a/src/include/kpatch_file.h b/src/include/kpatch_file.h -index e307d0c..963d06d 100644 ---- a/src/include/kpatch_file.h -+++ b/src/include/kpatch_file.h -@@ -1,6 +1,9 @@ - /****************************************************************************** -+ * 2021.10.11 - kpatch: rename uname to buildid -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.09.23 - libcare-ctl: introduce patch-id -- * Huawei Technologies Co., Ltd. - 0.1.4-12 -+ * Huawei Technologies Co., Ltd. - ******************************************************************************/ - - #ifndef __KPATCH_FILE_H__ -@@ -97,7 +100,7 @@ typedef int (*kpatch_undo_patch)(struct kpatch_data *); - - #define KPATCH_FILE_MAGIC1 "KPATCH1" - #define KPATCH_MAX_NR_ENTRIES 16 --#define KPATCH_UNAME_LEN 256 -+#define KPATCH_BUILDID_LEN 40 - - #define KPATCH_DEBUG_FLAG 0 - #define KPATCH_NOFREEZE_FLAG 1 /* this flag is ignored, use safety method insted */ -@@ -123,7 +126,8 @@ struct kpatch_file { - unsigned char safety_method; - char pad[6]; - char modulename[64]; /* "vmlinux" or module name */ -- char uname[KPATCH_UNAME_LEN]; /* /proc/version of the kernel */ -+ char buildid[KPATCH_BUILDID_LEN + 1]; /* patch buildid */ -+ char pad1[23]; - - uint64_t build_time; /* build time */ - uint32_t csum; /* checksum of the whole kpatch */ -@@ -221,7 +225,7 @@ struct kpatch_query_info { - #define KPATCH_STATE_APPLIED 1 /* Patch is applied */ - uint32_t state; - -- char uname[KPATCH_UNAME_LEN]; -+ char buildid[KPATCH_BUILDID_LEN + 1]; /* patch build id */ - char description[512]; - - uint64_t build_time; -diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h -index ea5aa27..2c75102 100644 ---- a/src/include/kpatch_process.h -+++ b/src/include/kpatch_process.h -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - kpatch: rename uname to buildid -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.07 - kpatch_object: combine funcitons with similar function - * Huawei Technologies Co., Ltd. - * -@@ -80,7 +83,7 @@ struct object_file { - struct list_head vma; - - /* Object's Build-ID */ -- char buildid[41]; -+ char buildid[KPATCH_BUILDID_LEN + 1]; - - /* Patch information */ - struct kpatch_info *info; -diff --git a/src/kpatch_make.c b/src/kpatch_make.c -index ceadd1c..044dee7 100644 ---- a/src/kpatch_make.c -+++ b/src/kpatch_make.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - kpatch: rename uname to buildid -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.07 - process: add some checks before patching - * Huawei Technologies Co., Ltd. - * -@@ -43,7 +46,7 @@ int make_file(int fdo, void *buf1, off_t size, const char *buildid, const char * - - memcpy(khdr.magic, KPATCH_FILE_MAGIC1, sizeof(khdr.magic)); - strncpy(khdr.id, patch_id, sizeof(khdr.id)); -- strncpy(khdr.uname, buildid, sizeof(khdr.uname)); -+ strncpy(khdr.buildid, buildid, sizeof(khdr.buildid)); - khdr.build_time = (uint64_t)time(NULL); - khdr.csum = 0; /* FIXME */ - khdr.nr_reloc = 0; -@@ -105,6 +108,10 @@ int main(int argc, char **argv) - if (buildid == NULL || patch_id == NULL || *patch_id == '\0') - usage(); - -+ if (strlen(buildid) != KPATCH_BUILDID_LEN) { -+ xerror("Invalid build id: %s", buildid); -+ } -+ - fd1 = open(argv[optind], O_RDONLY); - if (fd1 == -1) - xerror("Can't open 1st input file '%s'", argv[optind]); -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index b248d03..1b9107d 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - kpatch: rename uname to buildid -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - ptrace/process/patch: fix some bad code problem - * Huawei Technologies Co., Ltd. - * -@@ -196,7 +199,7 @@ process_get_object_type(kpatch_process_t *proc, - struct kpatch_file *pkpfile = (struct kpatch_file *)buf; - - if (!strcmp(pkpfile->magic, KPATCH_FILE_MAGIC1)) { -- sprintf(name, "[kpatch-%s]", pkpfile->uname); -+ sprintf(name, "[kpatch-%s]", pkpfile->buildid); - return type; - } - } -@@ -418,7 +421,7 @@ kpatch_process_associate_patches(kpatch_process_t *proc, const char *patch_id) - - bid = kpatch_get_buildid(o); - if (bid == NULL || -- strcmp(bid, objpatch->kpfile.patch->uname)) -+ strcmp(bid, objpatch->kpfile.patch->buildid)) - continue; - - if (kpatch_object_add_applied_patch(o, objpatch) < 0) -diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c -index 45caa90..7a3a3ed 100644 ---- a/src/kpatch_storage.c -+++ b/src/kpatch_storage.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - kpatch: rename uname to buildid -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - storage/strip: fix some bad code problem - * Huawei Technologies Co., Ltd. - ******************************************************************************/ -@@ -95,7 +98,7 @@ int storage_init(kpatch_storage_t *storage, - kpatch_close_file(&storage->patch.kpfile); - goto out_close; - } -- strcpy(storage->patch.buildid, storage->patch.kpfile.patch->uname); -+ strcpy(storage->patch.buildid, storage->patch.kpfile.patch->buildid); - } - - storage->path = strdup(fname); --- -2.27.0 - diff --git a/0081-kpatch-clear-code-checker-warnings.patch b/0081-kpatch-clear-code-checker-warnings.patch deleted file mode 100644 index 71e64cb..0000000 --- a/0081-kpatch-clear-code-checker-warnings.patch +++ /dev/null @@ -1,268 +0,0 @@ -From 0da7eb8f2c96653ad3290c481f76d6218ab66bbb Mon Sep 17 00:00:00 2001 -From: Hao Wang -Date: Thu, 18 Mar 2021 19:40:37 +0800 -Subject: [PATCH 081/118] kpatch: clear code checker warnings - -clear code checker warnings for: - src/kpatch_make.c - src/kpatch_io.c - src/include/kpatch_io.h - -Signed-off-by: Hao Wang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/Makefile | 2 +- - src/include/kpatch_io.h | 9 ++++- - src/kpatch_io.c | 9 ++++- - src/kpatch_make.c | 88 +++++++++++++++++++++++++++-------------- - 4 files changed, 73 insertions(+), 35 deletions(-) - -diff --git a/src/Makefile b/src/Makefile -index 9071be4..464874f 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -40,7 +40,7 @@ all: $(TARGETS) - .SUFFIXES: - - kpatch_gensrc: kpatch_gensrc.o kpatch_dbgfilter.o kpatch_parse.o kpatch_io.o rbtree.o kpatch_log.o arch_parse.o --kpatch_make: kpatch_make.o -+kpatch_make: kpatch_make.o kpatch_log.o - - LIBUNWIND_LIBS := $(shell pkg-config --libs libunwind libunwind-ptrace) - -diff --git a/src/include/kpatch_io.h b/src/include/kpatch_io.h -index 6d06fb3..7936c89 100644 ---- a/src/include/kpatch_io.h -+++ b/src/include/kpatch_io.h -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.10.11 - kpatch: clear code checker warnings -+ * Huawei Technologies Co., Ltd. -+ ******************************************************************************/ -+ - #ifndef __KP_IO_H__ - #define __KP_IO_H__ - -@@ -26,8 +31,8 @@ struct kp_file { - struct rb_root renames; - }; - --int read_file(struct kp_file *f, char *fname); --int create_file(struct kp_file *f, char *fname); -+int read_file(struct kp_file *f, const char *fname); -+int create_file(struct kp_file *f, const char *fname); - void close_file(struct kp_file *f); - void *kp_realloc(void *p, int oldsz, int newsz); - -diff --git a/src/kpatch_io.c b/src/kpatch_io.c -index 7bdc298..66d1fcf 100644 ---- a/src/kpatch_io.c -+++ b/src/kpatch_io.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.10.11 - kpatch: clear code checker warnings -+ * Huawei Technologies Co., Ltd. -+ ******************************************************************************/ -+ - #include - #include - #include -@@ -25,7 +30,7 @@ void *kp_realloc(void *p, int oldsz, int newsz) - return p2; - } - --int read_file(struct kp_file *file, char *fname) -+int read_file(struct kp_file *file, const char *fname) - { - int sz = 64; - char buf[BUFSIZE]; -@@ -65,7 +70,7 @@ int read_file(struct kp_file *file, char *fname) - return 0; - } - --int create_file(struct kp_file *file, char *fname) -+int create_file(struct kp_file *file, const char *fname) - { - if (!strcmp(fname, "-")) { - file->f = stdout; -diff --git a/src/kpatch_make.c b/src/kpatch_make.c -index 044dee7..348e979 100644 ---- a/src/kpatch_make.c -+++ b/src/kpatch_make.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - kpatch: clear code checker warnings -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.11 - kpatch: rename uname to buildid - * Huawei Technologies Co., Ltd. - * -@@ -20,24 +23,15 @@ - #include - #include - -+#include "include/kpatch_log.h" - #include "include/kpatch_file.h" - - #define ALIGN(x, align) ((x + align - 1) & (~(align - 1))) - - static int verbose; - --static void xerror(const char *fmt, ...) --{ -- va_list va; -- -- va_start(va, fmt); -- vfprintf(stderr, fmt, va); -- va_end(va); -- -- exit(1); --} -- --int make_file(int fdo, void *buf1, off_t size, const char *buildid, const char *patch_id) -+int make_file(int fdo, const void *buf, off_t size, -+ const char *buildid, const char *patch_id) - { - int res; - struct kpatch_file khdr; -@@ -45,10 +39,10 @@ int make_file(int fdo, void *buf1, off_t size, const char *buildid, const char * - memset(&khdr, 0, sizeof(khdr)); - - memcpy(khdr.magic, KPATCH_FILE_MAGIC1, sizeof(khdr.magic)); -- strncpy(khdr.id, patch_id, sizeof(khdr.id)); -- strncpy(khdr.buildid, buildid, sizeof(khdr.buildid)); -+ strncpy(khdr.id, patch_id, sizeof(khdr.id) - 1); -+ strncpy(khdr.buildid, buildid, sizeof(khdr.buildid) - 1); - khdr.build_time = (uint64_t)time(NULL); -- khdr.csum = 0; /* FIXME */ -+ khdr.csum = 0; - khdr.nr_reloc = 0; - - khdr.rel_offset = sizeof(khdr); -@@ -57,17 +51,20 @@ int make_file(int fdo, void *buf1, off_t size, const char *buildid, const char * - khdr.total_size = khdr.kpatch_offset + size; - - res = write(fdo, &khdr, sizeof(khdr)); -- res += write(fdo, buf1, size); -+ res += write(fdo, buf, size); - -- if (res != sizeof(khdr) + size) -- xerror("write error"); -+ if (res != sizeof(khdr) + size) { -+ kplogerror("write error\n"); -+ return -1; -+ } - - return 0; - } - - static void usage(void) - { -- printf("Usage: kpatch_make [-d] -n [-v ] -e [-o ] -i [input2]\n"); -+ printf("Usage: kpatch_make [-d] -n [-v ] -e " -+ "[-o ] -i [input2]\n"); - printf(" -b buildid = target buildid for patch\n"); - printf(" -d debug (verbose)\n"); - printf(" -i unique patch id\n"); -@@ -80,11 +77,15 @@ static void usage(void) - - int main(int argc, char **argv) - { -+ int ret = -1; - int opt; -- int fd1, fdo; -+ int fd1; -+ int fdo = 1; - void *buf; - struct stat st; -- char *buildid = NULL, *outputname = NULL, *patch_id = NULL; -+ const char *buildid = NULL; -+ const char *outputname = NULL; -+ const char *patch_id = NULL; - - while ((opt = getopt(argc, argv, "db:o:i:v:s:")) != -1) { - switch (opt) { -@@ -92,12 +93,24 @@ int main(int argc, char **argv) - verbose = 1; - break; - case 'b': -+ if (buildid) { -+ kplogerror("duplicate inputted buildid\n"); -+ return -1; -+ } - buildid = strdup(optarg); - break; - case 'o': -+ if (outputname) { -+ kplogerror("duplicate inputted outputname\n"); -+ return -1; -+ } - outputname = strdup(optarg); - break; - case 'i': -+ if (patch_id) { -+ kplogerror("duplicate inputted patch_id\n"); -+ return -1; -+ } - patch_id = strdup(optarg); - break; - default: /* '?' */ -@@ -105,29 +118,44 @@ int main(int argc, char **argv) - } - } - -+ if (verbose) -+ log_level = LOG_DEBUG; -+ - if (buildid == NULL || patch_id == NULL || *patch_id == '\0') - usage(); - - if (strlen(buildid) != KPATCH_BUILDID_LEN) { -- xerror("Invalid build id: %s", buildid); -+ kplogerror("Invalid build id: %s", buildid); - } - - fd1 = open(argv[optind], O_RDONLY); -- if (fd1 == -1) -- xerror("Can't open 1st input file '%s'", argv[optind]); -- if (fstat(fd1, &st) == -1) -- xerror("Can't stat file1"); -+ if (fd1 == -1) { -+ kplogerror("Can't open 1st input file '%s'\n", argv[optind]); -+ goto cleanup; -+ } -+ -+ if (fstat(fd1, &st) == -1) { -+ kplogerror("Can't stat file1\n"); -+ goto cleanup; -+ } - buf = mmap(NULL, st.st_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd1, 0); - if (buf == MAP_FAILED) -- xerror("mmap error %d", errno); -+ kplogerror("mmap error %d", errno); - close(fd1); - - fdo = 1; - if (outputname) { - fdo = open(outputname, O_CREAT | O_TRUNC | O_WRONLY, 0660); -- if (fdo == -1) -- xerror("Can't open output file '%s'", outputname); -+ if (fdo == -1) { -+ kplogerror("Can't open output file '%s'\n", outputname); -+ goto cleanup; -+ } - } -+ ret = make_file(fdo, buf, st.st_size, buildid, patch_id); - -- return make_file(fdo, buf, st.st_size, buildid, patch_id); -+cleanup: -+ close(fdo); -+ munmap(buf, st.st_size); -+ close(fd1); -+ return ret; - } --- -2.27.0 - diff --git a/0082-kpatch_strip-revert-close-fd-in-kpatch_open_elf.patch b/0082-kpatch_strip-revert-close-fd-in-kpatch_open_elf.patch deleted file mode 100644 index c15a89d..0000000 --- a/0082-kpatch_strip-revert-close-fd-in-kpatch_open_elf.patch +++ /dev/null @@ -1,40 +0,0 @@ -From f7ff401e8e9722384329e099b134449f74909406 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Fri, 19 Mar 2021 16:08:10 +0800 -Subject: [PATCH 082/118] kpatch_strip: revert close fd in kpatch_open_elf - -We should not close fd until we finish elf reading which -results in patch making failure. -Just revert that patch to fix that. - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_strip.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c -index 9812d6e..a8adea8 100644 ---- a/src/kpatch_strip.c -+++ b/src/kpatch_strip.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - kpatch_strip: revert close fd -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - storage/strip: fix some bad code problem - * Huawei Technologies Co., Ltd. - * -@@ -57,7 +60,6 @@ Elf *kpatch_open_elf(const char *file, int create) - if (fd == -1) - kpfatalerror("open"); - elf = elf_begin(fd, (create ? ELF_C_WRITE : ELF_C_RDWR), NULL); -- close(fd); - if (!elf) - kpfatalerror("elf_begin"); - --- -2.27.0 - diff --git a/0083-kpatch-fix-code-checker-warning.patch b/0083-kpatch-fix-code-checker-warning.patch deleted file mode 100644 index f703ea3..0000000 --- a/0083-kpatch-fix-code-checker-warning.patch +++ /dev/null @@ -1,222 +0,0 @@ -From 550370c4c0316c2ef0a5fc977999f58e830fef9f Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Fri, 19 Mar 2021 17:36:14 +0800 -Subject: [PATCH 083/118] kpatch: fix code checker warning - -clear code checker warning for: - src/arch/x86/arch_ptrace.c - src/include/kpatch_process.h - src/kpatch_cc.c - src/kpatch_elf.c - src/kpatch_gensrc.c - src/kpatch_parse.c - src/kpatch_process.c - src/kpatch_storage.c - src/kpatch_strip.c - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/arch/x86/arch_ptrace.c | 5 ++++- - src/include/kpatch_process.h | 4 +++- - src/kpatch_cc.c | 4 ++++ - src/kpatch_gensrc.c | 7 +++++-- - src/kpatch_parse.c | 9 ++++++--- - src/kpatch_process.c | 10 +++------- - src/kpatch_storage.c | 4 ++++ - src/kpatch_strip.c | 4 ++++ - 8 files changed, 33 insertions(+), 14 deletions(-) - -diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c -index d8bb1f3..b8e761f 100644 ---- a/src/arch/x86/arch_ptrace.c -+++ b/src/arch/x86/arch_ptrace.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - kpatch: fix code checker warning -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - ptrace/process/patch: fix some bad code problem - * Huawei Technologies Co., Ltd. - * -@@ -290,7 +293,7 @@ kpatch_arch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, - size_t codelen, - struct user_regs_struct *pregs, - int (*func)(struct kpatch_ptrace_ctx *pctx, const void *data), -- void *data) -+ const void *data) - { - struct user_regs_struct orig_regs, regs; - unsigned char orig_code[codelen]; -diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h -index 2c75102..7193430 100644 ---- a/src/include/kpatch_process.h -+++ b/src/include/kpatch_process.h -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - kpatch: fix code checker warning -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.11 - kpatch: rename uname to buildid - * Huawei Technologies Co., Ltd. - * -@@ -236,7 +239,6 @@ struct vm_hole *next_hole(struct vm_hole *hole, struct list_head *head); - struct vm_hole *prev_hole(struct vm_hole *hole, struct list_head *head); - unsigned long hole_size(struct vm_hole *hole); - --unsigned long random_from_range(unsigned long min, unsigned long max); - unsigned long object_find_patch_region(struct object_file *obj, - size_t memsize, - struct vm_hole **hole); -diff --git a/src/kpatch_cc.c b/src/kpatch_cc.c -index 672038f..7db8a36 100644 ---- a/src/kpatch_cc.c -+++ b/src/kpatch_cc.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - kpatch: fix code checker warning -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code - * Huawei Technologies Co., Ltd. - ******************************************************************************/ -@@ -549,6 +552,7 @@ static void fini(void) - - if (output_file_allocated) { - free((void *)output_file); -+ output_file = NULL; - output_file_allocated = 0; - } - } -diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c -index 35e067e..cdee133 100644 ---- a/src/kpatch_gensrc.c -+++ b/src/kpatch_gensrc.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - kpatch: fix code checker warning -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code - * Huawei Technologies Co., Ltd. - * -@@ -636,7 +639,7 @@ static int match_build_path(struct cblock *b0, int *p0, struct cblock *b1, int * - } - - /* this is a minor improvement to avoid function patching just because of code line numbers are screwed, but real function hasn't changed */ --static int match_var_descriptor(struct cblock *b0, int *p0, struct cblock *b1, const int *p1) -+static int match_var_descriptor(struct cblock *b0, const int *p0, struct cblock *b1, const int *p1) - { - char *s0, *s1; - kpstr_t t0, t1; -@@ -691,7 +694,7 @@ static int match_var_datetime(struct cblock *b0, int *p0, struct cblock *b1, int - } - - /* this is a minor improvement to avoid function patching just because of code line numbers are screwed, but real function hasn't changed */ --static int match_bug_on(struct cblock *b0, int *p0, struct cblock *b1, const int *p1) -+static int match_bug_on(struct cblock *b0, const int *p0, struct cblock *b1, const int *p1) - { - char *s0, *s1; - kpstr_t t00, t01, t10, t11, t20, t21, t30, t31, t40, t41, t50, t51, t60, t61; -diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c -index 8208642..023246f 100644 ---- a/src/kpatch_parse.c -+++ b/src/kpatch_parse.c -@@ -1,4 +1,7 @@ --/******************************************************************************* -+/****************************************************************************** -+ * 2021.10.11 - kpatch: fix code checker warning -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - kpatch_parse: fix wrong return in is_data_sec() - * Huawei Technologies Co., Ltd. - * -@@ -7,7 +10,7 @@ - * - * 2021.10.08 - kpatch_parse: fix possible Null pointer dereferences - * Huawei Technologies Co., Ltd. --*******************************************************************************/ -+******************************************************************************/ - - #include - -@@ -530,7 +533,7 @@ struct section_desc *find_section(char *name) - static struct section_desc *dup_section(struct section_desc *sect) - { - struct section_desc *s = malloc(sizeof(*s)); -- if (!s) { -+ if (!s || !sect) { - kpfatal("Failed to allocate duplicate section\n"); - } - -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index 1b9107d..64d9f38 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - kpatch: fix code checker warning -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.11 - kpatch: rename uname to buildid - * Huawei Technologies Co., Ltd. - * -@@ -1028,13 +1031,6 @@ hole_size(struct vm_hole *hole) - return hole->end - hole->start; - } - --unsigned long --random_from_range(unsigned long min, unsigned long max) --{ -- /* TODO this is not uniform nor safe */ -- return min + random() % (max - min); --} -- - int - kpatch_object_allocate_patch(struct object_file *o, - size_t sz) -diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c -index 7a3a3ed..f66c723 100644 ---- a/src/kpatch_storage.c -+++ b/src/kpatch_storage.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - kpatch: fix code checker warning -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.11 - kpatch: rename uname to buildid - * Huawei Technologies Co., Ltd. - * -@@ -378,6 +381,7 @@ char *storage_get_description(kpatch_storage_t *storage, - - if (desc == NULL) { - kperr("failed to malloc memory for desc\n"); -+ free(olddesc); - goto err_free; - } - -diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c -index a8adea8..e59ce7d 100644 ---- a/src/kpatch_strip.c -+++ b/src/kpatch_strip.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - kpatch: fix code checker warning -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.11 - kpatch_strip: revert close fd - * Huawei Technologies Co., Ltd. - * -@@ -541,6 +544,7 @@ kpatch_rel_offset_to_relative(kpatch_objinfo *patch, - GElf_Shdr sh_patch; - int i; - -+ memset(&sh_patch, 0, sizeof(GElf_Shdr)); - kpatch_objinfo_getshdr(patch, sh_rel->sh_info, - &sh_patch); - --- -2.27.0 - diff --git a/0084-kpatch_ptrace-fix-x86-compile-failure.patch b/0084-kpatch_ptrace-fix-x86-compile-failure.patch deleted file mode 100644 index a84e9cc..0000000 --- a/0084-kpatch_ptrace-fix-x86-compile-failure.patch +++ /dev/null @@ -1,61 +0,0 @@ -From f2747f6fd9ae8b9ff21d9b41645f294be87e3972 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Mon, 22 Mar 2021 10:15:17 +0800 -Subject: [PATCH 084/118] kpatch_ptrace: fix x86 compile failure - -Commit(38c0b14df1023cb19) introduce compile failure in x86, fix it. - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/arch/aarch64/arch_ptrace.c | 5 ++++- - src/include/kpatch_ptrace.h | 5 ++++- - 2 files changed, 8 insertions(+), 2 deletions(-) - -diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c -index df89b7d..3ff5794 100644 ---- a/src/arch/aarch64/arch_ptrace.c -+++ b/src/arch/aarch64/arch_ptrace.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - kpatch_ptrace: fix x86 compile warning -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - ptrace/process/patch: fix some bad code problem - * Huawei Technologies Co., Ltd. - * -@@ -246,7 +249,7 @@ kpatch_arch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, - size_t codelen, - struct user_regs_struct *pregs, - int (*func)(struct kpatch_ptrace_ctx *pctx, const void *data), -- void *data) -+ const void *data) - { - struct user_regs_struct orig_regs, regs; - struct iovec orig_regs_iov, regs_iov; -diff --git a/src/include/kpatch_ptrace.h b/src/include/kpatch_ptrace.h -index 003a4fa..fbd9ce5 100644 ---- a/src/include/kpatch_ptrace.h -+++ b/src/include/kpatch_ptrace.h -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - kpatch_ptrace: fix x86 compile warning -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - ptrace/process/patch: fix some bad code problem - * Huawei Technologies Co., Ltd. - ******************************************************************************/ -@@ -141,7 +144,7 @@ kpatch_arch_execute_remote_func(struct kpatch_ptrace_ctx *pctx, - size_t codelen, - struct user_regs_struct *pregs, - int (*func)(struct kpatch_ptrace_ctx *pctx, const void *data), -- void *data); -+ const void *data); - - int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, - unsigned long arg1, unsigned long arg2, unsigned long arg3, --- -2.27.0 - diff --git a/0085-return-make-every-return-properly-other-than-direct-.patch b/0085-return-make-every-return-properly-other-than-direct-.patch deleted file mode 100644 index a9233ce..0000000 --- a/0085-return-make-every-return-properly-other-than-direct-.patch +++ /dev/null @@ -1,1111 +0,0 @@ -From 5ddf4e9c9caff0746ae9ee76722d1b007b3ce270 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Mon, 22 Mar 2021 12:05:24 +0800 -Subject: [PATCH 085/118] return: make every return properly other than - direct-exit - -i. kpfatalerror will exit(FAILURE) directly which breaks the workflow, -we should take every return properly and deprecate it and take -kperr() instead. -ii. throw fd out from kpatch_open_elf in order to fd resource cleanup - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/arch/aarch64/arch_elf.c | 12 +- - src/arch/aarch64/arch_strip.c | 2 +- - src/arch/x86/arch_elf.c | 12 +- - src/arch/x86/arch_strip.c | 20 +- - src/kpatch_elf.c | 23 +- - src/kpatch_elf_objinfo.c | 7 +- - src/kpatch_strip.c | 520 ++++++++++++++++++++++------------ - 7 files changed, 394 insertions(+), 202 deletions(-) - -diff --git a/src/arch/aarch64/arch_elf.c b/src/arch/aarch64/arch_elf.c -index eccf0b6..73d0232 100644 ---- a/src/arch/aarch64/arch_elf.c -+++ b/src/arch/aarch64/arch_elf.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - return: make every return properly other than direct-exit -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code - * Huawei Technologies Co., Ltd. - * -@@ -200,9 +203,10 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) - void *loc, *loc2; - - if (r->r_offset < 0 || r->r_offset >= tshdr->sh_size) { -- kpfatalerror("Relocation offset for section '%s'" -- " is at 0x%lx beyond the section size 0x%lx\n", -- scnname, r->r_offset, tshdr->sh_size); -+ kperr("Relocation offset for section '%s'" -+ " is at 0x%lx beyond the section size 0x%lx\n", -+ scnname, r->r_offset, tshdr->sh_size); -+ return -1; - } - - /* Location in our address space */ -@@ -243,7 +247,7 @@ unsigned long kpatch_arch_add_jmp_entry(struct object_file *o, unsigned long add - int e; - - if (o->jmp_table == NULL) { -- kpfatalerror("JMP TABLE not found\n"); -+ kperr("JMP TABLE not found\n"); - return 0; - } - -diff --git a/src/arch/aarch64/arch_strip.c b/src/arch/aarch64/arch_strip.c -index 5ec317d..561dd45 100644 ---- a/src/arch/aarch64/arch_strip.c -+++ b/src/arch/aarch64/arch_strip.c -@@ -101,7 +101,7 @@ kpatch_arch_fixup_rela_update_tls(kpatch_objinfo *origbin, - case R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC: - break; - default: -- kpfatalerror("non-supported TLS model\n"); -+ kperr("non-supported TLS model\n"); - return -1; - } - -diff --git a/src/arch/x86/arch_elf.c b/src/arch/x86/arch_elf.c -index 3e6f1ad..265fd37 100644 ---- a/src/arch/x86/arch_elf.c -+++ b/src/arch/x86/arch_elf.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - return: make every return properly other than direct-exit -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code - * Huawei Technologies Co., Ltd. - ******************************************************************************/ -@@ -54,9 +57,10 @@ int kpatch_arch_apply_relocate_add(struct object_file *o, GElf_Shdr *relsec) - void *loc, *loc2; - - if (r->r_offset < 0 || r->r_offset >= tshdr->sh_size) { -- kpfatalerror("Relocation offset for section '%s'" -- " is at 0x%lx beyond the section size 0x%lx\n", -- scnname, r->r_offset, tshdr->sh_size); -+ kperr("Relocation offset for section '%s'" -+ " is at 0x%lx beyond the section size 0x%lx\n", -+ scnname, r->r_offset, tshdr->sh_size); -+ return -1; - } - - /* Location in our address space */ -@@ -123,7 +127,7 @@ unsigned long kpatch_arch_add_jmp_entry(struct object_file *o, unsigned long add - int e; - - if (o->jmp_table == NULL) { -- kpfatalerror("JMP TABLE not found\n"); -+ kperr("JMP TABLE not found\n"); - return 0; - } - -diff --git a/src/arch/x86/arch_strip.c b/src/arch/x86/arch_strip.c -index ff1e212..3c0bbf5 100644 ---- a/src/arch/x86/arch_strip.c -+++ b/src/arch/x86/arch_strip.c -@@ -62,11 +62,11 @@ - */ - int - kpatch_arch_fixup_rela_update_tls(kpatch_objinfo *origbin, -- kpatch_objinfo *patch, -- GElf_Rela *rela, -- GElf_Sym *sym, -- GElf_Shdr *sh_text, -- unsigned char *text) -+ kpatch_objinfo *patch, -+ GElf_Rela *rela, -+ GElf_Sym *sym, -+ GElf_Shdr *sh_text, -+ unsigned char *text) - { - switch (GELF_R_TYPE(rela->r_info)) { - case R_X86_64_GOTTPOFF: -@@ -82,15 +82,15 @@ kpatch_arch_fixup_rela_update_tls(kpatch_objinfo *origbin, - rv = kpatch_get_original_symbol_loc( - origbin, symname, &off, NULL); - if (rv == SECTION_NOT_FOUND) { -- kpfatalerror( -- "TLS symbol %s not found in original binary", -- symname); -+ kperr("TLS symbol %s not found in original binary", symname); -+ return -1; - } - - kpinfo("Compare TLS symbol %s offset: %lx in origbinal binary, %lx in patch\n", - symname, off, sym->st_value); - if (off != sym->st_value) { -- kpfatalerror("TLS symbol %s has different offset!\n", symname); -+ kperr("TLS symbol %s has different offset!\n", symname); -+ return -1; - } - - return 0; -@@ -103,7 +103,7 @@ kpatch_arch_fixup_rela_update_tls(kpatch_objinfo *origbin, - case R_X86_64_TLSLD: - case R_X86_64_TPOFF64: - default: -- kpfatalerror("non-supported TLS model\n"); -+ kperr("non-supported TLS model\n"); - return -1; - } - -diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c -index 8447356..7914298 100644 ---- a/src/kpatch_elf.c -+++ b/src/kpatch_elf.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - return: make every return properly other than direct-exit -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - enhance kpatch_gensrc and kpatch_elf and kpatch_cc code - * Huawei Technologies Co., Ltd. - * -@@ -696,9 +699,12 @@ kpatch_resolve_undefined(struct object_file *obj, - - addr = vaddr2addr(o, addr); - -- if (type == STT_GNU_IFUNC) -- if (kpatch_arch_ptrace_resolve_ifunc(proc2pctx(obj->proc), &addr) < 0) -- kpfatalerror("kpatch_arch_ptrace_resolve_ifunc failed\n"); -+ if (type == STT_GNU_IFUNC) { -+ if (kpatch_arch_ptrace_resolve_ifunc(proc2pctx(obj->proc), &addr) < 0) { -+ kperr("kpatch_arch_ptrace_resolve_ifunc failed\n"); -+ return 0; -+ } -+ } - - break; - } -@@ -713,6 +719,7 @@ symbol_resolve(struct object_file *o, - char *symname) - { - unsigned long uaddr; -+ unsigned long st_value; - - switch(GELF_ST_TYPE(s->st_info)) { - case STT_SECTION: -@@ -722,7 +729,7 @@ symbol_resolve(struct object_file *o, - case STT_FUNC: - case STT_OBJECT: - -- /* TODO(pboldin) this breaks rule for overriding -+ /* this breaks rule for overriding - * symbols via dynamic libraries. Fix it. */ - if (s->st_shndx == SHN_UNDEF && - GELF_ST_BIND(s->st_info) == STB_GLOBAL) { -@@ -738,8 +745,12 @@ symbol_resolve(struct object_file *o, - } - /* OK, we overuse st_size to store original offset */ - s->st_size = uaddr; -- s->st_value = kpatch_arch_add_jmp_entry(o, uaddr); -- -+ st_value = kpatch_arch_add_jmp_entry(o, uaddr); -+ if (!st_value) { -+ kperr("Failed to add jmp entry"); -+ return -1; -+ } -+ s->st_value = st_value; - kpdebug("symbol '%s' = 0x%lx\n", - symname, uaddr); - kpdebug("jmptable '%s' = 0x%lx\n", -diff --git a/src/kpatch_elf_objinfo.c b/src/kpatch_elf_objinfo.c -index cadde4c..8ab6dd3 100644 ---- a/src/kpatch_elf_objinfo.c -+++ b/src/kpatch_elf_objinfo.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - return: make every return properly other than direct-exit -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - kpatch_elf/arch_elf: enhance kpatch_elf and arch_elf code - * Huawei Technologies Co., Ltd. - ******************************************************************************/ -@@ -167,13 +170,13 @@ kpatch_objinfo_load_tls_reladyn(kpatch_objinfo *oi) - - scn_rela_dyn = kpatch_objinfo_find_scn_by_name(oi, ".rela.dyn", NULL); - if (scn_rela_dyn == NULL) { -- kpfatalerror("unable to find .rela.dyn"); -+ kperr("unable to find .rela.dyn"); - return -1; - } - - data_rela_dyn = elf_getdata(scn_rela_dyn, NULL); - if (data_rela_dyn == NULL || data_rela_dyn->d_buf == NULL) { -- kpfatalerror("no data for .rela.dyn"); -+ kperr("no data for .rela.dyn"); - return -1; - } - -diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c -index e59ce7d..4296954 100644 ---- a/src/kpatch_strip.c -+++ b/src/kpatch_strip.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.11 - return: make every return properly other than direct-exit -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.11 - kpatch: fix code checker warning - * Huawei Technologies Co., Ltd. - * -@@ -54,18 +57,22 @@ int need_section(const char *name) - return 0; - } - --Elf *kpatch_open_elf(const char *file, int create) -+static Elf *kpatch_open_elf(const char *file, int create, int *elfd) - { -+ Elf *elf = NULL; - int fd; -- Elf *elf; - - fd = open(file, O_RDWR | (create ? O_CREAT : 0), 0660); -- if (fd == -1) -- kpfatalerror("open"); -+ if (fd == -1) { -+ kperr("Failed to open elf"); -+ return NULL; -+ } - elf = elf_begin(fd, (create ? ELF_C_WRITE : ELF_C_RDWR), NULL); -- if (!elf) -- kpfatalerror("elf_begin"); -+ if (!elf) { -+ kperr("Failed to do elf_begin"); -+ } - -+ *elfd = fd; - return elf; - } - -@@ -74,8 +81,9 @@ static int check_info_len(struct kpatch_info *info, size_t scnsize) - int ret = 0, i = 0; - - for (; id_buf, prev->d_size/sizeof(struct kpatch_info))) -- kpfatalerror("functions_too_small_to_patch"); -+ if (!prev) { -+ kperr("Failed to get prev"); -+ return -1; -+ } -+ if (!data) { -+ kperr("Failed to get newdata"); -+ return -1; -+ } -+ if (check_info_len((void*)prev->d_buf, -+ prev->d_size/sizeof(struct kpatch_info))) { -+ kperr("Functions is too small to patch"); -+ return -1; -+ } - data->d_align = 1; - data->d_buf = info_term; - data->d_off = prev->d_size; -@@ -123,14 +137,20 @@ static int kpatch_strip(Elf *elfin, Elf *elfout) - Elf64_Off off = -1ull; - size_t shstridx; - char *scnname; -+ int offset; - -- if (!gelf_newehdr(elfout, gelf_getclass(elfin))) -- kpfatalerror("gelf_newhdr"); -- if (!gelf_getehdr(elfout, &ehout)) -- kpfatalerror("gelf_getehdr out"); -- if (!gelf_getehdr(elfin, &ehin)) -- kpfatalerror("gelf_getehdr in"); -- -+ if (!gelf_newehdr(elfout, gelf_getclass(elfin))) { -+ kperr("Failed to do gelf_newhdr"); -+ return -1; -+ } -+ if (!gelf_getehdr(elfout, &ehout)) { -+ kperr("Failed to do gelf_getehdr out"); -+ return -1; -+ } -+ if (!gelf_getehdr(elfin, &ehin)) { -+ kperr("Failed to do gelf_getehdr in"); -+ return -1; -+ } - memset(&ehout, 0, sizeof(ehout)); - ehout.e_ident[EI_DATA] = ehin.e_ident[EI_DATA]; - ehout.e_machine = ehin.e_machine; -@@ -140,19 +160,28 @@ static int kpatch_strip(Elf *elfin, Elf *elfout) - ehout.e_shentsize = ehin.e_shentsize; - ehout.e_phoff = 0; - -- if (_elf_getshdrstrndx(elfin, &shstridx)) -- kpfatalerror("elf_getshdrstrndx"); -+ if (_elf_getshdrstrndx(elfin, &shstridx)) { -+ kperr("Failed to do elf_getshdrstrndx"); -+ return -1; -+ } - while ((scnin = elf_nextscn(elfin, scnin)) != NULL) { - scnout = elf_newscn(elfout); -- if (!scnout) -- kpfatalerror("elf_newscn"); -- if (!gelf_getshdr(scnout, &shout)) -- kpfatalerror("gelf_getshdr out"); -- if (!gelf_getshdr(scnin, &shin)) -- kpfatalerror("gelf_getshdr in"); -+ if (!scnout) { -+ kperr("Failed to get elf_newscn"); -+ return -1; -+ } -+ if (!gelf_getshdr(scnout, &shout)) { -+ kperr("Failed to do gelf_getshdr out"); -+ return -1; -+ } -+ if (!gelf_getshdr(scnin, &shin)) { -+ kperr("Failed to do gelf_getshdr in"); -+ return -1; -+ } - scnname = elf_strptr(elfin, shstridx, shin.sh_name); - if (!scnname) { -- kpfatalerror("elf_strptr"); -+ kperr("Faild to do elf_strptr"); -+ return -1; - } - shout = shin; - -@@ -166,37 +195,58 @@ static int kpatch_strip(Elf *elfin, Elf *elfout) - if (need_section(scnname)) { - kpinfo("need it\n"); - dataout = elf_newdata(scnout); -- if (!dataout) -- kpfatalerror("elf_newdata"); -+ if (!dataout) { -+ kperr("Failed to do elf_newdata"); -+ return -1; -+ } - *dataout = *elf_getdata(scnin, NULL); - off += shin.sh_size; -- if (!strcmp(scnname, ".kpatch.info")) -- off += process_kpatch_info(scnout, &shout); -+ if (!strcmp(scnname, ".kpatch.info")) { -+ offset = process_kpatch_info(scnout, &shout); -+ if (offset < 0) { -+ kperr("Failed to process kpatch info"); -+ return -1; -+ } -+ off += (size_t)offset; -+ } - } else { - kpinfo("don't need it\n"); - shout.sh_type = SHT_NOBITS; - } -- if (!gelf_update_shdr(scnout, &shout)) -- kpfatalerror("gelf_update_shdr need"); -- if (!elf_flagscn(scnout, ELF_C_SET, ELF_F_DIRTY)) -- kpfatalerror("elf_flagscn"); -+ if (!gelf_update_shdr(scnout, &shout)) { -+ kperr("Failed to do gelf_update_shdr need"); -+ return -1; -+ } -+ if (!elf_flagscn(scnout, ELF_C_SET, ELF_F_DIRTY)) { -+ kperr("Failed to do elf_flagscn"); -+ return -1; -+ } - } - - if (off == -1ull) { -- kpfatalerror("off is equal to -1"); -+ kperr("off is equal to -1"); -+ return -1; - } - - off = ALIGN(off, 8); - ehout.e_shoff = off; - -- if (!gelf_update_ehdr(elfout, &ehout)) -- kpfatalerror("gelf_update_ehdr"); -- if (!elf_flagelf(elfout, ELF_C_SET, ELF_F_LAYOUT)) -- kpfatalerror("elf_flagelf"); -- if (elf_update(elfout, ELF_C_WRITE) < 0) -- kpfatalerror("elf_update"); -- if (elf_end(elfout)) -- kpfatalerror("elf_end"); -+ if (!gelf_update_ehdr(elfout, &ehout)) { -+ kperr("Failed to do gelf_update_ehdr"); -+ return -1; -+ } -+ if (!elf_flagelf(elfout, ELF_C_SET, ELF_F_LAYOUT)) { -+ kperr("Failed to do elf_flagelf"); -+ return -1; -+ } -+ if (elf_update(elfout, ELF_C_WRITE) < 0) { -+ kperr("Failed to do elf_update"); -+ return -1; -+ } -+ if (elf_end(elfout)) { -+ kperr("Failed to do elf_end"); -+ return -1; -+ } - return 0; - } - -@@ -220,14 +270,20 @@ kpatch_get_symbol_offset_rel_section(kpatch_objinfo *oi, - return 0; - } - -- if (!(scn = elf_getscn(oi->elf, sym->st_shndx))) -- kpfatalerror("elf_getscn origbin"); -- if (!gelf_getshdr(scn, &shdr)) -- kpfatalerror("gelf_getshdr origbin"); -+ if (!(scn = elf_getscn(oi->elf, sym->st_shndx))) { -+ kperr("Failed to get elf_getscn origbin"); -+ return -1; -+ } - -- if (shdr.sh_addr > sym->st_value) -- kpfatalerror("TODO: shared libraries???\n"); -+ if (!gelf_getshdr(scn, &shdr)) { -+ kperr("Failed to get gelf_getshdr origbin"); -+ return -1; -+ } - -+ if (shdr.sh_addr > sym->st_value) { -+ kperr("Shared libraries is not support"); -+ return -1; -+ } - *symoff = sym->st_value - shdr.sh_addr; - t = kpatch_objinfo_strptr(oi, SECTION_NAME, shdr.sh_name); - if (t == NULL) -@@ -248,12 +304,16 @@ kpatch_get_original_symbol_loc(kpatch_objinfo *origbin, - size_t i; - const char *tmp; - -- if (kpatch_objinfo_load(origbin) < 0) -- kpfatalerror("kpatch_load_object_info"); -+ if (kpatch_objinfo_load(origbin) < 0) { -+ kperr("Failed to do kpatch_load_object_info"); -+ return SECTION_NOT_FOUND; -+ } - - for (i = 0; i < origbin->nsym; i++) { -- if (!gelf_getsym(origbin->symtab, i, &s)) -- kpfatalerror("gelf_getsym origbin\n"); -+ if (!gelf_getsym(origbin->symtab, i, &s)) { -+ kperr("Failed to do gelf_getsym origbin\n"); -+ return SECTION_NOT_FOUND; -+ } - tmp = kpatch_objinfo_strptr(origbin, SYMBOL_NAME, s.st_name); - if (tmp != NULL && !strcmp(tmp, symname)) { - sym = &s; -@@ -266,7 +326,7 @@ kpatch_get_original_symbol_loc(kpatch_objinfo *origbin, - if (kpatch_get_symbol_offset_rel_section(origbin, sym, symoff, secname) == 0) - return SECTION_OFFSET_FOUND; - -- return -1; -+ return SECTION_NOT_FOUND; - } - - static int -@@ -280,8 +340,10 @@ kpatch_get_local_symbol_loc(kpatch_objinfo *oi, - size_t i; - - for (i = 0; i < oi->nsym; i++) { -- if (!gelf_getsym(oi->symtab, i, §ionsym)) -- kpfatalerror("gelf_getsym\n"); -+ if (!gelf_getsym(oi->symtab, i, §ionsym)) { -+ kperr("Failed to do gelf_getsym\n"); -+ return SECTION_NOT_FOUND; -+ } - if (GELF_ST_TYPE(sectionsym.st_info) != STT_SECTION) - continue; - if (sectionsym.st_shndx == sym->st_shndx) -@@ -290,10 +352,11 @@ kpatch_get_local_symbol_loc(kpatch_objinfo *oi, - if (i == oi->nsym) - return SECTION_NOT_FOUND; - -- if (kpatch_get_symbol_offset_rel_section(oi, sym, symoff, secname)) -- return -1; -+ if (kpatch_get_symbol_offset_rel_section(oi, sym, symoff, secname) < 0) -+ return SECTION_NOT_FOUND; - - *section_symn = i; -+ - return SECTION_OFFSET_FOUND; - } - -@@ -337,9 +400,9 @@ kpatch_fixup_rela_one(kpatch_objinfo *origbin, - - if (GELF_ST_TYPE(sym->st_info) == STT_TLS) { - rv = kpatch_arch_fixup_rela_update_tls(origbin, patch, rel, -- sym, sh_text, text); -+ sym, sh_text, text); - if (rv < 0) -- kpfatalerror("kpatch_fixup_rela_update_tls"); -+ kperr("Faileed to do kpatch_fixup_rela_update_tls"); - - return rv; - } -@@ -371,9 +434,10 @@ kpatch_fixup_rela_one(kpatch_objinfo *origbin, - status = kpatch_get_local_symbol_loc(patch, - sym, &offset, &secname, §ion_symn); - -- if (status == SECTION_NOT_FOUND) -- kpfatalerror("unable to find local sym's section"); -- -+ if (status == SECTION_NOT_FOUND) { -+ kperr("Unable to find local sym's section"); -+ return -1; -+ } - rel->r_info = GELF_R_INFO( - section_symn, - GELF_R_TYPE(rel->r_info)); -@@ -404,7 +468,6 @@ kpatch_fixup_rela_one(kpatch_objinfo *origbin, - off = rel->r_offset - sh_text->sh_addr - 2; - - if (text[off] == MOV_INSN) { -- //kpdebug("changing mov to lea at %lx\n", off); - kpinfo("changing mov to lea at %lx\n", off); - text[off] = LEA_INSN; - } -@@ -442,26 +505,36 @@ kpatch_fixup_rela(kpatch_objinfo *origbin, - - nrel = sh_rel->sh_size / sh_rel->sh_entsize; - relatab = elf_getdata(scn_rel, NULL); -- if (relatab == NULL) -- kpfatalerror("elf_getdata(relatab)"); -+ if (relatab == NULL) { -+ kperr("Failed to do get relatab"); -+ return -1; -+ } - - scn_text = kpatch_objinfo_getshdr(patch, sh_rel->sh_info, &sh_text); -- if (scn_text == NULL) -- kpfatalerror("kpatch_objinfo_getshdr(scn_text)"); -+ if (scn_text == NULL) { -+ kperr("Failed to get scn_text"); -+ return -1; -+ } - - data_text = elf_getdata(scn_text, NULL); -- if (data_text == NULL) -- kpfatalerror("data_text == NULL"); -+ if (data_text == NULL) { -+ kperr("Failed to get data_text"); -+ return -1; -+ } - - for (i = 0; i < nrel; i++) { - GElf_Rela rel; - GElf_Sym sym; - -- if (!gelf_getrela(relatab, i, &rel)) -- kpfatalerror("gelf_getrela"); -+ if (!gelf_getrela(relatab, i, &rel)) { -+ kperr("Failed to do gelf_getrela"); -+ return -1; -+ } - -- if (!gelf_getsym(symtab, GELF_R_SYM(rel.r_info), &sym)) -- kpfatalerror("gelf_getsym"); -+ if (!gelf_getsym(symtab, GELF_R_SYM(rel.r_info), &sym)) { -+ kperr("Failed to do gelf_getsym"); -+ return -1; -+ } - - rv = kpatch_fixup_rela_one(origbin, patch, &rel, &sym, - &sh_text, data_text->d_buf); -@@ -469,12 +542,16 @@ kpatch_fixup_rela(kpatch_objinfo *origbin, - if (rv < 0) - return rv; - -- if (!gelf_update_rela(relatab, i, &rel)) -- kpfatalerror("gelf_update_rela"); -+ if (!gelf_update_rela(relatab, i, &rel)) { -+ kperr("Failed to do gelf_update_rela"); -+ return -1; -+ } - - if (rv && -- !gelf_update_sym(symtab, GELF_R_SYM(rel.r_info), &sym)) -- kpfatalerror("gelf_update_sym"); -+ !gelf_update_sym(symtab, GELF_R_SYM(rel.r_info), &sym)) { -+ kperr("Failed to do gelf_update_sym"); -+ return -1; -+ } - } - - elf_flagdata(data_text, ELF_C_SET, ELF_F_DIRTY); -@@ -491,10 +568,15 @@ static int kpatch_rel_fixup(Elf *elf_origbin, Elf *elf_patch) - kpatch_objinfo patch = OBJINFO_INIT(elf_patch); - - -- if (kpatch_objinfo_load(&origbin)) -- kpfatalerror("kpatch_load_object_info"); -- if (kpatch_objinfo_load(&patch)) -- kpfatalerror("kpatch_load_object_info"); -+ if (kpatch_objinfo_load(&origbin)) { -+ kperr("Failed to do kpatch_load_object_info"); -+ return -1; -+ } -+ -+ if (kpatch_objinfo_load(&patch)) { -+ kperr("Failed to do kpatch_load_object_info"); -+ return -1; -+ } - - /* - * We redo relocations that are made against local machine-generated -@@ -510,24 +592,36 @@ static int kpatch_rel_fixup(Elf *elf_origbin, Elf *elf_patch) - scn_patch = kpatch_objinfo_getshdr(&patch, i, &sh_patch); - - if (sh_patch.sh_type == SHT_RELA) -- if (kpatch_fixup_rela(&origbin, &patch, scn_patch, &sh_patch)) -- kpfatalerror("kpatch_fixup_rela"); -+ if (kpatch_fixup_rela(&origbin, &patch, scn_patch, &sh_patch) < 0) { -+ kperr("Failed to do kpatch_fixup_rela"); -+ return -1; -+ } - -- if (sh_patch.sh_type == SHT_REL) -- kpfatalerror("TODO: handle SHT_REL\n"); -+ if (sh_patch.sh_type == SHT_REL) { -+ kperr("Unable to handle SHT_REL\n"); -+ return -1; -+ } - - /* We had to update section headers otherwise updating a symbol - causes libelf to erase them completely, possibly a bug */ -- if (!gelf_update_shdr(scn_patch, &sh_patch)) -- kpfatalerror("gelf_update_shdr"); -+ if (!gelf_update_shdr(scn_patch, &sh_patch)) { -+ kperr("Failed to do gelf_update_shdr"); -+ return -1; -+ } - } - -- if (!elf_flagelf(elf_patch, ELF_C_SET, ELF_F_LAYOUT)) -- kpfatalerror("elf_flagelf"); -- if (elf_update(elf_patch, ELF_C_WRITE) < 0) -- kpfatalerror("elf_update"); -- if (elf_end(elf_patch)) -- kpfatalerror("elf_end"); -+ if (!elf_flagelf(elf_patch, ELF_C_SET, ELF_F_LAYOUT)) { -+ kperr("Failed to do elf_flagelf"); -+ return -1; -+ } -+ if (elf_update(elf_patch, ELF_C_WRITE) < 0) { -+ kperr("Failed to do elf_update"); -+ return -1; -+ } -+ if (elf_end(elf_patch)) { -+ kperr("Failed to do elf_end"); -+ return -1; -+ } - return 0; - } - -@@ -549,19 +643,24 @@ kpatch_rel_offset_to_relative(kpatch_objinfo *patch, - &sh_patch); - - if (sh_patch.sh_addr == 0) -- return 1; -+ return 0; - - for (i = 0; i < nrel; i++) { - GElf_Rela rel; - -- if (!gelf_getrela(data, i, &rel)) -- kpfatalerror("gelf_getrela"); -+ if (!gelf_getrela(data, i, &rel)) { -+ kperr("Failed to do gelf_getrela"); -+ return -1; -+ } - - rel.r_offset -= sh_patch.sh_addr; -- if (!gelf_update_rela(data, i, &rel)) -- kpfatalerror("gelf_update_rela"); -+ if (!gelf_update_rela(data, i, &rel)) { -+ kperr("Failed to do gelf_update_rela"); -+ return -1; -+ } - } -- return 1; -+ -+ return 0; - } - - /* Undo symbol values from absolute binary offset back to relative -@@ -572,15 +671,15 @@ kpatch_rel_symbols_to_relative(kpatch_objinfo *patch) - { - GElf_Shdr shdr; - Elf_Scn *scn; -- - size_t i, shndx = SHN_UNDEF; - - for (i = 0; i < patch->nsym; i++) { - GElf_Sym s; - -- if (!gelf_getsym(patch->symtab, i, &s)) -- kpfatalerror("gelf_getsym"); -- -+ if (!gelf_getsym(patch->symtab, i, &s)) { -+ kperr("Failed to do gelf_getsym"); -+ return -1; -+ } - if (s.st_shndx == SHN_UNDEF || - s.st_shndx >= SHN_LORESERVE || - GELF_ST_TYPE(s.st_info) == STT_TLS || -@@ -590,8 +689,10 @@ kpatch_rel_symbols_to_relative(kpatch_objinfo *patch) - if (shndx != s.st_shndx) { - scn = kpatch_objinfo_getshdr(patch, s.st_shndx, - &shdr); -- if (scn == NULL) -- kpfatalerror("kpatch_objinfo_getshdr"); -+ if (scn == NULL) { -+ kperr("Failed to get scn"); -+ return -1; -+ } - shndx = s.st_shndx; - } - -@@ -599,11 +700,13 @@ kpatch_rel_symbols_to_relative(kpatch_objinfo *patch) - continue; - - s.st_value -= shdr.sh_addr; -- if (!gelf_update_sym(patch->symtab, i, &s)) -- kpfatalerror("gelf_update_sym"); -+ if (!gelf_update_sym(patch->symtab, i, &s)) { -+ kperr("Failed to update sym"); -+ return -1; -+ } - } - -- return 1; -+ return 0; - } - - static int * -@@ -611,7 +714,8 @@ map_patch_to_orig_sections(kpatch_objinfo *origbin, - kpatch_objinfo *patch) - { - const char *patch_scnname, *orig_scnname; -- int *scn_mapping, *reverse_mapping; -+ int *scn_mapping = NULL; -+ int *reverse_mapping = NULL; - size_t iorig, ipatch; - GElf_Shdr sh_orig, sh_patch; - -@@ -619,17 +723,23 @@ map_patch_to_orig_sections(kpatch_objinfo *origbin, - if (scn_mapping == NULL) - return NULL; - -- if (kpatch_objinfo_load(origbin) < 0) -- kpfatalerror("kpatch_load_object_info"); -+ if (kpatch_objinfo_load(origbin) < 0) { -+ kperr("Failed to do kpatch_load_object_info"); -+ goto cleanup; -+ } - -- if (kpatch_objinfo_load(patch) < 0) -- kpfatalerror("kpatch_load_object_info"); -+ if (kpatch_objinfo_load(patch) < 0) { -+ kperr("Failed to do kpatch_load_object_info"); -+ goto cleanup; -+ } - - for (iorig = 1, ipatch = 1; iorig < origbin->shnum; iorig++) { -- if (kpatch_objinfo_getshdr(origbin, iorig, &sh_orig) == NULL) -- kpfatalerror("kpatch_objinfo_getshdr"); -+ if (kpatch_objinfo_getshdr(origbin, iorig, &sh_orig) == NULL) { -+ kperr("Failed to do kpatch_objinfo_getshdr"); -+ goto cleanup; -+ } - -- if (0 == (sh_orig.sh_flags & SHF_ALLOC)) -+ if ((sh_orig.sh_flags & SHF_ALLOC) == 0) - continue; - - orig_scnname = kpatch_objinfo_strptr(origbin, -@@ -637,8 +747,10 @@ map_patch_to_orig_sections(kpatch_objinfo *origbin, - sh_orig.sh_name); - - do { -- if (kpatch_objinfo_getshdr(patch, ipatch, &sh_patch) == NULL) -- kpfatalerror("kpatch_objinfo_getshdr"); -+ if (kpatch_objinfo_getshdr(patch, ipatch, &sh_patch) == NULL) { -+ kperr("Failed to do kpatch_objinfo_getshdr"); -+ goto cleanup; -+ } - patch_scnname = kpatch_objinfo_strptr(patch, SECTION_NAME, sh_patch.sh_name); - kpdebug("%s %s", orig_scnname, patch_scnname); - } while (strcmp(orig_scnname, patch_scnname) != 0 && -@@ -659,8 +771,7 @@ map_patch_to_orig_sections(kpatch_objinfo *origbin, - - reverse_mapping = calloc(patch->shnum, sizeof(*reverse_mapping)); - if (reverse_mapping == NULL) { -- free(scn_mapping); -- return NULL; -+ goto cleanup; - } - - for (iorig = 1; iorig < origbin->shnum; iorig++) { -@@ -669,8 +780,8 @@ map_patch_to_orig_sections(kpatch_objinfo *origbin, - reverse_mapping[scn_mapping[iorig]] = iorig; - } - -+cleanup: - free(scn_mapping); -- - return reverse_mapping; - } - -@@ -681,33 +792,44 @@ kpatch_rel_copy_sections_addr(kpatch_objinfo *origbin, kpatch_objinfo *patch) - int *scn_mapping; - Elf_Scn *scn_patch, *scn_orig; - GElf_Shdr sh_patch, sh_orig; -+ int ret = -1; - - scn_mapping = map_patch_to_orig_sections(origbin, patch); -- if (scn_mapping == NULL) -- kpfatalerror("map_patch_to_orig_sections"); -+ if (scn_mapping == NULL) { -+ kperr("Failed to do map_patch_to_orig_sections"); -+ return -1; -+ } - - for (i = 1; i < patch->shnum; i++) { - if (scn_mapping[i] == 0) - continue; - - scn_patch = kpatch_objinfo_getshdr(patch, i, &sh_patch); -- if (scn_patch == NULL) -- kpfatalerror("kpatch_objinfo_getshdr"); -+ if (scn_patch == NULL) { -+ kperr("Failed to get scn_patch"); -+ goto cleanup; -+ } - - scn_orig = kpatch_objinfo_getshdr(origbin, scn_mapping[i], - &sh_orig); -- if (scn_orig == NULL) -- kpfatalerror("kpatch_objinfo_getshdr"); -+ if (scn_orig == NULL) { -+ kperr("Failed to get scn_orig"); -+ goto cleanup; -+ } - - sh_patch.sh_addr = sh_orig.sh_addr; - -- if (!gelf_update_shdr(scn_patch, &sh_patch)) -- kpfatalerror("gelf_update_shdr"); -+ if (!gelf_update_shdr(scn_patch, &sh_patch)) { -+ kperr("Fail to update shdr"); -+ goto cleanup; -+ } - } - -- free(scn_mapping); -+ ret = 0; - -- return 1; -+cleanup: -+ free(scn_mapping); -+ return ret; - } - - static int -@@ -719,48 +841,73 @@ kpatch_undo_link(Elf *elf_origbin, Elf *elf_patch) - kpatch_objinfo origbin = OBJINFO_INIT(elf_origbin); - kpatch_objinfo patch = OBJINFO_INIT(elf_patch); - -- if (kpatch_objinfo_load(&origbin) < 0) -- kpfatalerror("kpatch_objinfo_load"); -+ if (kpatch_objinfo_load(&origbin) < 0) { -+ kperr("Failed to load origbin"); -+ return -1; -+ } - -- if (kpatch_objinfo_load(&patch) < 0) -- kpfatalerror("kpatch_objinfo_load"); -+ if (kpatch_objinfo_load(&patch) < 0) { -+ kperr("Failed to load patch"); -+ return -1; -+ } - - /* Reset relocations offets and find symbol section */ - for (i = 1; i < patch.shnum; i++) { - scn_rel = kpatch_objinfo_getshdr(&patch, i, &sh_rel); -- if (scn_rel == NULL) -- kpfatalerror("kpatch_objinfo_getshdr"); -+ if (scn_rel == NULL) { -+ kperr("Failed to get scn_rel"); -+ return -1; -+ } - - if (sh_rel.sh_type == SHT_RELA) { -- if (!kpatch_rel_offset_to_relative(&patch, scn_rel, -- &sh_rel)) -- kpfatalerror("kpatch_rel_undo_offset_rela"); -+ if (kpatch_rel_offset_to_relative(&patch, scn_rel, -+ &sh_rel) < 0) { -+ kperr("Failed to do kpatch_rel_undo_offset_rela"); -+ return -1; -+ } -+ } -+ if (sh_rel.sh_type == SHT_REL) { -+ kperr("SHT_REL is not support"); -+ return -1; - } -- if (sh_rel.sh_type == SHT_REL) -- kpfatalerror("TODO: handle SHT_REL"); - } - - /* Redo symbols' values to section-relative */ -- if (!kpatch_rel_symbols_to_relative(&patch)) -- kpfatalerror("kpatch_rel_symbol_to_relative"); -+ if (kpatch_rel_symbols_to_relative(&patch) < 0) { -+ kperr("Failed to do kpatch_rel_symbol_to_relative"); -+ return -1; -+ } - - /* Copy section `sh_addr'eses */ -- if (!kpatch_rel_copy_sections_addr(&origbin, &patch)) -- kpfatalerror("kpatch_rel_copy_sections_addr"); -+ if (kpatch_rel_copy_sections_addr(&origbin, &patch) < 0) { -+ kperr("Failed to do kpatch_rel_copy_sections_addr"); -+ return -1; -+ } - - /* Update object type */ - patch.ehdr.e_type = ET_REL; - patch.ehdr.e_phoff = 0; - patch.ehdr.e_phnum = 0; -- if (!gelf_update_ehdr(patch.elf, &patch.ehdr)) -- kpfatalerror("gelf_update_ehdr"); -- -- if (!elf_flagelf(patch.elf, ELF_C_SET, ELF_F_LAYOUT)) -- kpfatalerror("elf_flagelf"); -- if (elf_update(patch.elf, ELF_C_WRITE) < 0) -- kpfatalerror("elf_update"); -- if (elf_end(patch.elf)) -- kpfatalerror("elf_end"); -+ if (!gelf_update_ehdr(patch.elf, &patch.ehdr)) { -+ kperr("Failed to update ehdr"); -+ return -1; -+ } -+ -+ if (!elf_flagelf(patch.elf, ELF_C_SET, ELF_F_LAYOUT)) { -+ kperr("Failed to do elf_flagelf"); -+ return -1; -+ } -+ -+ if (elf_update(patch.elf, ELF_C_WRITE) < 0) { -+ kperr("Failed to update elf"); -+ return -1; -+ } -+ -+ if (elf_end(patch.elf)) { -+ kperr("Failed to do elf_end"); -+ return -1; -+ } -+ - return 0; - } - -@@ -796,6 +943,9 @@ int main(int argc, char *argv[]) - { - Elf *elf1 = NULL, *elf2 = NULL; - int ch, mode = 0; -+ int fd1 = -1; -+ int fd2 = -1; -+ int ret = -1; - - while ((ch = getopt_long(argc, argv, "+o:sru", long_opts, 0)) != -1) { - switch (ch) { -@@ -812,8 +962,10 @@ int main(int argc, char *argv[]) - return usage(); - } - } -- if (!mode) -+ -+ if (!mode) { - return usage(); -+ } - - argc -= optind; - argv += optind; -@@ -832,17 +984,35 @@ int main(int argc, char *argv[]) - - elf_version(EV_CURRENT); - -- elf1 = kpatch_open_elf(argv[0], 0); -- if (argc == 2) -- elf2 = kpatch_open_elf(argv[1], (mode == MODE_STRIP)); -- -- if (mode == MODE_STRIP) -- return kpatch_strip(elf1, elf2); -- if (mode == MODE_REL_FIXUP) -- return kpatch_rel_fixup(elf1, elf2); -- if (mode == MODE_UNDO_LINK) -- return kpatch_undo_link(elf1, elf2); --/* --*/ -- return 0; -+ elf1 = kpatch_open_elf(argv[0], 0, &fd1); -+ if (elf1 == NULL) { -+ goto cleanup; -+ } -+ -+ if (argc == 2) { -+ elf2 = kpatch_open_elf(argv[1], (mode == MODE_STRIP), &fd2); -+ if (elf2 == NULL) { -+ goto cleanup; -+ } -+ } -+ -+ switch (mode) { -+ case MODE_STRIP: -+ ret = kpatch_strip(elf1, elf2); -+ break; -+ case MODE_REL_FIXUP: -+ ret = kpatch_rel_fixup(elf1, elf2); -+ break; -+ case MODE_UNDO_LINK: -+ ret = kpatch_undo_link(elf1, elf2); -+ break; -+ default: -+ break; -+ } -+ -+cleanup: -+ close(fd1); -+ close(fd2); -+ -+ return ret; - } --- -2.27.0 - diff --git a/0086-libcare-patch-make-check-return-for-each-patch-make-.patch b/0086-libcare-patch-make-check-return-for-each-patch-make-.patch deleted file mode 100644 index bbf254e..0000000 --- a/0086-libcare-patch-make-check-return-for-each-patch-make-.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 24688dafde238672bfd765faaf0fe7b65fd5cec6 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Mon, 22 Mar 2021 20:10:37 +0800 -Subject: [PATCH 086/118] libcare-patch-make: check return for each patch-make - stage - -We should check return for each patch-make stage other than -going next with errors. - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/libcare-patch-make | 18 +++++++++++++++++- - 1 file changed, 17 insertions(+), 1 deletion(-) - -diff --git a/src/libcare-patch-make b/src/libcare-patch-make -index 3e5c7c6..aab6845 100755 ---- a/src/libcare-patch-make -+++ b/src/libcare-patch-make -@@ -1,4 +1,4 @@ --#!/bin/sh -e -+#!/bin/sh - - usage() { - cat<<'EOF' -@@ -152,12 +152,28 @@ build_kpatches() { - chmod u+w "${origexec}" "${patchedexec}" - $KPATCH_PATH/kpatch_strip --strip "${patchedexec}" \ - "${patchedexec}.stripped" >/dev/null -+ if [ $? -ne 0 ];then -+ echo "Failed to do stripped." -+ exit 1 -+ fi - $KPATCH_PATH/kpatch_strip --rel-fixup "$origexec" \ - "${patchedexec}.stripped" || continue -+ if [ $? -ne 0 ];then -+ echo "Failed to do relocation fixup." -+ exit 1 -+ fi - /usr/bin/strip --strip-unneeded "${patchedexec}.stripped" -+ if [ $? -ne 0 ];then -+ echo "Failed to do stripped unneeded section." -+ exit 1 -+ fi - $KPATCH_PATH/kpatch_strip --undo-link "$origexec" "${patchedexec}.stripped" - $KPATCH_PATH/kpatch_make -b "$buildid" -i "$patch_id" \ - "${patchedexec}.stripped" -o "${patchedexec}.kpatch" -+ if [ $? -ne 0 ];then -+ echo "Failed to make patch." -+ exit 1 -+ fi - cp "${patchedexec}.kpatch" "${LPMAKE_PATCHROOT}"/${buildid}.kpatch - echo "patch for ${origexec} is in ${LPMAKE_PATCHROOT}/${buildid}.kpatch" - done --- -2.27.0 - diff --git a/0087-kpatch-clear-code-checker-warnings.patch b/0087-kpatch-clear-code-checker-warnings.patch deleted file mode 100644 index 8667624..0000000 --- a/0087-kpatch-clear-code-checker-warnings.patch +++ /dev/null @@ -1,125 +0,0 @@ -From e09d09ceaec64187ad5cab455284dc8cdc89044a Mon Sep 17 00:00:00 2001 -From: Hao Wang -Date: Mon, 22 Mar 2021 21:52:37 +0800 -Subject: [PATCH 087/118] kpatch: clear code checker warnings - -clear code checker warnings for: - src/kpatch_make.c - src/kpatch_process.c - -Signed-off-by: Hao Wang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_make.c | 28 ++++++++++++++++++---------- - src/kpatch_process.c | 5 ++++- - 2 files changed, 22 insertions(+), 11 deletions(-) - -diff --git a/src/kpatch_make.c b/src/kpatch_make.c -index 348e979..1185300 100644 ---- a/src/kpatch_make.c -+++ b/src/kpatch_make.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.12 - kpatch: clear code checker warnings -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.11 - kpatch: clear code checker warnings - * Huawei Technologies Co., Ltd. - * -@@ -83,9 +86,9 @@ int main(int argc, char **argv) - int fdo = 1; - void *buf; - struct stat st; -- const char *buildid = NULL; -- const char *outputname = NULL; -- const char *patch_id = NULL; -+ char *buildid = NULL; -+ char *outputname = NULL; -+ char *patch_id = NULL; - - while ((opt = getopt(argc, argv, "db:o:i:v:s:")) != -1) { - switch (opt) { -@@ -95,21 +98,21 @@ int main(int argc, char **argv) - case 'b': - if (buildid) { - kplogerror("duplicate inputted buildid\n"); -- return -1; -+ goto cleanup; - } - buildid = strdup(optarg); - break; - case 'o': - if (outputname) { - kplogerror("duplicate inputted outputname\n"); -- return -1; -+ goto cleanup; - } - outputname = strdup(optarg); - break; - case 'i': - if (patch_id) { - kplogerror("duplicate inputted patch_id\n"); -- return -1; -+ goto cleanup; - } - patch_id = strdup(optarg); - break; -@@ -139,23 +142,28 @@ int main(int argc, char **argv) - goto cleanup; - } - buf = mmap(NULL, st.st_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd1, 0); -- if (buf == MAP_FAILED) -+ if (buf == MAP_FAILED) { - kplogerror("mmap error %d", errno); -- close(fd1); -+ goto cleanup; -+ } - - fdo = 1; - if (outputname) { - fdo = open(outputname, O_CREAT | O_TRUNC | O_WRONLY, 0660); - if (fdo == -1) { - kplogerror("Can't open output file '%s'\n", outputname); -- goto cleanup; -+ goto unmap; - } - } - ret = make_file(fdo, buf, st.st_size, buildid, patch_id); -+unmap: -+ munmap(buf, st.st_size); - - cleanup: - close(fdo); -- munmap(buf, st.st_size); - close(fd1); -+ free(buildid); -+ free(outputname); -+ free(patch_id); - return ret; - } -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index 64d9f38..f87003f 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.12 - kpatch: clear code checker warnings -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.11 - kpatch: fix code checker warning - * Huawei Technologies Co., Ltd. - * -@@ -876,7 +879,7 @@ process_get_comm(kpatch_process_t *proc) - return -1; - realpath[ret - 1] = '\0'; - bn = basename(realpath); -- strncpy(path, bn, sizeof(path)); -+ strncpy(path, bn, sizeof(path) - 1); - if ((c = strstr(path, " (deleted)"))) - *c = '\0'; - --- -2.27.0 - diff --git a/0088-kpatch_make-initialize-fd-to-avoid-unexpected-close.patch b/0088-kpatch_make-initialize-fd-to-avoid-unexpected-close.patch deleted file mode 100644 index 792e3cb..0000000 --- a/0088-kpatch_make-initialize-fd-to-avoid-unexpected-close.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 12ddea7af86cb37cdc7de2cf51840ff13ac03a6e Mon Sep 17 00:00:00 2001 -From: Hao Wang -Date: Tue, 23 Mar 2021 14:03:57 +0800 -Subject: [PATCH 088/118] kpatch_make: initialize fd to avoid unexpected close - -Signed-off-by: Hao Wang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_make.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/src/kpatch_make.c b/src/kpatch_make.c -index 1185300..e2564ce 100644 ---- a/src/kpatch_make.c -+++ b/src/kpatch_make.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.12 - kpatch_make: initialize fd to avoid unexpected close -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.12 - kpatch: clear code checker warnings - * Huawei Technologies Co., Ltd. - * -@@ -82,8 +85,8 @@ int main(int argc, char **argv) - { - int ret = -1; - int opt; -- int fd1; -- int fdo = 1; -+ int fd1 = -1; -+ int fdo = -1; - void *buf; - struct stat st; - char *buildid = NULL; --- -2.27.0 - diff --git a/0089-kpatch_cc-Optimize-build_multiple-a-little-bit.patch b/0089-kpatch_cc-Optimize-build_multiple-a-little-bit.patch deleted file mode 100644 index de81699..0000000 --- a/0089-kpatch_cc-Optimize-build_multiple-a-little-bit.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 172bc9e8501b28e4ef35c7dc413c89fdc9870501 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Thu, 25 Mar 2021 16:43:03 +0800 -Subject: [PATCH 089/118] kpatch_cc: Optimize build_multiple() a little bit - -build_multiple() reuses newargc which makes code confused. -add another variable to represent the accumulated count. - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_cc.c | 23 ++++++++++++++++------- - 1 file changed, 16 insertions(+), 7 deletions(-) - -diff --git a/src/kpatch_cc.c b/src/kpatch_cc.c -index 7db8a36..da9b6c7 100644 ---- a/src/kpatch_cc.c -+++ b/src/kpatch_cc.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.12 - kpatch_cc: Optimize build_multiple() a little bit -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.11 - kpatch: fix code checker warning - * Huawei Technologies Co., Ltd. - * -@@ -844,6 +847,7 @@ static int build_multiple(void) - char aspath[PATH_MAX]; - int i, j, rv; - int newargc = argc - ninput_files + 1 + 2 + 1 + 1; -+ int argnum; - const char *newargv[newargc]; - - i = j = 0; -@@ -855,17 +859,22 @@ static int build_multiple(void) - - newargv[i++] = argv[j++]; - } -- newargc = i; -- newargv[newargc + 4] = NULL; - -- newargv[newargc + 2] = "-o"; -- newargv[newargc + 3] = aspath; -+ argnum = i; -+ if (argnum + 4 > newargc) { -+ kpccfatal("Failed to build multiple due to buffer overflow.\n"); -+ } -+ -+ newargv[argnum + 4] = NULL; -+ -+ newargv[argnum + 2] = "-o"; -+ newargv[argnum + 3] = aspath; - - for (i = 1; i < argc; i++) { - if (input_files[i] == NULL) - continue; - -- newargv[newargc + 1] = input_files[i]; -+ newargv[argnum + 1] = input_files[i]; - (void) get_assembler_filename(aspath, input_files[i]); - - switch (get_file_type(input_files[i])) { -@@ -883,13 +892,13 @@ passthrough_file: - if (!kpatch_gensrc_asm) - goto passthrough_file; - -- newargv[newargc + 0] = "-E"; -+ newargv[argnum + 0] = "-E"; - rv = run_cmd(newargv, NULL); - if (rv) - goto out; - break; - case SRC_FILE: -- newargv[newargc + 0] = "-S"; -+ newargv[argnum + 0] = "-S"; - rv = run_cmd(newargv, NULL); - if (rv) - goto out; --- -2.27.0 - diff --git a/0090-patch-correct-time-comsume-print.patch b/0090-patch-correct-time-comsume-print.patch deleted file mode 100644 index cc125a8..0000000 --- a/0090-patch-correct-time-comsume-print.patch +++ /dev/null @@ -1,128 +0,0 @@ -From 320b00ca36b68c06ed6cdd865788ba6c6b48c49b Mon Sep 17 00:00:00 2001 -From: Bihong Yu -Date: Mon, 12 Apr 2021 20:42:57 +0800 -Subject: [PATCH 090/118] patch: correct time comsume print - -In process_patch(), there is a case where the start_tv is not assigned -and it goes to the out_free branch which cause the wrong printing of the -frozen time. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_patch.c | 40 +++++++++++++++++++++++++++------------- - 1 file changed, 27 insertions(+), 13 deletions(-) - -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index 0b25bcb..20a158b 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.12 - patch: correct time comsume print -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - ptrace/process/patch: fix some bad code problem - * Huawei Technologies Co., Ltd. - * -@@ -22,6 +25,7 @@ - ******************************************************************************/ - - #include -+#include - #include - #include - #include -@@ -442,6 +446,7 @@ unpatch: - int process_patch(int pid, void *_data) - { - int ret; -+ bool is_calc_time = false; - kpatch_process_t _proc, *proc = &_proc; - struct patch_data *data = _data; - struct timeval start_tv, end_tv; -@@ -495,6 +500,7 @@ int process_patch(int pid, void *_data) - if (ret <= 0) - goto out_free; - -+ is_calc_time = true; - gettimeofday(&start_tv, NULL); - /* Finally, attach to process */ - ret = kpatch_process_attach(proc); -@@ -514,12 +520,13 @@ int process_patch(int pid, void *_data) - if (storage_execute_after_script(storage, proc) < 0) - kperr("after script failed\n"); - -- - out_free: - kpatch_process_free(proc); -- gettimeofday(&end_tv, NULL); -- frozen_time = GET_MICROSECONDS(end_tv, start_tv); -- kpinfo("PID '%d' process patch frozen_time is %ld microsecond\n", pid, frozen_time); -+ if (is_calc_time) { -+ gettimeofday(&end_tv, NULL); -+ frozen_time = GET_MICROSECONDS(end_tv, start_tv); -+ kpinfo("PID '%d' process patch frozen_time is %ld microsecond\n", pid, frozen_time); -+ } - - out: - if (ret < 0) { -@@ -705,6 +712,7 @@ kpatch_unapply_patches(kpatch_process_t *proc, - int process_unpatch(int pid, void *_data) - { - int ret; -+ bool is_calc_time = 0; - kpatch_process_t _proc, *proc = &_proc; - struct unpatch_data *data = _data; - char **buildids = data->buildids; -@@ -714,32 +722,38 @@ int process_unpatch(int pid, void *_data) - unsigned long frozen_time; - - ret = kpatch_process_init(proc, pid, /* start */ 0, /* send_fd */ -1); -- if (ret < 0) -- return -1; -+ if (ret < 0) { -+ kperr("cannot init process %d\n", pid); -+ goto out; -+ } - - kpatch_process_print_short(proc); - -+ is_calc_time = 1; - gettimeofday(&start_tv, NULL); - ret = kpatch_process_attach(proc); - if (ret < 0) -- goto out; -+ goto out_free; - - ret = kpatch_process_map_object_files(proc, patch_id); - if (ret < 0) -- goto out; -+ goto out_free; - - ret = kpatch_coroutines_find(proc); - if (ret < 0) -- goto out; -+ goto out_free; - - ret = kpatch_unapply_patches(proc, buildids, nbuildids, patch_id); - --out: -+out_free: - kpatch_process_free(proc); -- gettimeofday(&end_tv, NULL); -- frozen_time = GET_MICROSECONDS(end_tv, start_tv); -- kpinfo("PID '%d' process unpatch frozen_time is %ld microsecond\n", pid, frozen_time); -+ if (is_calc_time) { -+ gettimeofday(&end_tv, NULL); -+ frozen_time = GET_MICROSECONDS(end_tv, start_tv); -+ kpinfo("PID '%d' process unpatch frozen_time is %ld microsecond\n", pid, frozen_time); -+ } - -+out: - if (ret < 0) { - printf("Failed to cancel patches for %d\n", pid); - return ret; --- -2.27.0 - diff --git a/0091-tests-fix-tests-some-executing-problem.patch b/0091-tests-fix-tests-some-executing-problem.patch deleted file mode 100644 index 5ddf8d8..0000000 --- a/0091-tests-fix-tests-some-executing-problem.patch +++ /dev/null @@ -1,65 +0,0 @@ -From b8cfcc8cce22f7fa74b542532e4e819b204374fb Mon Sep 17 00:00:00 2001 -From: Bihong Yu -Date: Thu, 15 Apr 2021 21:34:51 +0800 -Subject: [PATCH 091/118] tests: fix tests some executing problem - -optimize libcare-server code and adapt run_tests.sh scripts. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - tests/makefile-patch-link.inc | 2 +- - tests/makefile-patch.inc | 2 +- - tests/run_tests.sh | 3 ++- - 3 files changed, 4 insertions(+), 3 deletions(-) - -diff --git a/tests/makefile-patch-link.inc b/tests/makefile-patch-link.inc -index 0a78dd9..5de8e3a 100644 ---- a/tests/makefile-patch-link.inc -+++ b/tests/makefile-patch-link.inc -@@ -10,7 +10,7 @@ $(TGT).kpatch: $(OBJ).o $(TGT) - # build kpatch - buildid=$(call get_buildid,$(TGT)); \ - $(KPATCH_MAKE) $(TGT).stripped -o $@ \ -- -b $${buildid}; \ -+ -b $${buildid} -i 0001; \ - cp -fs $@ $(OBJDIR)/$${buildid}.kpatch - - clean:: -diff --git a/tests/makefile-patch.inc b/tests/makefile-patch.inc -index 6da19eb..39ae0d7 100644 ---- a/tests/makefile-patch.inc -+++ b/tests/makefile-patch.inc -@@ -18,7 +18,7 @@ - - %.kpatch: %.undo-link % - buildid=$(call get_buildid,$(word 2,$^)) && \ -- $(KPATCH_MAKE) -b $${buildid} $< -o $@ && \ -+ $(KPATCH_MAKE) -b $${buildid} -i 0001 $< -o $@ && \ - cp -fs $@ $(OBJDIR)/$${buildid}.kpatch - - $(OBJDIR)/%.o: $(OBJDIR)/%.s -diff --git a/tests/run_tests.sh b/tests/run_tests.sh -index 2bdd303..ca65f9d 100755 ---- a/tests/run_tests.sh -+++ b/tests/run_tests.sh -@@ -83,7 +83,7 @@ grep_tail() { - libcare_server_init() { - SOCKPATH=$(mktemp --tmpdir -d)/test.sock - SERVER_LOG=$(mktemp --tmpdir) -- stdbuf -o 0 $LIBCARE_CTL -v server $SOCKPATH \ -+ stdbuf -o 0 $LIBCARE_SERVER -v $SOCKPATH \ - >$SERVER_LOG 2>&1 -Date: Sat, 17 Apr 2021 17:44:31 +0800 -Subject: [PATCH 092/118] gensrc: add test-mode and check whether the conf file - is empty - -The patch does the following things: - 1. add test-mode to remove the dependence on the environment - (/etc/libcare.conf) while runnig test cases; - 2. Check whether the conf file(/etc/libcare.conf) is empty during - make patch; - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_gensrc.c | 27 ++++++++++++++++++++++----- - tests/makefile-patch.inc | 6 +++--- - 2 files changed, 25 insertions(+), 8 deletions(-) - -diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c -index cdee133..602db3a 100644 ---- a/src/kpatch_gensrc.c -+++ b/src/kpatch_gensrc.c -@@ -49,7 +49,7 @@ static int nr_must_adapt_syms; - static int force_gotpcrel; - static int force_global; - --static char* patch_func_file_name = "/etc/libcare.conf"; -+static char* func_filter_config_file = "/etc/libcare.conf"; - - static int is_func_in_patch_func_file(FILE *fp, kpstr_t *sym) - { -@@ -74,24 +74,31 @@ static inline int in_syms_list(const char *filename, kpstr_t *sym, - const struct sym_desc *sym_arr, - int nr_syms, int cblock_type) - { -- int i, len, rv; -+ int i, c, len, rv; - - /* - * Since we need to ignore some unwanted function being patched, -- * so we will first check if there is a file called "patch_func_name". -+ * so we will first check if there is a file called "libcare.conf". - * If there isn't, we will continue as usual. - * If there is, we will ignore those function which is not in the file. - */ - if (cblock_type == CBLOCK_FUNC && sym_arr == ignore_syms) { -- FILE *fp = fopen(patch_func_file_name, "r"); -+ FILE *fp = fopen(func_filter_config_file, "r"); - if (fp == NULL) { - goto no_conf; - } - -+ c = fgetc(fp); -+ /* If file is empty or first line is '\n' or ' ', we think the file -+ * is not configured */ -+ if (c == EOF || c == '\n' || c == ' ') { -+ goto no_conf; -+ } -+ - rv = is_func_in_patch_func_file(fp, sym); - - if (fclose(fp) != 0) { -- kpfatal("Error in closing file %s\n", patch_func_file_name); -+ kpfatal("Error in closing file %s\n", func_filter_config_file); - } - - /* -@@ -1579,6 +1586,7 @@ static void usage(void) - kplog(LOG_ERR, " at a random 32-bit offset. Used in user-space patching."); - kplog(LOG_ERR, " --force-global - marks all function used in patch as global so the compiler will generate correct relocation"); - kplog(LOG_ERR, " for .kpatch.info section. Used in user-space patching."); -+ kplog(LOG_ERR, " --test-mode - currently running in a test environment, using test mode."); - kplog(LOG_ERR, "FLIST format:"); - kplog(LOG_ERR, " FLIST is comma separated list of function names which can be prepanded with filename where this function defined."); - exit(1); -@@ -1602,6 +1610,7 @@ struct option long_opts[] = { - {"arch", 1, 0, 'a'}, - {"input", 1, 0, 'i'}, - {"ouput", 1, 0, 'o'}, -+ {"test-mode", 0, 0, 't'}, - {"dbg-filter", 0, 0, 'f'}, - {"dbg-filter-eh-frame", 0, 0, DBG_FILTER_EH_FRAME}, - {"dbg-filter-gcc-except-table", 0, 0, DBG_FILTER_GCC_EXCEPTION_TABLE}, -@@ -1618,6 +1627,7 @@ struct option long_opts[] = { - int main(int argc, char **argv) - { - int err, ch, k = 0, dbgfilter = 0, dbgfilter_options = 0; -+ int test_mode = 0; - struct kp_file infile[2], outfile; - - memset(&outfile, 0, sizeof(struct kp_file)); -@@ -1647,6 +1657,9 @@ int main(int argc, char **argv) - if (!strcmp(optarg, "i686")) {arch = ARCH_X86_32; arch_bits = 32;} - if (!strcmp(optarg, "x86_64")) {arch = ARCH_X86_64; arch_bits = 64;} - break; -+ case 't': -+ test_mode = 1; -+ break; - case 'f': - dbgfilter = 1; - break; -@@ -1685,6 +1698,10 @@ int main(int argc, char **argv) - usage(); - } - -+ if (test_mode) { -+ func_filter_config_file = NULL; -+ } -+ - if (dbgfilter) { - if (k < 1) - kpfatal("input file must be specified\n"); -diff --git a/tests/makefile-patch.inc b/tests/makefile-patch.inc -index 39ae0d7..e3be242 100644 ---- a/tests/makefile-patch.inc -+++ b/tests/makefile-patch.inc -@@ -26,18 +26,18 @@ $(OBJDIR)/%.o: $(OBJDIR)/%.s - - $(OBJDIR)/%.orig.s: %.c - $(CC) $< -S -o - $(CFLAGS) | \ -- $(KPATCH_GENSRC) --dbg-filter --os=rhel6 -i - -o $@ -+ $(KPATCH_GENSRC) --dbg-filter --test-mode --os=rhel6 -i - -o $@ - - DIFFEXT ?= diff - - $(OBJDIR)/%.patched.s: %.c %.$(DIFFEXT) - patch -b -p1 < $(word 2,$^) - $(CC) $< -S -o - $(CFLAGS) | \ -- $(KPATCH_GENSRC) --dbg-filter --os=rhel6 -i - -o $@ -+ $(KPATCH_GENSRC) --dbg-filter --test-mode --os=rhel6 -i - -o $@ - mv $<.orig $< - - $(OBJDIR)/%.s: $(OBJDIR)/%.orig.s $(OBJDIR)/%.patched.s -- $(KPATCH_GENSRC) --os=rhel6 -i $< -i $(word 2,$^) --force-global \ -+ $(KPATCH_GENSRC) --os=rhel6 --test-mode -i $< -i $(word 2,$^) --force-global \ - --force-gotpcrel -o $@ - - lib%.patched: LDFLAGS += -shared --- -2.27.0 - diff --git a/0093-libcare-dump-add-libcare-dump-auxiliary-tools.patch b/0093-libcare-dump-add-libcare-dump-auxiliary-tools.patch deleted file mode 100644 index 5124428..0000000 --- a/0093-libcare-dump-add-libcare-dump-auxiliary-tools.patch +++ /dev/null @@ -1,207 +0,0 @@ -From eaa2f62ea98865bec127eb97c80563b600229b42 Mon Sep 17 00:00:00 2001 -From: Bihong Yu -Date: Tue, 20 Apr 2021 14:44:13 +0800 -Subject: [PATCH 093/118] libcare-dump: add libcare-dump auxiliary tools - -Sometimes we need a auxiliary tools to get kpatch information for -analysis, such as: whether the assembly code of the kpatch meets our -expectiations, what sysmbols are included by the kpatch, why the kpatch -did not take effect and so on. - -So we provide a libcare-dump tools to help analyze the content of the -kpatch, it can provide the following functions: - 1. convert kpatch file to elf file, so we can use readelf and - objdump tools to analyze it; - 2. print the kpatch header related information(to be realized); - -The libcare-dump tools use like this: - 1. libcare-dump -c -i -o ; - -For detailed usage, please using: libcare-dump --help. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/Makefile | 3 + - src/libcare-dump.c | 142 +++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 145 insertions(+) - create mode 100644 src/libcare-dump.c - -diff --git a/src/Makefile b/src/Makefile -index 464874f..102461b 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -4,6 +4,7 @@ TARGETS = kpatch_gensrc \ - libcare-cc \ - libcare-client \ - libcare-ctl \ -+ libcare-dump \ - libcare-stresstest - DEBUG = yes # comment out this line if not debug - -@@ -59,6 +60,7 @@ kpatch_strip: kpatch_strip.o kpatch_elf_objinfo.o kpatch_log.o arch_strip.o - kpatch_strip: LDLIBS = -lelf - - libcare-cc: kpatch_cc.o -+libcare-dump: libcare-dump.o - - $(TARGETS): %: - $(CC) -o $(@) $(^) $(STATIC_OPTS) $(LDLIBS) -@@ -118,5 +120,6 @@ install: all - $(INSTALL) -m 0500 kpatch_gensrc $(DESTDIR)/$(bindir)/kpatch_gensrc - $(INSTALL) -m 0500 kpatch_make $(DESTDIR)/$(bindir)/kpatch_make - $(INSTALL) -m 0500 kpatch_strip $(DESTDIR)/$(bindir)/kpatch_strip -+ $(INSTALL) -m 0500 libcare-dump $(DESTDIR)/$(bindir)/libcare-dump - - .PHONY: all clean test tests tests-gensrc tests-strip -diff --git a/src/libcare-dump.c b/src/libcare-dump.c -new file mode 100644 -index 0000000..4b9fa91 ---- /dev/null -+++ b/src/libcare-dump.c -@@ -0,0 +1,142 @@ -+/****************************************************************************** -+ * Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved. -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 and -+ * only version 2 as published by the Free Software Foundation. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Description: This is source file of libcare-dump tools. -+ * The libcare-dump tools use like this: -+ * 1. libcare-dump -c -i -o ; -+ * -+ * For detailed usage, please using: libcare-dump --help. -+ ******************************************************************************/ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "include/kpatch_file.h" -+ -+#define ELFMAG "\177ELF" -+#define SELFMAG 4 -+ -+void usage() -+{ -+ printf("Usage: libcare-dump -c -i -o \n"); -+ printf(" -c convert kpatch to elf\n"); -+ printf("\n"); -+ printf(" libcare-dump provide some auxiliary tools for help.\n"); -+ exit(EXIT_FAILURE); -+} -+ -+int kpatch_convert_to_elf(const char *input_file, const char *output_file) -+{ -+ int fdi = -1; -+ int fdo = -1; -+ int ret = -1; -+ int elf_size; -+ struct stat st; -+ void *buf = NULL; -+ -+ fdi = open(input_file, O_RDONLY); -+ if (fdi == -1) { -+ printf("Can't open kpatch file '%s'\n", input_file); -+ return -1; -+ } -+ if (fstat(fdi, &st) == -1) { -+ printf("Can't stat kpatch file\n"); -+ goto cleanup; -+ } -+ /* input kpatch file must bigger than sizeof(struct kpatch_file) */ -+ elf_size = st.st_size - sizeof(struct kpatch_file); -+ if (elf_size <= 0) { -+ printf("Invalid kpatch file '%s'\n", input_file); -+ goto cleanup; -+ } -+ -+ buf = mmap(NULL, st.st_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fdi, 0); -+ if (buf == MAP_FAILED) { -+ printf("Can't map kpatch file\n"); -+ goto cleanup; -+ } -+ -+ /* check elf format */ -+ if (memcmp((void *)(buf + sizeof(struct kpatch_file)), -+ ELFMAG, SELFMAG) != 0) { -+ printf("check elf format failed\n"); -+ goto unmap; -+ } -+ -+ fdo = open(output_file, O_CREAT | O_TRUNC | O_WRONLY, 0550); -+ if (fdo == -1) { -+ printf("Can't create output file '%s'\n", output_file); -+ goto unmap; -+ } -+ -+ /* write elf to output file */ -+ if (write(fdo, buf + sizeof(struct kpatch_file), elf_size) != elf_size) { -+ printf("Write error\n"); -+ goto unmap; -+ } -+ ret = 0; -+ -+ unmap: -+ munmap(buf, st.st_size); -+ -+ cleanup: -+ close(fdi); -+ close(fdo); -+ return ret; -+} -+ -+int main(int argc, char **argv) -+{ -+ int opt; -+ int ret = -1; -+ int convert_to_elf = 0; -+ char *input_file = NULL; -+ char *output_file = NULL; -+ -+ if (argc < 6) { -+ usage(); -+ } -+ -+ while ((opt = getopt(argc, argv, "i:o:c::")) != -1) { -+ switch (opt) { -+ case 'i': -+ input_file = strdup(optarg); -+ break; -+ case 'o': -+ output_file = strdup(optarg); -+ break; -+ case 'c': -+ convert_to_elf = 1; -+ break; -+ default: -+ usage(); -+ } -+ } -+ -+ if (input_file == NULL || output_file == NULL) { -+ usage(); -+ } -+ -+ if (convert_to_elf) { -+ ret = kpatch_convert_to_elf(input_file, output_file); -+ } -+ -+ free(input_file); -+ free(output_file); -+ return ret; -+} -+ --- -2.27.0 - diff --git a/0094-process-add-a-flag-to-mark-unpatch-target-elf.patch b/0094-process-add-a-flag-to-mark-unpatch-target-elf.patch deleted file mode 100644 index dd20d57..0000000 --- a/0094-process-add-a-flag-to-mark-unpatch-target-elf.patch +++ /dev/null @@ -1,103 +0,0 @@ -From 3fa9ceb911064a86d6e9d1b11bf735d95aac7486 Mon Sep 17 00:00:00 2001 -From: Bihong Yu -Date: Fri, 23 Apr 2021 14:45:46 +0800 -Subject: [PATCH 094/118] process: add a flag to mark unpatch target elf - -When we unpatch a process that multiple object has been patched, libcare -will try to unpatch all patch in function kpatch_unapply_patches() which -is not what we expected. In order to slove the problem, we add the -is_unpatch_target_elf flag to mark the unpatch target elf object, and -check the flags before unpatch for object who have been patched. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/include/kpatch_process.h | 3 +++ - src/kpatch_patch.c | 10 +++++----- - src/kpatch_process.c | 8 +++++--- - 3 files changed, 13 insertions(+), 8 deletions(-) - -diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h -index 7193430..56b4be1 100644 ---- a/src/include/kpatch_process.h -+++ b/src/include/kpatch_process.h -@@ -133,6 +133,9 @@ struct object_file { - - /* Is it an ELF or a mmap'ed regular file? */ - unsigned int is_elf:1; -+ -+ /* Is it an unpatch target */ -+ unsigned int is_unpatch_target_elf:1; - }; - - struct kpatch_process { -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index 20a158b..0f01663 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.12 - process: add a flag to mark unpatch target elf -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.12 - patch: correct time comsume print - * Huawei Technologies Co., Ltd. - * -@@ -689,12 +692,9 @@ kpatch_unapply_patches(kpatch_process_t *proc, - int ret; - size_t unapplied = 0; - -- ret = kpatch_process_associate_patches(proc, patch_id); -- if (ret < 0) -- return ret; -- - list_for_each_entry(o, &proc->objs, list) { -- if (o->is_patch || o->num_applied_patch == 0) -+ if (o->is_patch || o->num_applied_patch == 0 || -+ !o->is_unpatch_target_elf) - continue; - - if (!kpatch_should_unapply_patch(o, buildids, nbuildids)) -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index f87003f..837cadf 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -159,6 +159,7 @@ process_new_object(kpatch_process_t *proc, - memset(&o->ehdr, 0, sizeof(o->ehdr)); - o->phdr = NULL; - o->is_elf = 0; -+ o->is_unpatch_target_elf = 0; - o->dynsyms = NULL; - o->ndynsyms = 0; - o->dynsymnames = NULL; -@@ -414,7 +415,7 @@ kpatch_process_associate_patches(kpatch_process_t *proc, const char *patch_id) - { - struct object_file *o, *objpatch; - size_t found = 0; -- size_t found_target = 0; -+ size_t unpatch_target_elf_num = 0; - - list_for_each_entry(objpatch, &proc->objs, list) { - -@@ -439,7 +440,8 @@ kpatch_process_associate_patches(kpatch_process_t *proc, const char *patch_id) - list); - o->kpta = patchvma->inmem.start; - o->kpfile = objpatch->kpfile; -- found_target = 1; -+ o->is_unpatch_target_elf = 1; -+ unpatch_target_elf_num++; - } - - found++; -@@ -447,7 +449,7 @@ kpatch_process_associate_patches(kpatch_process_t *proc, const char *patch_id) - } - } - -- if (patch_id && !found_target) { -+ if (patch_id && !unpatch_target_elf_num) { - fprintf(stderr, "Failed to find target patch with patch_id=%s!\n", patch_id); - return -1; - } --- -2.27.0 - diff --git a/0095-strip-settle-libcare-dump-output-elf-file-can-not-be.patch b/0095-strip-settle-libcare-dump-output-elf-file-can-not-be.patch deleted file mode 100644 index 756d4e5..0000000 --- a/0095-strip-settle-libcare-dump-output-elf-file-can-not-be.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 8b57818a8888c0975dbb68fcf2c5145784a29450 Mon Sep 17 00:00:00 2001 -From: Bihong Yu -Date: Mon, 26 Apr 2021 14:59:03 +0800 -Subject: [PATCH 095/118] strip: settle libcare-dump output elf file can not be - objdump bug - -Fix the problem that the output elf file of the libcare-dump can't be -objdump. - -Objdump's bfd_check_format_matches() call bfd_elf64_object_p() to check -elf format, it will check whether the sh_link and the sh_info papameter -is legal. We only change the sh_type to SHT_NOBITS of elf section -header(GElf_Shdr), if the section we don't need. Then we use -/usr/bin/strip to strip unneed section, this will no change the section -of sh_type=SHT_NOBITS, resulting in wrong sh_link and sh_info value. - -To fix this problem, we change the sh_link and the sh_info to 0 together -if the section we don't need. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_strip.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c -index 4296954..98b7f1d 100644 ---- a/src/kpatch_strip.c -+++ b/src/kpatch_strip.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.12 - strip: settle libcare-dump output elf file can't be objdump bug -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.11 - return: make every return properly other than direct-exit - * Huawei Technologies Co., Ltd. - * -@@ -212,6 +215,8 @@ static int kpatch_strip(Elf *elfin, Elf *elfout) - } else { - kpinfo("don't need it\n"); - shout.sh_type = SHT_NOBITS; -+ shout.sh_link = 0; -+ shout.sh_info = 0; - } - if (!gelf_update_shdr(scnout, &shout)) { - kperr("Failed to do gelf_update_shdr need"); --- -2.27.0 - diff --git a/0096-kpatch_user-remove-stresstest-mode.patch b/0096-kpatch_user-remove-stresstest-mode.patch deleted file mode 100644 index b97be79..0000000 --- a/0096-kpatch_user-remove-stresstest-mode.patch +++ /dev/null @@ -1,198 +0,0 @@ -From 70c12d1e41f46b2a7edbababb096aefa3c87e39e Mon Sep 17 00:00:00 2001 -From: Bihong Yu -Date: Wed, 17 Nov 2021 22:23:08 -0500 -Subject: [PATCH 096/118] kpatch_user: remove stresstest mode - -Currently we do not need stresstest mode, remove it. - -Signed-off-by: Bihong Yu ---- - src/Makefile | 10 +---- - src/kpatch_user.c | 102 ---------------------------------------------- - 2 files changed, 1 insertion(+), 111 deletions(-) - -diff --git a/src/Makefile b/src/Makefile -index 102461b..cdba73c 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -4,8 +4,7 @@ TARGETS = kpatch_gensrc \ - libcare-cc \ - libcare-client \ - libcare-ctl \ -- libcare-dump \ -- libcare-stresstest -+ libcare-dump - DEBUG = yes # comment out this line if not debug - - SRC_PATH := $(shell pwd) -@@ -50,10 +49,6 @@ libcare-ctl: kpatch_user.o kpatch_storage.o kpatch_patch.o kpatch_elf.o kpatch_p - libcare-ctl: kpatch_process.o kpatch_common.o rbtree.o kpatch_log.o arch_process.o - libcare-ctl: LDLIBS += -lelf -lrt $(LIBUNWIND_LIBS) - --libcare-stresstest: kpatch_user-stresstest.o kpatch_storage.o kpatch_patch.o kpatch_elf.o kpatch_ptrace.o kpatch_coro.o arch_patch.o arch_elf.o arch_ptrace.o arch_coro.o --libcare-stresstest: kpatch_process.o kpatch_common.o rbtree.o kpatch_log.o arch_process.o --libcare-stresstest: LDLIBS += -lelf -lrt $(LIBUNWIND_LIBS) -- - libcare-client: libcare-client.o - - kpatch_strip: kpatch_strip.o kpatch_elf_objinfo.o kpatch_log.o arch_strip.o -@@ -77,9 +72,6 @@ endif - %.o: %.c deps/%.d - $(CC) $(CFLAGS) $(CFLAGS_$(*)) -o $(@) -c $(<) - --%-stresstest.o: %.c -- $(CC) -DSTRESS_TEST=1 $(CFLAGS) $(CFLAGS_$(*)) -o $(@) -c $(<) -- - clean: - rm -rf *.o core.* deps/*.d $(TARGETS) - for f in tests/gensrc/*.s; do \ -diff --git a/src/kpatch_user.c b/src/kpatch_user.c -index 8eaec58..7a3547a 100644 ---- a/src/kpatch_user.c -+++ b/src/kpatch_user.c -@@ -399,88 +399,6 @@ cmd_update(int argc, char *argv[]) - /* send_fd */ -1); - } - --#ifdef STRESS_TEST -- --struct test_data { -- int option_period; -- int stat_cycle_num; --} test_info = { .option_period = 0, .stat_cycle_num = 0 }; -- --static int --server_wait(int pid, int period) --{ -- struct timespec req, rem; -- int i; -- req.tv_sec = 0; -- req.tv_nsec = 1000*1000; -- for (i=0; i 0) -- close(fd); -- fd = -1; -- if (test_info.option_period == 0) -- return 0; -- delay = rand() % test_info.option_period; -- if (server_wait(pid, delay) < 0) -- return 0; -- -- while (processes_unpatch(pid, 0, 0, NULL) < 0) -- if (server_wait(pid, 1) < 0) -- return 0; -- test_info.stat_cycle_num++; -- -- delay = rand() % test_info.option_period; -- if (server_wait(pid, delay) < 0) -- return 0; -- } -- -- return 0; --} -- --static int cmd_stress_test(int fd, int argc, char *argv[]) --{ -- int child = fork(); -- if (child == 0) { -- int rv = server_stress_test(fd, argc, argv); -- exit(rv); -- } -- close(fd); -- return 0; --} -- --static int usage_stresstest() --{ -- fprintf(stderr, "usage: libcare-stresstest PERIOD(ms, 0 - only patch) [STORAGE ROOT]\n"); -- return -1; --} -- --#endif -- - static int - server_execute_cmd(int fd, int argc, char *argv[]) - { -@@ -491,11 +409,7 @@ server_execute_cmd(int fd, int argc, char *argv[]) - if (!strcmp(cmd, "execve")) - return cmd_execve_startup(fd, argc, argv, 1); - if (!strcmp(cmd, "startup")) { --#ifdef STRESS_TEST -- return cmd_stress_test(fd, argc, argv); --#else - return cmd_execve_startup(fd, argc, argv, 0); --#endif - } - if (!strcmp(cmd, "update")) - return cmd_update(argc, argv); -@@ -662,12 +576,6 @@ cmd_server(int argc, char *argv[]) - return -1; - } - --#ifdef STRESS_TEST -- if (sscanf(argv[0], "%d", &test_info.option_period) != 1) { -- kplogerror("Can't parse period from %s\n", argv[0]); -- } --#endif -- - sfd = server_bind_socket(argv[1]); - if (sfd < 0) - return sfd; -@@ -753,9 +661,6 @@ static int usage(const char *err) - { - if (err) - fprintf(stderr, "err: %s\n", err); --#ifdef STRESS_TEST -- return usage_stresstest(); --#endif - fprintf(stderr, "usage: libcare-ctl [options] [args]\n"); - fprintf(stderr, "\nOptions:\n"); - fprintf(stderr, " -v - verbose mode\n"); -@@ -804,12 +709,6 @@ int main(int argc, char *argv[]) - argc -= optind; - argv += optind; - --#ifdef STRESS_TEST -- if (argc < 3) -- return usage("not enough arguments."); -- signal(SIGCHLD, SIG_IGN); -- return cmd_server(argc, argv); --#else - if (argc < 1) - return usage("not enough arguments."); - -@@ -817,5 +716,4 @@ int main(int argc, char *argv[]) - return cmd_server(argc, argv); - else - return execute_cmd(argc, argv); --#endif - } --- -2.27.0 - diff --git a/0097-tests-Split-client-server-binary-into-devel.patch b/0097-tests-Split-client-server-binary-into-devel.patch deleted file mode 100644 index 49736da..0000000 --- a/0097-tests-Split-client-server-binary-into-devel.patch +++ /dev/null @@ -1,837 +0,0 @@ -From 559ddd4448671ce981f0735b4e3abaa3a96591d0 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Tue, 6 Apr 2021 14:47:12 +0800 -Subject: [PATCH 097/118] tests: Split client/server binary into devel - -We need to add baseline testcases when we build rpms, -so, we need to do -1) add client/server code back -2) split client/server code into devel by individual binary files - -Signed-off-by: Chuan Zheng -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/Makefile | 8 +- - src/include/kpatch_user.h | 5 +- - src/kpatch_user.c | 335 +------------------------------------- - src/libcare-ctl.c | 46 ++++++ - src/libcare-server.c | 332 +++++++++++++++++++++++++++++++++++++ - 5 files changed, 391 insertions(+), 335 deletions(-) - create mode 100644 src/libcare-ctl.c - create mode 100644 src/libcare-server.c - -diff --git a/src/Makefile b/src/Makefile -index cdba73c..69cb5b1 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -2,6 +2,7 @@ TARGETS = kpatch_gensrc \ - kpatch_make \ - kpatch_strip \ - libcare-cc \ -+ libcare-server \ - libcare-client \ - libcare-ctl \ - libcare-dump -@@ -45,10 +46,14 @@ kpatch_make: kpatch_make.o kpatch_log.o - LIBUNWIND_LIBS := $(shell pkg-config --libs libunwind libunwind-ptrace) - - --libcare-ctl: kpatch_user.o kpatch_storage.o kpatch_patch.o kpatch_elf.o kpatch_ptrace.o kpatch_coro.o arch_patch.o arch_elf.o arch_ptrace.o arch_coro.o -+libcare-ctl: libcare-ctl.o kpatch_user.o kpatch_storage.o kpatch_patch.o kpatch_elf.o kpatch_ptrace.o kpatch_coro.o arch_patch.o arch_elf.o arch_ptrace.o arch_coro.o - libcare-ctl: kpatch_process.o kpatch_common.o rbtree.o kpatch_log.o arch_process.o - libcare-ctl: LDLIBS += -lelf -lrt $(LIBUNWIND_LIBS) - -+libcare-server: libcare-server.o kpatch_user.o kpatch_storage.o kpatch_patch.o kpatch_elf.o kpatch_ptrace.o kpatch_coro.o arch_patch.o arch_elf.o arch_ptrace.o arch_coro.o -+libcare-server: kpatch_process.o kpatch_common.o rbtree.o kpatch_log.o arch_process.o -+libcare-server: LDLIBS += -lelf -lrt $(LIBUNWIND_LIBS) -+ - libcare-client: libcare-client.o - - kpatch_strip: kpatch_strip.o kpatch_elf_objinfo.o kpatch_log.o arch_strip.o -@@ -106,6 +111,7 @@ INSTALL ?= install - install: all - $(INSTALL) -d $(DESTDIR)/$(bindir) - $(INSTALL) -m 0500 libcare-ctl $(DESTDIR)/$(bindir)/libcare-ctl -+ $(INSTALL) -m 0500 libcare-server $(DESTDIR)/$(bindir)/libcare-server - $(INSTALL) -m 0500 libcare-client $(DESTDIR)/$(bindir)/libcare-client - $(INSTALL) -m 0500 libcare-cc $(DESTDIR)/$(bindir)/libcare-cc - $(INSTALL) -m 0500 libcare-patch-make $(DESTDIR)/$(bindir)/libcare-patch-make -diff --git a/src/include/kpatch_user.h b/src/include/kpatch_user.h -index c0b52ff..795016e 100644 ---- a/src/include/kpatch_user.h -+++ b/src/include/kpatch_user.h -@@ -7,5 +7,8 @@ - - int cmd_patch_user(int argc, char *argv[]); - int cmd_unpatch_user(int argc, char *argv[]); -- -+int execute_cmd(int argc, char *argv[]); -+int patch_user(const char *storage_path, int pid, -+ int is_just_started, -+ int send_fd); - #endif -diff --git a/src/kpatch_user.c b/src/kpatch_user.c -index 7a3547a..bc3d81c 100644 ---- a/src/kpatch_user.c -+++ b/src/kpatch_user.c -@@ -40,10 +40,6 @@ - #include "include/list.h" - #include "include/kpatch_log.h" - --/* Global variables */ --static char storage_dir[PATH_MAX] = "/var/lib/libcare"; -- -- - /***************************************************************************** - * Utilities. - ****************************************************************************/ -@@ -85,7 +81,7 @@ static int usage_patch(const char *err) - return err ? 0 : -1; - } - --static int -+int - patch_user(const char *storage_path, int pid, - int is_just_started, int send_fd) - { -@@ -305,304 +301,6 @@ int cmd_info_user(int argc, char *argv[]) - return process_info(pid); - } - -- --/* Server part. Used as a start-up notification listener. */ --#define SERVER_STOP (1<<30) -- --static int --execute_cmd(int argc, char *argv[]); -- --static int --cmd_execve_startup(int fd, int argc, char *argv[], int is_just_started) --{ -- int rv, pid; -- -- rv = sscanf(argv[1], "%d", &pid); -- if (rv != 1) { -- kperr("can't parse pid from %s", argv[1]); -- return -1; -- } -- -- optind = 1; -- rv = patch_user(storage_dir, pid, is_just_started, fd); -- -- if (rv < 0) -- kperr("can't patch pid %d\n", pid); -- -- return 0; --} -- --static void --kill_and_wait(int pid) --{ -- int status; -- -- (void) kill(pid, SIGTERM); -- (void) waitpid(pid, &status, 0); --} -- --static int childpid; -- --static int --cmd_run(int argc, char *argv[]) --{ -- int pid; -- -- if (childpid) { -- kill_and_wait(childpid); -- childpid = 0; -- } -- -- pid = fork(); -- if (pid == -1) { -- kplogerror("can't fork()\n"); -- return -1; -- } -- -- if (pid == 0) { -- return execl("/bin/sh", "sh", "-c", argv[1], (char *)NULL); -- } -- -- childpid = pid; -- printf("%d\n", pid); -- return 0; --} -- --static int --cmd_kill(int argc, char *argv[]) --{ -- int pid; -- -- if (sscanf(argv[1], "%d", &pid) != 1) { -- kperr("can't parse pid from %s\n", argv[1]); -- return -1; -- } -- -- kpdebug("killing %d\n", pid); -- kill_and_wait(pid); -- -- return 0; --} -- --static int --cmd_storage(int argc, char *argv[]) --{ -- strncpy(storage_dir, argv[1], PATH_MAX - 1); -- return 0; --} -- --static int --cmd_update(int argc, char *argv[]) --{ -- return patch_user(storage_dir, /* pid */ -1, -- /* is_just_started */ 0, -- /* send_fd */ -1); --} -- --static int --server_execute_cmd(int fd, int argc, char *argv[]) --{ -- char *cmd = argv[0]; -- int old_stdout, old_stderr, rv; -- optind = 1; -- -- if (!strcmp(cmd, "execve")) -- return cmd_execve_startup(fd, argc, argv, 1); -- if (!strcmp(cmd, "startup")) { -- return cmd_execve_startup(fd, argc, argv, 0); -- } -- if (!strcmp(cmd, "update")) -- return cmd_update(argc, argv); -- if (!strcmp(cmd, "storage")) -- return cmd_storage(argc, argv); -- if (!strcmp(cmd, "stop")) -- return SERVER_STOP; -- -- old_stdout = dup3(1, 101, O_CLOEXEC); -- old_stderr = dup3(2, 102, O_CLOEXEC); -- -- (void) dup3(fd, 1, O_CLOEXEC); -- (void) dup3(fd, 2, O_CLOEXEC); -- -- -- if (!strcmp(cmd, "run")) -- rv = cmd_run(argc, argv); -- else if (!strcmp(cmd, "kill")) -- rv = cmd_kill(argc, argv); -- else -- rv = execute_cmd(argc, argv); -- -- fflush(stdout); -- fflush(stderr); -- -- (void) dup2(old_stdout, 1); -- (void) dup2(old_stderr, 2); -- -- return rv; --} -- --static int --handle_client(int fd) --{ -- char msg[4096], *argv[32], *p; -- ssize_t off = 0, r; -- int argc; -- -- do { -- r = recv(fd, msg + off, sizeof(msg) - off, 0); -- if (r == -1 && errno == EINTR) -- continue; -- -- if (r == 0) -- goto out_close; -- off += r; -- } while (off < sizeof(msg) && -- (off < 2 || -- msg[off - 2] != '\0' || -- msg[off - 1] != '\0')); -- -- if (off == sizeof(msg)) { -- kperr("possible buffer overflow\n"); -- goto out_close; -- } -- -- argv[0] = msg; -- for (p = msg, argc = 1; -- p < msg + off && argc < ARRAY_SIZE(argv); -- p++) { -- if (*p) -- continue; -- p++; -- -- argv[argc] = p; -- if (*p == '\0') -- break; -- -- argc++; -- } -- -- return server_execute_cmd(fd, argc, argv); -- --out_close: -- close(fd); -- return 0; --} -- -- --static int usage_server(const char *err) --{ -- if (err) -- fprintf(stderr, "err: %s\n", err); -- fprintf(stderr, "usage: libcare-ctl server [STORAGE ROOT]\n"); -- return -1; --} -- --#define LISTEN_BACKLOG 1 --static int --server_bind_socket(const char *path) --{ -- int sfd = -1, rv, sockaddr_len; -- struct sockaddr_un sockaddr; -- -- /* Handle invocation by libcare.service */ -- if (path[0] == '&') { -- if (sscanf(path, "&%d", &sfd) == 0) -- return -1; -- return sfd; -- } -- -- memset(&sockaddr, 0, sizeof(sockaddr)); -- sockaddr.sun_family = AF_UNIX; -- sockaddr_len = strlen(path) + 1; -- if (sockaddr_len >= sizeof(sockaddr.sun_path)) { -- kperr("sockaddr is too long\n"); -- return -1; -- } -- -- strncpy(sockaddr.sun_path, path, sizeof(sockaddr.sun_path)); -- if (path[0] == '@') -- sockaddr.sun_path[0] = '\0'; -- -- sockaddr_len += sizeof(sockaddr.sun_family); -- -- sfd = socket(AF_UNIX, SOCK_STREAM, 0); -- if (sfd == -1) -- goto err_close; -- -- rv = bind(sfd, (struct sockaddr *)&sockaddr, -- sockaddr_len); -- if (rv == -1) -- goto err_close; -- -- rv = listen(sfd, LISTEN_BACKLOG); -- if (rv == -1) -- goto err_close; -- -- return sfd; -- --err_close: -- if (rv < 0) -- kplogerror("can't listen on unix socket %s\n", path); -- if (sfd != -1) -- close(sfd); -- return rv; --} -- --static void --kill_child(int signum) --{ -- /* Hello Bulba my old friend... */ -- (void) signum; -- if (childpid) -- kill_and_wait(childpid); -- exit(0x80 | signum); --} -- --static int --cmd_server(int argc, char *argv[]) --{ -- int sfd = -1, cfd, rv; -- struct sigaction act; -- -- if (argc < 2) -- return usage_server("UNIX socket argument is missing"); -- -- memset(&act, 0, sizeof(act)); -- act.sa_handler = kill_child; -- act.sa_flags = SA_RESTART; -- rv = sigaction(SIGTERM, &act, NULL); -- if (rv < 0) { -- kplogerror("can't install signal handler\n"); -- return -1; -- } -- -- sfd = server_bind_socket(argv[1]); -- if (sfd < 0) -- return sfd; -- -- if (argc >= 3) -- strcpy(storage_dir, argv[2]); -- -- setlinebuf(stdout); -- -- while ((cfd = accept4(sfd, NULL, 0, SOCK_CLOEXEC)) >= 0) { -- rv = handle_client(cfd); -- if (rv < 0) -- kplogerror("server error\n"); -- -- (void) close(cfd); -- if (rv == SERVER_STOP) -- break; -- } -- -- if (childpid) -- kill_and_wait(childpid); -- -- close(sfd); -- return 0; --} -- -- - /***************************************************************************** - * Utilities. - ****************************************************************************/ -@@ -673,7 +371,7 @@ static int usage(const char *err) - return -1; - } - --static int -+int - execute_cmd(int argc, char *argv[]) - { - char *cmd = argv[0]; -@@ -688,32 +386,3 @@ execute_cmd(int argc, char *argv[]) - else - return usage("unknown command"); - } -- --/* entry point */ --int main(int argc, char *argv[]) --{ -- int opt; -- -- while ((opt = getopt(argc, argv, "+vh")) != EOF) { -- switch (opt) { -- case 'v': -- log_level += 1; -- break; -- case 'h': -- return usage(NULL); -- default: -- return usage("unknown option"); -- } -- } -- -- argc -= optind; -- argv += optind; -- -- if (argc < 1) -- return usage("not enough arguments."); -- -- if (!strcmp(argv[0], "server")) -- return cmd_server(argc, argv); -- else -- return execute_cmd(argc, argv); --} -diff --git a/src/libcare-ctl.c b/src/libcare-ctl.c -new file mode 100644 -index 0000000..946d28e ---- /dev/null -+++ b/src/libcare-ctl.c -@@ -0,0 +1,46 @@ -+#include -+ -+#include "include/kpatch_user.h" -+#include "include/kpatch_log.h" -+ -+static int usage(const char *err) -+{ -+ if (err) -+ fprintf(stderr, "err: %s\n", err); -+ -+ fprintf(stderr, "usage: libcare-ctl [options] [args]\n"); -+ fprintf(stderr, "\nOptions:\n"); -+ fprintf(stderr, " -v - verbose mode\n"); -+ fprintf(stderr, " -h - this message\n"); -+ fprintf(stderr, "\nCommands:\n"); -+ fprintf(stderr, " patch - apply patch to a user-space process\n"); -+ fprintf(stderr, " unpatch- unapply patch from a user-space process\n"); -+ fprintf(stderr, " info - show info on applied patches\n"); -+ return -1; -+} -+ -+/* entry point */ -+int main(int argc, char *argv[]) -+{ -+ int opt; -+ -+ while ((opt = getopt(argc, argv, "+vh")) != EOF) { -+ switch (opt) { -+ case 'v': -+ log_level += 1; -+ break; -+ case 'h': -+ return usage(NULL); -+ default: -+ return usage("unknown option"); -+ } -+ } -+ -+ argc -= optind; -+ argv += optind; -+ -+ if (argc < 1) -+ return usage("not enough arguments."); -+ -+ return execute_cmd(argc, argv); -+} -diff --git a/src/libcare-server.c b/src/libcare-server.c -new file mode 100644 -index 0000000..021aac3 ---- /dev/null -+++ b/src/libcare-server.c -@@ -0,0 +1,332 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "include/kpatch_user.h" -+#include "include/kpatch_log.h" -+ -+/* Server part. Used as a start-up notification listener. */ -+#define SERVER_STOP (1<<30) -+static char storage_dir[PATH_MAX] = "/var/lib/libcare"; -+ -+static int -+cmd_execve_startup(int fd, int argc, char *argv[], int is_just_started) -+{ -+ int rv, pid; -+ -+ rv = sscanf(argv[1], "%d", &pid); -+ if (rv != 1) { -+ kperr("can't parse pid from %s", argv[1]); -+ return -1; -+ } -+ -+ optind = 1; -+ rv = patch_user(storage_dir, pid, is_just_started, fd); -+ -+ if (rv < 0) -+ kperr("can't patch pid %d\n", pid); -+ -+ return 0; -+} -+ -+ static void -+kill_and_wait(int pid) -+{ -+ int status; -+ -+ (void) kill(pid, SIGTERM); -+ (void) waitpid(pid, &status, 0); -+} -+ -+static int childpid; -+ -+ static int -+cmd_run(int argc, char *argv[]) -+{ -+ int pid; -+ -+ if (childpid) { -+ kill_and_wait(childpid); -+ childpid = 0; -+ } -+ -+ pid = fork(); -+ if (pid == -1) { -+ kplogerror("can't fork()\n"); -+ return -1; -+ } -+ -+ if (pid == 0) { -+ return execl("/bin/sh", "sh", "-c", argv[1], (char *)NULL); -+ } -+ -+ childpid = pid; -+ printf("%d\n", pid); -+ return 0; -+} -+ -+ static int -+cmd_kill(int argc, char *argv[]) -+{ -+ int pid; -+ -+ if (sscanf(argv[1], "%d", &pid) != 1) { -+ kperr("can't parse pid from %s\n", argv[1]); -+ return -1; -+ } -+ -+ kpdebug("killing %d\n", pid); -+ kill_and_wait(pid); -+ -+ return 0; -+} -+ -+ static int -+cmd_storage(int argc, char *argv[]) -+{ -+ strncpy(storage_dir, argv[1], PATH_MAX - 1); -+ return 0; -+} -+ -+ static int -+cmd_update(int argc, char *argv[]) -+{ -+ return patch_user(storage_dir, /* pid */ -1, -+ /* is_just_started */ 0, -+ /* send_fd */ -1); -+} -+ -+ static int -+server_execute_cmd(int fd, int argc, char *argv[]) -+{ -+ char *cmd = argv[0]; -+ int old_stdout, old_stderr, rv; -+ optind = 1; -+ -+ if (!strcmp(cmd, "execve")) -+ return cmd_execve_startup(fd, argc, argv, 1); -+ if (!strcmp(cmd, "startup")) { -+ return cmd_execve_startup(fd, argc, argv, 0); -+ } -+ if (!strcmp(cmd, "update")) -+ return cmd_update(argc, argv); -+ if (!strcmp(cmd, "storage")) -+ return cmd_storage(argc, argv); -+ if (!strcmp(cmd, "stop")) -+ return SERVER_STOP; -+ -+ old_stdout = dup3(1, 101, O_CLOEXEC); -+ old_stderr = dup3(2, 102, O_CLOEXEC); -+ -+ (void) dup3(fd, 1, O_CLOEXEC); -+ (void) dup3(fd, 2, O_CLOEXEC); -+ -+ -+ if (!strcmp(cmd, "run")) -+ rv = cmd_run(argc, argv); -+ else if (!strcmp(cmd, "kill")) -+ rv = cmd_kill(argc, argv); -+ else -+ rv = execute_cmd(argc, argv); -+ -+ fflush(stdout); -+ fflush(stderr); -+ -+ (void) dup2(old_stdout, 1); -+ (void) dup2(old_stderr, 2); -+ -+ return rv; -+} -+ -+ static int -+handle_client(int fd) -+{ -+ char msg[4096], *argv[32], *p; -+ ssize_t off = 0, r; -+ int argc; -+ -+ do { -+ r = recv(fd, msg + off, sizeof(msg) - off, 0); -+ if (r == -1 && errno == EINTR) -+ continue; -+ -+ if (r == 0) -+ goto out_close; -+ off += r; -+ } while (off < sizeof(msg) && -+ (off < 2 || -+ msg[off - 2] != '\0' || -+ msg[off - 1] != '\0')); -+ -+ if (off == sizeof(msg)) { -+ kperr("possible buffer overflow\n"); -+ goto out_close; -+ } -+ -+ argv[0] = msg; -+ for (p = msg, argc = 1; -+ p < msg + off && argc < ARRAY_SIZE(argv); -+ p++) { -+ if (*p) -+ continue; -+ p++; -+ -+ argv[argc] = p; -+ if (*p == '\0') -+ break; -+ -+ argc++; -+ } -+ -+ return server_execute_cmd(fd, argc, argv); -+ -+out_close: -+ close(fd); -+ return 0; -+} -+ -+static int usage_server(const char *err) -+{ -+ if (err) -+ fprintf(stderr, "err: %s\n", err); -+ fprintf(stderr, "usage: libcare-server [STORAGE ROOT]\n"); -+ return -1; -+} -+ -+#define LISTEN_BACKLOG 1 -+ static int -+server_bind_socket(const char *path) -+{ -+ int sfd = -1, rv, sockaddr_len; -+ struct sockaddr_un sockaddr; -+ -+ /* Handle invocation by libcare.service */ -+ if (path[0] == '&') { -+ if (sscanf(path, "&%d", &sfd) == 0) -+ return -1; -+ return sfd; -+ } -+ -+ memset(&sockaddr, 0, sizeof(sockaddr)); -+ sockaddr.sun_family = AF_UNIX; -+ sockaddr_len = strlen(path) + 1; -+ if (sockaddr_len >= sizeof(sockaddr.sun_path)) { -+ kperr("sockaddr is too long\n"); -+ return -1; -+ } -+ -+ strncpy(sockaddr.sun_path, path, sizeof(sockaddr.sun_path)); -+ if (path[0] == '@') -+ sockaddr.sun_path[0] = '\0'; -+ -+ sockaddr_len += sizeof(sockaddr.sun_family); -+ -+ sfd = socket(AF_UNIX, SOCK_STREAM, 0); -+ if (sfd == -1) -+ goto err_close; -+ -+ rv = bind(sfd, (struct sockaddr *)&sockaddr, -+ sockaddr_len); -+ if (rv == -1) -+ goto err_close; -+ -+ rv = listen(sfd, LISTEN_BACKLOG); -+ if (rv == -1) -+ goto err_close; -+ -+ return sfd; -+ -+err_close: -+ if (rv < 0) -+ kplogerror("can't listen on unix socket %s\n", path); -+ if (sfd != -1) -+ close(sfd); -+ return rv; -+} -+ -+ static void -+kill_child(int signum) -+{ -+ /* Hello Bulba my old friend... */ -+ (void) signum; -+ if (childpid) -+ kill_and_wait(childpid); -+ exit(0x80 | signum); -+} -+ -+ static int -+cmd_server(int argc, char *argv[]) -+{ -+ int sfd = -1, cfd, rv; -+ struct sigaction act; -+ -+ if (argc < 1) -+ return usage_server("UNIX socket argument is missing"); -+ -+ memset(&act, 0, sizeof(act)); -+ act.sa_handler = kill_child; -+ act.sa_flags = SA_RESTART; -+ rv = sigaction(SIGTERM, &act, NULL); -+ if (rv < 0) { -+ kplogerror("can't install signal handler\n"); -+ return -1; -+ } -+ -+ sfd = server_bind_socket(argv[0]); -+ if (sfd < 0) -+ return sfd; -+ -+ if (argc >= 2) -+ strcpy(storage_dir, argv[1]); -+ -+ setlinebuf(stdout); -+ -+ while ((cfd = accept4(sfd, NULL, 0, SOCK_CLOEXEC)) >= 0) { -+ rv = handle_client(cfd); -+ if (rv < 0) -+ kplogerror("server error\n"); -+ -+ (void) close(cfd); -+ if (rv == SERVER_STOP) -+ break; -+ } -+ -+ if (childpid) -+ kill_and_wait(childpid); -+ -+ close(sfd); -+ return 0; -+} -+ -+/* entry point */ -+int main(int argc, char *argv[]) -+{ -+ int opt; -+ -+ while ((opt = getopt(argc, argv, "+vh")) != EOF) { -+ switch (opt) { -+ case 'v': -+ log_level += 1; -+ break; -+ case 'h': -+ return usage_server(NULL); -+ default: -+ return usage_server("unknown option"); -+ } -+ } -+ -+ argc -= optind; -+ argv += optind; -+ -+ if (argc < 1) -+ return usage_server("not enough arguments."); -+ -+ return cmd_server(argc, argv); -+} --- -2.27.0 - diff --git a/0098-misc-add-D_FORTIFY_SOURCE-2-and-fix-return-check.patch b/0098-misc-add-D_FORTIFY_SOURCE-2-and-fix-return-check.patch deleted file mode 100644 index 612b6be..0000000 --- a/0098-misc-add-D_FORTIFY_SOURCE-2-and-fix-return-check.patch +++ /dev/null @@ -1,125 +0,0 @@ -From 2ffe5851cf0abf4bac4f16b878a5197b133c47b0 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Mon, 26 Apr 2021 22:44:53 +0800 -Subject: [PATCH 098/118] misc: add -D_FORTIFY_SOURCE=2 and fix return check -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - --D_FORTIFY_SOURCE=2 is need for security concern. After add it, -we saw some compile warning such as -'warning: ‘nlast’ may be used uninitialized in this function [-Wmaybe-uninitialized]' -Fix it by adding return check. - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/Makefile | 4 ++-- - src/kpatch_elf_objinfo.c | 11 ++++++++++- - src/kpatch_gensrc.c | 4 +++- - src/kpatch_ptrace.c | 10 ++++++++-- - 4 files changed, 23 insertions(+), 6 deletions(-) - -diff --git a/src/Makefile b/src/Makefile -index 69cb5b1..89644c3 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -11,7 +11,7 @@ DEBUG = yes # comment out this line if not debug - SRC_PATH := $(shell pwd) - - CC = gcc --CFLAGS_MISC = -Wall -g -O2 -D_GNU_SOURCE -I $(SRC_PATH) -+CFLAGS_MISC = -Wall -g -O2 -D_GNU_SOURCE -D_FORTIFY_SOURCE=2 -I $(SRC_PATH) - - cc-option = $(shell if $(CC) $(CFLAGS_MISC) $(1) -S -o /dev/null -xc /dev/null \ - > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;) -@@ -29,7 +29,7 @@ VPATH = arch/x86 - endif - - ifdef DEBUG --CFLAGS += -DDEBUG -O0 -g -+CFLAGS += -DDEBUG -O0 -g -Wno-cpp - endif - - ifeq ($(STATIC),y) -diff --git a/src/kpatch_elf_objinfo.c b/src/kpatch_elf_objinfo.c -index 8ab6dd3..bc63007 100644 ---- a/src/kpatch_elf_objinfo.c -+++ b/src/kpatch_elf_objinfo.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.12 - misc: add -D_FORTIFY_SOURCE=2 and fix return check -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.11 - return: make every return properly other than direct-exit - * Huawei Technologies Co., Ltd. - * -@@ -163,7 +166,8 @@ kpatch_objinfo_load_tls_reladyn(kpatch_objinfo *oi) - Elf64_Rela *rela; - Elf_Scn *scn_rela_dyn; - Elf_Data *data_rela_dyn; -- size_t nrela, i, nlast; -+ size_t nrela, i; -+ size_t nlast = -1; - - if (oi->tlsreladyn != NULL) - return 0; -@@ -197,6 +201,11 @@ kpatch_objinfo_load_tls_reladyn(kpatch_objinfo *oi) - nlast = i; - } - -+ if (nlast == -1) { -+ kperr("no tls symbol in .rela.dyn"); -+ return -1; -+ } -+ - oi->ntlsreladyn = nlast + 1; - - return 0; -diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c -index 602db3a..54d5c63 100644 ---- a/src/kpatch_gensrc.c -+++ b/src/kpatch_gensrc.c -@@ -62,7 +62,9 @@ static int is_func_in_patch_func_file(FILE *fp, kpstr_t *sym) - rewind(fp); - while (!feof(fp)) { - memset(buffer, 0, sizeof(buffer)); -- fgets(buffer, sizeof(buffer), fp); -+ if (fgets(buffer, sizeof(buffer), fp) == NULL) { -+ break; -+ } - if (strncmp(buffer, sym->s, sym->l) == 0) { - return 1; - } -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index 2a1b8aa..e467411 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.12 - misc: add -D_FORTIFY_SOURCE=2 and fix return check -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.08 - ptrace/process/patch: fix some bad code problem - * Huawei Technologies Co., Ltd. - ******************************************************************************/ -@@ -482,9 +485,12 @@ get_threadgroup_id(int tid) - return -1; - - while (!feof(fh)) { -- if (fscanf(fh, "Tgid: %d", &pid) == 1) -+ if (fscanf(fh, "Tgid: %d", &pid) == 1) { - break; -- fgets(buf, sizeof(buf), fh); -+ } -+ if (fgets(buf, sizeof(buf), fh) == NULL) { -+ break; -+ } - } - - fclose(fh); --- -2.27.0 - diff --git a/0099-misc-fix-trivial-codex-issues-and-compile-warning.patch b/0099-misc-fix-trivial-codex-issues-and-compile-warning.patch deleted file mode 100644 index aa445a6..0000000 --- a/0099-misc-fix-trivial-codex-issues-and-compile-warning.patch +++ /dev/null @@ -1,144 +0,0 @@ -From 2c609ec9376aef4969aacd32ca649db1f12143b5 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Tue, 27 Apr 2021 16:42:52 +0800 -Subject: [PATCH 099/118] misc: fix trivial codex issues and compile warning - -libcare-client/server/dump trigger some codex issues and compile -warning, fix it to make checker happy. - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_gensrc.c | 3 +++ - src/kpatch_storage.c | 1 + - src/libcare-client.c | 18 ++++++++++++++++-- - src/libcare-dump.c | 12 ++++++++++-- - 4 files changed, 30 insertions(+), 4 deletions(-) - -diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c -index 54d5c63..d7bb46e 100644 ---- a/src/kpatch_gensrc.c -+++ b/src/kpatch_gensrc.c -@@ -94,6 +94,9 @@ static inline int in_syms_list(const char *filename, kpstr_t *sym, - /* If file is empty or first line is '\n' or ' ', we think the file - * is not configured */ - if (c == EOF || c == '\n' || c == ' ') { -+ if (fclose(fp) != 0) { -+ kpfatal("Error in closing file %s\n", func_filter_config_file); -+ } - goto no_conf; - } - -diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c -index f66c723..8977329 100644 ---- a/src/kpatch_storage.c -+++ b/src/kpatch_storage.c -@@ -225,6 +225,7 @@ storage_stat_patch(kpatch_storage_t *storage, - int rv = PATCH_NOT_FOUND; - int i; - -+ memset(&buf, 0, sizeof(struct stat)); - for (i = 0; i < ARRAY_SIZE(pathtemplates); i++) { - sprintf(fname, pathtemplates[i], buildid); - -diff --git a/src/libcare-client.c b/src/libcare-client.c -index 489695e..d319841 100644 ---- a/src/libcare-client.c -+++ b/src/libcare-client.c -@@ -1,3 +1,8 @@ -+/****************************************************************************** -+ * 2021.10.12 - misc: fix trivial codex issues and compile warning -+ * Huawei Technologies Co., Ltd. -+ ******************************************************************************/ -+ - #include - #include - -@@ -8,6 +13,7 @@ - #define handle_error(errstr) do { perror(errstr); exit(EXIT_FAILURE); } while (0) - - #define DEFAULT_SOCKET "/var/run/libcare.sock" -+#define MAX_BUFLEN 16384 - - int main(int argc, char **argv) - { -@@ -34,7 +40,7 @@ int main(int argc, char **argv) - argv++; - argc--; - } -- strncpy(sockaddr.sun_path, sockpath, sizeof(sockaddr.sun_path)); -+ strncpy(sockaddr.sun_path, sockpath, sizeof(sockaddr.sun_path) - 1); - - rv = connect(sock, (const struct sockaddr *)&sockaddr, sizeof(sockaddr)); - if (rv == -1) -@@ -45,6 +51,9 @@ int main(int argc, char **argv) - buflen += strlen(argv[i]) + 1; - } - buflen++; -+ if (buflen <= 0 || buflen > MAX_BUFLEN) { -+ handle_error("buflen overflow"); -+ } - - p = buffer = malloc(buflen); - if (buffer == NULL) -@@ -63,6 +72,9 @@ int main(int argc, char **argv) - free(buffer); - buflen = 4096; - buffer = malloc(buflen); -+ if (buffer == NULL) { -+ handle_error("malloc buffer failed"); -+ } - } - - while (1) { -@@ -71,7 +83,9 @@ int main(int argc, char **argv) - break; - if (rv < 0) - handle_error("recv"); -- write(1, buffer, rv); -+ if (write(1, buffer, rv) < 0) { -+ handle_error("write failed"); -+ } - } - - close(sock); -diff --git a/src/libcare-dump.c b/src/libcare-dump.c -index 4b9fa91..47e0b90 100644 ---- a/src/libcare-dump.c -+++ b/src/libcare-dump.c -@@ -94,8 +94,12 @@ int kpatch_convert_to_elf(const char *input_file, const char *output_file) - munmap(buf, st.st_size); - - cleanup: -- close(fdi); -- close(fdo); -+ if (fdi > 0) { -+ close(fdi); -+ } -+ if (fdo > 0) { -+ close(fdo); -+ } - return ret; - } - -@@ -123,11 +127,15 @@ int main(int argc, char **argv) - convert_to_elf = 1; - break; - default: -+ free(input_file); -+ free(output_file); - usage(); - } - } - - if (input_file == NULL || output_file == NULL) { -+ free(input_file); -+ free(output_file); - usage(); - } - --- -2.27.0 - diff --git a/0100-libcare-info-rename-Process-as-Target-instead.patch b/0100-libcare-info-rename-Process-as-Target-instead.patch deleted file mode 100644 index 9f6778c..0000000 --- a/0100-libcare-info-rename-Process-as-Target-instead.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 5fa8a5de4ff9f6d9f60518503bf9f00da1f58997 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Tue, 27 Apr 2021 16:47:10 +0800 -Subject: [PATCH 100/118] libcare-info: rename "Process" as "Target" instead - -It is not suitable for libcare-ctl info that shows the object which is -patched as "Process" since we might support multiples objects to patch. -Take "Target" instead of "Process". - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_user.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/kpatch_user.c b/src/kpatch_user.c -index bc3d81c..f318b9b 100644 ---- a/src/kpatch_user.c -+++ b/src/kpatch_user.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.12 - libcare-info: rename Process as Target instead -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.07 - libcare-ctl: remove useless codes for info interface - * Huawei Technologies Co., Ltd. - * -@@ -235,7 +238,7 @@ object_info(struct object_file *o) - } - - printf("%-25s %d\n", "Pid:", proc->pid); -- printf("%-25s %s\n", "Process:", o->name); -+ printf("%-25s %s\n", "Target:", o->name); - printf("%-25s %s\n", "Build id:", buildid); - printf("%-25s %ld\n", "Applied patch number:", o->num_applied_patch); - list_for_each_entry(applied_patch, &o->applied_patch, list) { --- -2.27.0 - diff --git a/0101-libcare-dump-add-support-for-dumping-patch-header.patch b/0101-libcare-dump-add-support-for-dumping-patch-header.patch deleted file mode 100644 index f4babf0..0000000 --- a/0101-libcare-dump-add-support-for-dumping-patch-header.patch +++ /dev/null @@ -1,151 +0,0 @@ -From 71ed09bd6065070962904c3706155529084581d1 Mon Sep 17 00:00:00 2001 -From: Chuan Zheng -Date: Tue, 27 Apr 2021 22:05:57 +0800 -Subject: [PATCH 101/118] libcare-dump: add support for dumping patch header - -Sometimes we need dump patch header, add support for it. -The usage shows: -Usage: -Display patch information and dump elf-format patch -libcare-dump -c -i -o -libcare-dump -H -i - -Options: - -H - Display kpatch headers - -c - convert to elf - -i - input kpatch file - -o - output elf file - -Signed-off-by: Chuan Zheng -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/libcare-dump.c | 81 +++++++++++++++++++++++++++++++++++++--------- - 1 file changed, 65 insertions(+), 16 deletions(-) - -diff --git a/src/libcare-dump.c b/src/libcare-dump.c -index 47e0b90..d7b4092 100644 ---- a/src/libcare-dump.c -+++ b/src/libcare-dump.c -@@ -32,11 +32,52 @@ - - void usage() - { -- printf("Usage: libcare-dump -c -i -o \n"); -- printf(" -c convert kpatch to elf\n"); -- printf("\n"); -- printf(" libcare-dump provide some auxiliary tools for help.\n"); -- exit(EXIT_FAILURE); -+ printf("Usage:\n"); -+ printf("Display patch information and dump elf-format patch\n"); -+ printf("libcare-dump -c -i -o \n"); -+ printf("libcare-dump -H -i \n"); -+ printf("\nOptions:\n"); -+ printf(" -H - Display kpatch headers\n"); -+ printf(" -c - convert to elf\n"); -+ printf(" -i - input kpatch file\n"); -+ printf(" -o - output elf file\n"); -+} -+ -+int kpatch_dump_kpatch_header(const char *input_file) -+{ -+ int fdi = -1; -+ int ret = -1; -+ int elf_size; -+ struct stat st; -+ struct kpatch_file kp; -+ -+ fdi = open(input_file, O_RDONLY); -+ if (fdi == -1) { -+ printf("Can't open kpatch file '%s'\n", input_file); -+ return -1; -+ } -+ if (fstat(fdi, &st) == -1) { -+ printf("Can't stat kpatch file\n"); -+ goto cleanup; -+ } -+ /* input kpatch file must bigger than sizeof(struct kpatch_file) */ -+ elf_size = st.st_size - sizeof(struct kpatch_file); -+ if (elf_size <= 0) { -+ printf("Invalid kpatch file '%s'\n", input_file); -+ goto cleanup; -+ } -+ -+ ret = read(fdi, &kp, sizeof(struct kpatch_file)); -+ printf("%-25s %s\n", "Patch Name:", input_file); -+ printf("%-25s %s\n", "Magic:", kp.magic); -+ printf("%-25s %s\n", "Patch id:", kp.id); -+ printf("%-25s %s\n", "buildid:", kp.buildid); -+ -+ cleanup: -+ if (fdi > 0) { -+ close(fdi); -+ } -+ return ret; - } - - int kpatch_convert_to_elf(const char *input_file, const char *output_file) -@@ -108,15 +149,15 @@ int main(int argc, char **argv) - int opt; - int ret = -1; - int convert_to_elf = 0; -+ int dump_kpatch_header = 0; - char *input_file = NULL; - char *output_file = NULL; - -- if (argc < 6) { -- usage(); -- } -- -- while ((opt = getopt(argc, argv, "i:o:c::")) != -1) { -+ while ((opt = getopt(argc, argv, "H::i:o:c::")) != -1) { - switch (opt) { -+ case 'H': -+ dump_kpatch_header = 1; -+ break; - case 'i': - input_file = strdup(optarg); - break; -@@ -127,24 +168,32 @@ int main(int argc, char **argv) - convert_to_elf = 1; - break; - default: -- free(input_file); -- free(output_file); - usage(); -+ return -1; - } - } - -- if (input_file == NULL || output_file == NULL) { -- free(input_file); -- free(output_file); -+ if (input_file == NULL) { -+ usage(); -+ goto out; -+ } -+ -+ if (dump_kpatch_header) { -+ ret = kpatch_dump_kpatch_header(input_file); -+ goto out; -+ } -+ -+ if (output_file == NULL) { - usage(); -+ goto out; - } - - if (convert_to_elf) { - ret = kpatch_convert_to_elf(input_file, output_file); - } - -+out: - free(input_file); - free(output_file); - return ret; - } -- --- -2.27.0 - diff --git a/0102-codedex-fix-codedex-warning.patch b/0102-codedex-fix-codedex-warning.patch deleted file mode 100644 index bdd1a8c..0000000 --- a/0102-codedex-fix-codedex-warning.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 196076520bc463f515b342a1205ae1e54ea1d300 Mon Sep 17 00:00:00 2001 -From: Jin Yan -Date: Thu, 6 May 2021 11:18:13 +0800 -Subject: [PATCH 102/118] codedex: fix codedex warning - -fix codedex warning for: - src/kpatch_coro.c - src/kpatch_gensrc.c - src/libcare-server.c - -Signed-off-by: Jin Yan -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_gensrc.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c -index d7bb46e..e6bea59 100644 ---- a/src/kpatch_gensrc.c -+++ b/src/kpatch_gensrc.c -@@ -798,6 +798,10 @@ static int cblock_cmp(struct cblock *b0, struct cblock *b1, int flags) - s0 = cline(b0->f, i0); t0 = ctype(b0->f, i0); - s1 = cline(b1->f, i1); t1 = ctype(b1->f, i1); - -+ if (csect(b0->f, i0) == NULL || csect(b1->f, i1) == NULL) { -+ kpfatal("Could not find vaild section!\n"); -+ } -+ - /* .comm directive implies .bss section (?). saw such a symbol put to .rodata by gcc! */ - if ((flags & CBLOCK_CMP_SECT) && strcmp(csect(b0->f, i0)->name, csect(b1->f, i1)->name) && - t0 != DIRECTIVE_LOCAL && t0 != DIRECTIVE_COMM && t1 != DIRECTIVE_LOCAL && t1 != DIRECTIVE_COMM) --- -2.27.0 - diff --git a/0103-unpatch-enhance-error-handling-and-log-records-of-ob.patch b/0103-unpatch-enhance-error-handling-and-log-records-of-ob.patch deleted file mode 100644 index cf80a96..0000000 --- a/0103-unpatch-enhance-error-handling-and-log-records-of-ob.patch +++ /dev/null @@ -1,110 +0,0 @@ -From 8450ba322b4bc1c6eed8e6b576cea9ddd5e93e0d Mon Sep 17 00:00:00 2001 -From: Hao Wang -Date: Wed, 12 May 2021 11:03:00 +0800 -Subject: [PATCH 103/118] unpatch: enhance error handling and log records of - object_unapply_patch - -1. exit if kpatch_process_mem_read return 0 -2. add error log records -3. record hunk address info when unpatching - -Signed-off-by: Hao Wang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_patch.c | 12 ++++++++++-- - src/kpatch_ptrace.c | 21 +++++++++++++-------- - 2 files changed, 23 insertions(+), 10 deletions(-) - -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index 0f01663..fc961fc 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.13 - unpatch: enhance error handling and log records of object_unapply_patch -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.12 - process: add a flag to mark unpatch target elf - * Huawei Technologies Co., Ltd. - * -@@ -629,7 +632,6 @@ object_unapply_patch(struct object_file *o, int check_flag) - return ret; - - orig_code_addr = o->kpta + o->kpfile.patch->user_undo; -- - for (i = 0; i < o->ninfo; i++) { - if (is_new_func(&o->info[i])) - continue; -@@ -637,16 +639,22 @@ object_unapply_patch(struct object_file *o, int check_flag) - if (check_flag && !(o->info[i].flags & PATCH_APPLIED)) - continue; - -+ kpinfo("restore origin code from 0x%lx to 0x%lx\n", -+ orig_code_addr + i * HUNK_SIZE, o->info[i].daddr); - ret = kpatch_process_memcpy(o->proc, - o->info[i].daddr, - orig_code_addr + i * HUNK_SIZE, - HUNK_SIZE); - /* XXX(pboldin) We are in deep trouble here, handle it - * by restoring the patch back */ -- if (ret < 0) -+ if (ret < 0) { -+ kplogerror("Failed to restore origin code momery\n"); - return ret; -+ } - } - -+ /* unmap allocated patch's vma */ -+ kpinfo("munmap kpatch memory from 0x%lx\n", o->kpta); - ret = kpatch_munmap_remote(proc2pctx(o->proc), - o->kpta, - o->kpfile.size); -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index e467411..932bdd1 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.13 - unpatch: enhance error handling and log records of object_unapply_patch -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.12 - misc: add -D_FORTIFY_SOURCE=2 and fix return check - * Huawei Technologies Co., Ltd. - * -@@ -572,21 +575,23 @@ kpatch_process_memcpy(kpatch_process_t *proc, - - buf = malloc(size); - if (buf == NULL) { -- kpdebug("FAIL\n"); -+ kplogerror("Failed to malloc buffer\n"); - return -1; - } - - ret = kpatch_process_mem_read(proc, src, buf, size); -- if (ret > 0) -- ret = kpatch_process_mem_write(proc, buf, dst, size); -+ if (ret != size) { -+ kplogerror("Failed to read process memory (ret = %d)\n", ret); -+ goto cleanup; -+ } - -- if (ret < 0) -- kpdebug("FAIL\n"); -- else -- kpdebug("OK\n"); -+ ret = kpatch_process_mem_write(proc, buf, dst, size); -+ if (ret < 0) { -+ kplogerror("Failed to write process memory\n"); -+ } - -+cleanup: - free(buf); -- - return ret; - } - --- -2.27.0 - diff --git a/0104-test-adapt-UT-tests-in-x86_64.patch b/0104-test-adapt-UT-tests-in-x86_64.patch deleted file mode 100644 index e96a1a1..0000000 --- a/0104-test-adapt-UT-tests-in-x86_64.patch +++ /dev/null @@ -1,276 +0,0 @@ -From 0a67bc2e55a27338f6af0080ee6c8b6b227cee09 Mon Sep 17 00:00:00 2001 -From: Bihong Yu -Date: Wed, 9 Jun 2021 10:46:02 +0800 -Subject: [PATCH 104/118] test: adapt UT tests in x86_64 - -Currently, UT tests only support run-build and run-patchlevel test-set. -And UT tests only can run in x86_64. Because the OBS compileEnv add some -security compilation options by default, the UT test can't build and run -at OBS compileEnv. - -This patch doing following things: -1. support apply patch for tls share in x86_64; -2. adapt UT tests makefile; -3. rename desc_ to desc for patchlevel to support make clean; - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/arch/x86/arch_strip.c | 117 ++++++++++++++++++++++++++++++- - tests/Makefile | 5 +- - tests/makefile-patch.inc | 4 +- - tests/patchlevel/{desc_ => desc} | 0 - tests/patchlevel/makefile.first | 1 + - tests/patchlevel/makefile.second | 1 + - tests/run_tests.sh | 6 +- - 7 files changed, 126 insertions(+), 8 deletions(-) - rename tests/patchlevel/{desc_ => desc} (100%) - -diff --git a/src/arch/x86/arch_strip.c b/src/arch/x86/arch_strip.c -index 3c0bbf5..64716c1 100644 ---- a/src/arch/x86/arch_strip.c -+++ b/src/arch/x86/arch_strip.c -@@ -34,6 +34,119 @@ - #define SECTION_OFFSET_FOUND 0x0 - #define SECTION_NOT_FOUND 0x1 - -+/* Find Global Offset Table entry with the address of the TLS-variable -+ * specified by the `tls_offset`. Dynamic linker allocates Thread-Local storage -+ * as described in ABI and places the correct offset at that address in GOT. We -+ * then read this offset and use it in our jmp table. -+ */ -+static unsigned long -+objinfo_find_tls_got_by_offset(kpatch_objinfo *oi, -+ unsigned long tls_offset) -+{ -+ Elf64_Rela *rela; -+ size_t nrela; -+ -+ if (kpatch_objinfo_load_tls_reladyn(oi) < 0) -+ kpfatalerror("kpatch_objinfo_load_tls_reladyn"); -+ -+ rela = oi->tlsreladyn; -+ nrela = oi->ntlsreladyn; -+ -+ for (; nrela != 0; rela++, nrela--) { -+ if (!kpatch_is_tls_rela(rela)) -+ continue; -+ -+ if (ELF64_R_SYM(rela->r_info) == 0 && -+ rela->r_addend == tls_offset) -+ return rela->r_offset; -+ } -+ -+ kpfatalerror("cannot find GOT entry for %lx\n", tls_offset); -+ return 0; -+} -+ -+static unsigned long -+objinfo_find_tls_got_by_symname(kpatch_objinfo *oi, -+ const char *symname) -+{ -+ Elf64_Rela *rela; -+ size_t nrela; -+ Elf64_Sym sym; -+ -+ if (kpatch_objinfo_load_tls_reladyn(oi) < 0) -+ kpfatalerror("kpatch_objinfo_load_tls_reladyn"); -+ -+ rela = oi->tlsreladyn; -+ nrela = oi->ntlsreladyn; -+ -+ for (; nrela != 0; rela++, nrela--) { -+ const char *origname; -+ -+ if (!kpatch_is_tls_rela(rela)) -+ continue; -+ -+ if (ELF64_R_SYM(rela->r_info) == 0 || -+ rela->r_addend != 0) -+ continue; -+ -+ if (!gelf_getsym(oi->dynsymtab, ELF64_R_SYM(rela->r_info), &sym)) -+ kpfatalerror("gelf_getsym"); -+ -+ origname = kpatch_objinfo_strptr(oi, DYNAMIC_NAME, -+ sym.st_name); -+ -+ if (strcmp(origname, symname) == 0 && -+ rela->r_addend == 0) -+ return rela->r_offset; -+ } -+ -+ kpfatalerror("cannot find GOT entry for %s\n", symname); -+ return 0; -+} -+ -+static inline int -+update_reloc_with_tls_got_entry(kpatch_objinfo *origbin, -+ kpatch_objinfo *patch, -+ GElf_Rela *rela, -+ GElf_Sym *sym) -+{ -+ unsigned long got_offset; -+ char *symname, *tmp; -+ -+ symname = (char *)kpatch_objinfo_strptr(patch, SYMBOL_NAME, sym->st_name); -+ -+ tmp = strchr(symname, '@'); -+ if (tmp != NULL) { -+ *tmp = '\0'; -+ } -+ -+ if (GELF_ST_BIND(sym->st_info) == STB_LOCAL || -+ sym->st_shndx != SHN_UNDEF) { -+ /* This symbol should have a TPOFF64 entry in the GOT with -+ * the offset of sym->st_value. Find GOT entry for this TLS -+ * variable. Make st_value point to that GOT entry and mark it -+ * with flag. -+ */ -+ -+ got_offset = objinfo_find_tls_got_by_offset(origbin, sym->st_value); -+ } else if (GELF_ST_BIND(sym->st_info) == STB_GLOBAL && -+ sym->st_shndx == SHN_UNDEF) { -+ /* This is a GLOBAL symbol we require from some other binary. -+ * It has a GOT entry that is referenced by the symbol name, -+ * not the offset. -+ */ -+ -+ got_offset = objinfo_find_tls_got_by_symname(origbin, symname); -+ } -+ -+ if (rela->r_addend != got_offset) { -+ kpinfo("Changing GOTTPOFF symbol %s from %lx to %lx\n", -+ symname, rela->r_addend, got_offset); -+ rela->r_addend = got_offset; -+ } -+ return 0; -+} -+ - /* Update relocation against TLS symbol. - * - * Thread-Local Storage variables require special care because they are -@@ -69,7 +182,6 @@ kpatch_arch_fixup_rela_update_tls(kpatch_objinfo *origbin, - unsigned char *text) - { - switch (GELF_R_TYPE(rela->r_info)) { -- case R_X86_64_GOTTPOFF: - case R_X86_64_TPOFF32: { - const char *symname; - int rv; -@@ -96,6 +208,9 @@ kpatch_arch_fixup_rela_update_tls(kpatch_objinfo *origbin, - return 0; - } - -+ case R_X86_64_GOTTPOFF: -+ return update_reloc_with_tls_got_entry(origbin, patch, rela, sym); -+ - case R_X86_64_DTPOFF32: - case R_X86_64_DTPOFF64: - case R_X86_64_DTPMOD64: -diff --git a/tests/Makefile b/tests/Makefile -index 98823f0..cf44479 100644 ---- a/tests/Makefile -+++ b/tests/Makefile -@@ -19,6 +19,7 @@ clean: $(addprefix clean-,$(SUBDIRS)) - $(CURDIR)/lpmake-patchroot \ - $(CURDIR)/lpmakelevel-patchroot - rm -f fastsleep.so -+ make -C execve clean - - clean-%: FORCE - make -C $* clean -@@ -39,7 +40,7 @@ lpmakelevel: $(LPMAKE_TGTS) - - lpmake-%: export LPMAKE_PATCHROOT := lpmake - lpmake-%: FORCE -- cd $*; $(CURDIR)/../src/libcare-patch-make --clean *.diff -+ cd $*; $(CURDIR)/../src/libcare-patch-make --clean *.diff -i 0001 - - lpmake-patchroot: lpmake - mkdir -p $(CURDIR)/lpmake-patchroot -@@ -91,6 +92,6 @@ run-lpmakelevel: RUNTESTSFLAGS := -d lpmake -p $(CURDIR)/lpmakelevel-patchroot - run-lpmakelevel: fastsleep.so - run-lpmakelevel: run-startup-lpmakelevel - --run: run-build run-patchlevel run-lpmake run-lpmakelevel -+run: run-build run-patchlevel # run-lpmake run-lpmakelevel - - FORCE: -diff --git a/tests/makefile-patch.inc b/tests/makefile-patch.inc -index e3be242..3ba4a3c 100644 ---- a/tests/makefile-patch.inc -+++ b/tests/makefile-patch.inc -@@ -16,9 +16,11 @@ - $(KPATCH_STRIP) --rel-fixup $(word 2,$^) $@ - $(KPATCH_STRIP) --undo-link $(word 2,$^) $@ - -+PATCHID ?= 0001 -+ - %.kpatch: %.undo-link % - buildid=$(call get_buildid,$(word 2,$^)) && \ -- $(KPATCH_MAKE) -b $${buildid} -i 0001 $< -o $@ && \ -+ $(KPATCH_MAKE) -b $${buildid} -i $(PATCHID) $< -o $@ && \ - cp -fs $@ $(OBJDIR)/$${buildid}.kpatch - - $(OBJDIR)/%.o: $(OBJDIR)/%.s -diff --git a/tests/patchlevel/desc_ b/tests/patchlevel/desc -similarity index 100% -rename from tests/patchlevel/desc_ -rename to tests/patchlevel/desc -diff --git a/tests/patchlevel/makefile.first b/tests/patchlevel/makefile.first -index c0bde58..0a6d127 100644 ---- a/tests/patchlevel/makefile.first -+++ b/tests/patchlevel/makefile.first -@@ -1,5 +1,6 @@ - - HAS_LIBRARY := 1 - DIFFEXT := diff -+PATCHID := 0001 - - include ../makefile.inc -diff --git a/tests/patchlevel/makefile.second b/tests/patchlevel/makefile.second -index 7f8ae25..4ad1f03 100644 ---- a/tests/patchlevel/makefile.second -+++ b/tests/patchlevel/makefile.second -@@ -1,5 +1,6 @@ - - HAS_LIBRARY := 1 - DIFFEXT := diff2 -+PATCHID := 0002 - - include ../makefile.inc -diff --git a/tests/run_tests.sh b/tests/run_tests.sh -index ca65f9d..2512963 100755 ---- a/tests/run_tests.sh -+++ b/tests/run_tests.sh -@@ -72,7 +72,7 @@ kill_reap() { - } - - libcare_ctl() { -- $TIME $LIBCARE_CLIENT $SOCKPATH "$@" -+ time $LIBCARE_CLIENT $SOCKPATH "$@" - } - - grep_tail() { -@@ -222,7 +222,7 @@ test_unpatch_files() { - cat ${outfile}_patched - - echo "============unpatching===============" >>$logfile -- libcare_ctl unpatch-user -p $pid \ -+ libcare_ctl unpatch-user -p $pid -i 0001 \ - >>$logfile 2>&1 || : - - sleep 2 -@@ -533,8 +533,6 @@ env_init() { - LIBCARE_SERVER=$KPTOOLS/libcare-server - LIBCARE_CLIENT=$KPTOOLS/libcare-client - STAGE=${STAGE-$TESTDIR/stage/tmp} -- -- TIME=$(which time) - } - - main() { --- -2.27.0 - diff --git a/0105-arch.desc-delete-arch.desc.patch b/0105-arch.desc-delete-arch.desc.patch deleted file mode 100644 index 0aeaab1..0000000 --- a/0105-arch.desc-delete-arch.desc.patch +++ /dev/null @@ -1,37 +0,0 @@ -From a6bcd32eec837bc8750b77b4b21fe8dbe4806594 Mon Sep 17 00:00:00 2001 -From: Bihong Yu -Date: Sat, 20 Nov 2021 04:00:59 -0500 -Subject: [PATCH 105/118] arch.desc: delete arch.desc - -Make command will generate arch.desc automatically. -So we do not need it anymore. - -Signed-off-by: Bihong Yu ---- - src/Makefile | 1 + - src/arch.desc | 1 - - 2 files changed, 1 insertion(+), 1 deletion(-) - delete mode 100644 src/arch.desc - -diff --git a/src/Makefile b/src/Makefile -index 89644c3..ace1029 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -79,6 +79,7 @@ endif - - clean: - rm -rf *.o core.* deps/*.d $(TARGETS) -+ rm -rf arch.desc - for f in tests/gensrc/*.s; do \ - rm -f $$f.test; \ - done -diff --git a/src/arch.desc b/src/arch.desc -deleted file mode 100644 -index 9647742..0000000 ---- a/src/arch.desc -+++ /dev/null -@@ -1 +0,0 @@ --aarch64 --- -2.27.0 - diff --git a/0106-test-fix-some-problems-in-UT-tests.patch b/0106-test-fix-some-problems-in-UT-tests.patch deleted file mode 100644 index 540b173..0000000 --- a/0106-test-fix-some-problems-in-UT-tests.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 10b70a9fdc853df99c96766151455d9ab07b94d4 Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Tue, 15 Jun 2021 14:50:29 +0800 -Subject: [PATCH 106/118] test: fix some problems in UT tests - -This patch do following things: -1. sleep() funciton define in header file, so replace - to ; -2. in euleros virtual version, $(which time) will return errno -1, we - use time command directly; -3. in UT tests, we expect gcc optimization level is -O0, so clearly - indicate the optimization level; - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - tests/makefile-patch.inc | 4 ++-- - tests/tls_simple/tls_simple.c | 7 ++++++- - 2 files changed, 8 insertions(+), 3 deletions(-) - -diff --git a/tests/makefile-patch.inc b/tests/makefile-patch.inc -index 3ba4a3c..bd84ca5 100644 ---- a/tests/makefile-patch.inc -+++ b/tests/makefile-patch.inc -@@ -27,14 +27,14 @@ $(OBJDIR)/%.o: $(OBJDIR)/%.s - $(AS) $< -o $@ - - $(OBJDIR)/%.orig.s: %.c -- $(CC) $< -S -o - $(CFLAGS) | \ -+ $(CC) $< -S -O0 -o - $(CFLAGS) | \ - $(KPATCH_GENSRC) --dbg-filter --test-mode --os=rhel6 -i - -o $@ - - DIFFEXT ?= diff - - $(OBJDIR)/%.patched.s: %.c %.$(DIFFEXT) - patch -b -p1 < $(word 2,$^) -- $(CC) $< -S -o - $(CFLAGS) | \ -+ $(CC) $< -S -O0 -o - $(CFLAGS) | \ - $(KPATCH_GENSRC) --dbg-filter --test-mode --os=rhel6 -i - -o $@ - mv $<.orig $< - -diff --git a/tests/tls_simple/tls_simple.c b/tests/tls_simple/tls_simple.c -index fd3326a..6914ac0 100644 ---- a/tests/tls_simple/tls_simple.c -+++ b/tests/tls_simple/tls_simple.c -@@ -1,7 +1,12 @@ -+/****************************************************************************** -+ * 2021.10.13 - test: fix some problems in UT tests -+ * Huawei Technologies Co., Ltd. -+ ******************************************************************************/ -+ - - #include --#include - #include -+#include - - int *p; - int __thread v; --- -2.27.0 - diff --git a/0107-ptrace-check-pread-return-value.patch b/0107-ptrace-check-pread-return-value.patch deleted file mode 100644 index 468f504..0000000 --- a/0107-ptrace-check-pread-return-value.patch +++ /dev/null @@ -1,148 +0,0 @@ -From 990999cce0249d8291b8981a386c35d70e62eaf3 Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Wed, 16 Jun 2021 17:04:42 +0800 -Subject: [PATCH 107/118] ptrace: check pread return value - -We need to check whether pread() return value meets expectations, to -avoid some incorrect memory access. Such as, in elf_object_load_dynsym() -function, we not check pread() return value and the return value less -than strtab_sz + symtab_sz, then qsort_r() accessing incorrect memory, -causing libcare-ctl coredump, the backtrace as following: -(gdb) bt - #0 strcmp () at ../sysdeps/aarch64/strcmp.S:170 - #1 0x0000ffffbc510fe4 in msort_with_tmp (p=0xffffef9a7740, - b=0xaaaaf4ce7768, n=8) at msort.c:105 - #2 0x0000ffffbc511058 in msort_with_tmp (n=2, b=0xaaaaf4ce7768, - p=0xffffef9a7740) at msort.c:108 - #3 msort_with_tmp (p=0xffffef9a7740, b=0xaaaaf4ce7750, n=16) at - msort.c:54 - #4 0x0000ffffbc511068 in msort_with_tmp (n=3, b=0xaaaaf4ce7750, - p=0xffffef9a7740) at msort.c:108 - #5 msort_with_tmp (p=0xffffef9a7740, b=0xaaaaf4ce7750, n=32) at - msort.c:53 - #6 0x0000ffffbc511068 in msort_with_tmp (n=7, b=0xaaaaf4ce7750, - p=0xffffef9a7740) at msort.c:108 - #7 msort_with_tmp (p=0xffffef9a7740, b=0xaaaaf4ce7750, n=4376) at - msort.c:53 - #8 0x0000ffffbc511068 in msort_with_tmp (n=15, b=0xaaaaf4ce7750, - p=0xffffef9a7740) at msort.c:108 - #9 msort_with_tmp (p=0xffffef9a7740, b=0xaaaaf4ce7750, - n=3096302053228960) at msort.c:53 - #10 0x0000ffffbc511068 in msort_with_tmp (n=30, b=0xaaaaf4ce7750, - p=0xffffef9a7740) at msort.c:108 - #11 msort_with_tmp (p=0xffffef9a7740, b=0xaaaaf4ce7750, n=0) at - msort.c:53 - #12 0x0000ffffbc511068 in msort_with_tmp (n=60, b=0xaaaaf4ce7750, - p=0xffffef9a7740) at msort.c:108 - #13 msort_with_tmp (p=0xffffef9a7740, b=0xaaaaf4ce7750, n=166112) at - msort.c:53 - #14 0x0000ffffbc511068 in msort_with_tmp (n=121, b=0xaaaaf4ce7750, - p=0xffffef9a7740) at msort.c:108 - #15 msort_with_tmp (p=0xffffef9a7740, b=0xaaaaf4ce7750, - n=187651228357184) at msort.c:53 - #16 0x0000ffffbc511068 in msort_with_tmp (n=242, b=0xaaaaf4ce7750, - p=0xffffef9a7740) at msort.c:108 - #17 msort_with_tmp (p=0xffffef9a7740, b=0xaaaaf4ce7750, n=584115552371) - at msort.c:53 - #18 0x0000ffffbc511068 in msort_with_tmp (n=485, b=0xaaaaf4ce7750, - p=0xffffef9a7740) at msort.c:108 - #19 msort_with_tmp (p=0xffffef9a7740, b=0xaaaaf4ce7750, - n=281474701621104) at msort.c:53 - #20 0x0000ffffbc511224 in msort_with_tmp (n=970, b=0xaaaaf4ce7750, - p=0xffffef9a77a0) at msort.c:45 - #21 __GI___qsort_r (b=b@entry=0xaaaaf4ce7750, n=n@entry=970, - s=s@entry=24, cmp=cmp@entry=0xaaaac20369f0 , - arg=arg@entry=0xaaaaf4ced240) at msort.c:297 - #22 0x0000aaaac2036c58 in elf_object_load_dynsym (o=0xaaaaf4c21de0) at - kpatch_elf.c:609 - #23 0x0000aaaac2037d68 in kpatch_object_load_dynsym - (proc=proc@entry=0xffffef9a7890) at kpatch_elf.c:639 - #24 0x0000aaaac2035f8c in process_patch (pid=pid@entry=2339209, - _data=_data@entry=0xffffef9a79b0) at kpatch_patch.c:624 - #25 0x0000aaaac2032f44 in processes_do (data=0xffffef9a79b0, - callback=, pid=2339209) at kpatch_user.c:321 - #26 processes_patch (send_fd=-1, is_just_started=0, is_lazy_check=1, - pid=2339209, storage=0xffffef9a7988) at kpatch_user.c:53 - #27 patch_user (storage_path=, pid=2339209, - is_lazy_check=1, is_just_started=0, send_fd=-1) at kpatch_user.c:85 - #28 0x0000ffffbc4fcf80 in __libc_start_main (main=0x0, argc=0, argv=0x0, - init=, fini=, rtld_fini=, - stack_end=) at ../csu/libc-start.c:308 - #29 0x0000aaaac20326d4 in _start () - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_process.c | 2 +- - src/kpatch_ptrace.c | 21 ++++++++++++++------- - 2 files changed, 15 insertions(+), 8 deletions(-) - -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index 837cadf..9a05429 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -199,7 +199,7 @@ process_get_object_type(kpatch_process_t *proc, - vma->start, - buf, - bufsize); -- if (ret <= SELFMAG) -+ if (ret < 0) - return -1; - - if (type == OBJECT_KPATCH) { -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index 932bdd1..424a05c 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.13 - ptrace: check pread return value -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.13 - unpatch: enhance error handling and log records of object_unapply_patch - * Huawei Technologies Co., Ltd. - * -@@ -40,7 +43,11 @@ kpatch_process_mem_read(kpatch_process_t *proc, - void *dst, - size_t size) - { -- return pread(proc->memfd, dst, size, (off_t)src); -+ size_t r; -+ -+ r = pread(proc->memfd, dst, size, (off_t)src); -+ -+ return r != size ? -1 : 0; - } - - static int -@@ -131,13 +138,13 @@ int kpatch_process_mem_iter_peek(struct process_mem_iter *iter, - if (iter->buflen == 0 || - remote_addr < iter->base || - remote_addr + size > iter->base + iter->buflen) { -- int ret; -+ size_t ret; - - iter->base = remote_addr; -- ret = kpatch_process_mem_read(iter->proc, -- remote_addr, -- iter->buffer, -- iter->buffer_size); -+ ret = pread(iter->proc->memfd, -+ iter->buffer, -+ iter->buffer_size, -+ (off_t)remote_addr); - if (ret < size) - return -1; - iter->buflen = ret; -@@ -580,7 +587,7 @@ kpatch_process_memcpy(kpatch_process_t *proc, - } - - ret = kpatch_process_mem_read(proc, src, buf, size); -- if (ret != size) { -+ if (ret < 0) { - kplogerror("Failed to read process memory (ret = %d)\n", ret); - goto cleanup; - } --- -2.27.0 - diff --git a/0108-libcare-dump-fix-fd-leak-in-libcare-dump.patch b/0108-libcare-dump-fix-fd-leak-in-libcare-dump.patch deleted file mode 100644 index 50fa698..0000000 --- a/0108-libcare-dump-fix-fd-leak-in-libcare-dump.patch +++ /dev/null @@ -1,45 +0,0 @@ -From fc5293d0de296603f90f1501d2d82f826d1c8b57 Mon Sep 17 00:00:00 2001 -From: Zhang Bo -Date: Sat, 26 Jun 2021 16:41:49 +0800 -Subject: [PATCH 108/118] libcare-dump: fix fd leak in libcare-dump - -Fix fd leak when it is 0 in func kpatch_convert_to_elf() -and kpatch_dump_kpatch_header(). - -Signed-off-by: Zhang Bo -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/libcare-dump.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/libcare-dump.c b/src/libcare-dump.c -index d7b4092..c649696 100644 ---- a/src/libcare-dump.c -+++ b/src/libcare-dump.c -@@ -74,7 +74,7 @@ int kpatch_dump_kpatch_header(const char *input_file) - printf("%-25s %s\n", "buildid:", kp.buildid); - - cleanup: -- if (fdi > 0) { -+ if (fdi >= 0) { - close(fdi); - } - return ret; -@@ -135,10 +135,10 @@ int kpatch_convert_to_elf(const char *input_file, const char *output_file) - munmap(buf, st.st_size); - - cleanup: -- if (fdi > 0) { -+ if (fdi >= 0) { - close(fdi); - } -- if (fdo > 0) { -+ if (fdo >= 0) { - close(fdo); - } - return ret; --- -2.27.0 - diff --git a/0109-refactor-avoid-potential-file-leak-in-main.patch b/0109-refactor-avoid-potential-file-leak-in-main.patch deleted file mode 100644 index 2278348..0000000 --- a/0109-refactor-avoid-potential-file-leak-in-main.patch +++ /dev/null @@ -1,89 +0,0 @@ -From b24f5aab20e2f23a025efdd38c2bbe905fa480b1 Mon Sep 17 00:00:00 2001 -From: Zhang Bo -Date: Sat, 26 Jun 2021 17:07:48 +0800 -Subject: [PATCH 109/118] refactor: avoid potential file leak in main - -refactor: it uses exit in main(), which is not allowed due -to huawei codeing statndard. and outfile is freed -implicitly, make it more obviouse to remove exit and add cleanup. - -Signed-off-by: Zhang Bo -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_gensrc.c | 13 +++++++++---- - src/kpatch_io.c | 3 ++- - 2 files changed, 11 insertions(+), 5 deletions(-) - -diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c -index e6bea59..8503361 100644 ---- a/src/kpatch_gensrc.c -+++ b/src/kpatch_gensrc.c -@@ -1598,7 +1598,6 @@ static void usage(void) - kplog(LOG_ERR, " --test-mode - currently running in a test environment, using test mode."); - kplog(LOG_ERR, "FLIST format:"); - kplog(LOG_ERR, " FLIST is comma separated list of function names which can be prepanded with filename where this function defined."); -- exit(1); - } - - enum { -@@ -1638,6 +1637,7 @@ int main(int argc, char **argv) - int err, ch, k = 0, dbgfilter = 0, dbgfilter_options = 0; - int test_mode = 0; - struct kp_file infile[2], outfile; -+ int ret = -1; - - memset(&outfile, 0, sizeof(struct kp_file)); - outfile.f = NULL; -@@ -1701,10 +1701,12 @@ int main(int argc, char **argv) - break; - default: - usage(); -+ goto cleanup; - } - } - if (optind != argc || outfile.f == NULL) { - usage(); -+ goto cleanup; - } - - if (test_mode) { -@@ -1717,8 +1719,8 @@ int main(int argc, char **argv) - - init_multilines(&infile[0]); - debug_filter(&infile[0], &outfile, dbgfilter_options); -- close_file(&outfile); -- return 0; -+ ret = 0; -+ goto cleanup; - } - - if (k < 2) -@@ -1733,7 +1735,10 @@ int main(int argc, char **argv) - analyze_func_cblocks(&infile[0], &infile[1]); - analyze_other_cblocks(&infile[0], &infile[1]); - write_cblocks(&infile[0], &infile[1], &outfile); -+ ret = 0; -+ -+cleanup: - close_file(&outfile); - -- return 0; -+ return ret; - } -diff --git a/src/kpatch_io.c b/src/kpatch_io.c -index 66d1fcf..32964ae 100644 ---- a/src/kpatch_io.c -+++ b/src/kpatch_io.c -@@ -85,5 +85,6 @@ int create_file(struct kp_file *file, const char *fname) - - void close_file(struct kp_file *file) - { -- fclose(file->f); -+ if (file->f) -+ fclose(file->f); - } --- -2.27.0 - diff --git a/0110-libcare-dump-avoid-file-leak-in-libcare-dump.patch b/0110-libcare-dump-avoid-file-leak-in-libcare-dump.patch deleted file mode 100644 index f74cda9..0000000 --- a/0110-libcare-dump-avoid-file-leak-in-libcare-dump.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 4b7d97e6a389cce2a30c069c0a1c43639e510498 Mon Sep 17 00:00:00 2001 -From: Zhang Bo -Date: Sat, 26 Jun 2021 17:20:56 +0800 -Subject: [PATCH 110/118] libcare-dump: avoid file leak in libcare-dump - -In the default switch case, it returned without clearing -resources, use 'goto out' instead. - -Signed-off-by: Zhang Bo -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/libcare-dump.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/libcare-dump.c b/src/libcare-dump.c -index c649696..0264ec1 100644 ---- a/src/libcare-dump.c -+++ b/src/libcare-dump.c -@@ -169,7 +169,7 @@ int main(int argc, char **argv) - break; - default: - usage(); -- return -1; -+ goto out; - } - } - --- -2.27.0 - diff --git a/0111-kpatch_ptrace-fix-wrong-return-type.patch b/0111-kpatch_ptrace-fix-wrong-return-type.patch deleted file mode 100644 index 9182e7c..0000000 --- a/0111-kpatch_ptrace-fix-wrong-return-type.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 160e71805eb257b47a87ddf72c1448edabc9489d Mon Sep 17 00:00:00 2001 -From: Zhang Bo -Date: Sat, 26 Jun 2021 18:07:46 +0800 -Subject: [PATCH 111/118] kpatch_ptrace: fix wrong return type - -pread()'s return value's type should be ssize_t -rather than size_t. - -Signed-off-by: Zhang Bo -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_ptrace.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index 424a05c..23ce64f 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.13 - codeDex: fix wrong return type -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.13 - ptrace: check pread return value - * Huawei Technologies Co., Ltd. - * -@@ -43,7 +46,7 @@ kpatch_process_mem_read(kpatch_process_t *proc, - void *dst, - size_t size) - { -- size_t r; -+ ssize_t r; - - r = pread(proc->memfd, dst, size, (off_t)src); - --- -2.27.0 - diff --git a/0112-kpatch_strip-fix-closing-negative-fd-in-kpatch_strip.patch b/0112-kpatch_strip-fix-closing-negative-fd-in-kpatch_strip.patch deleted file mode 100644 index 1d47a40..0000000 --- a/0112-kpatch_strip-fix-closing-negative-fd-in-kpatch_strip.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 70eddee8092f26b7b0908f17cba9d040619fb3b9 Mon Sep 17 00:00:00 2001 -From: Zhang Bo -Date: Sat, 26 Jun 2021 18:36:01 +0800 -Subject: [PATCH 112/118] kpatch_strip: fix closing negative fd in kpatch_strip - -Signed-off-by: Zhang Bo -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_strip.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c -index 98b7f1d..6cd7e76 100644 ---- a/src/kpatch_strip.c -+++ b/src/kpatch_strip.c -@@ -1016,8 +1016,10 @@ int main(int argc, char *argv[]) - } - - cleanup: -- close(fd1); -- close(fd2); -+ if (fd1 >= 0) -+ close(fd1); -+ if (fd2 >= 0) -+ close(fd2); - - return ret; - } --- -2.27.0 - diff --git a/0113-kpatch_make-fix-closing-negative-fd-in-kpatch_make.patch b/0113-kpatch_make-fix-closing-negative-fd-in-kpatch_make.patch deleted file mode 100644 index ae0bb83..0000000 --- a/0113-kpatch_make-fix-closing-negative-fd-in-kpatch_make.patch +++ /dev/null @@ -1,33 +0,0 @@ -From e51649e2844b9b7dca03a0a2dcd255598a0e7f97 Mon Sep 17 00:00:00 2001 -From: Zhang Bo -Date: Sat, 26 Jun 2021 19:11:07 +0800 -Subject: [PATCH 113/118] kpatch_make: fix closing negative fd in kpatch_make - -Signed-off-by: Zhang Bo -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_make.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/src/kpatch_make.c b/src/kpatch_make.c -index e2564ce..96f7b5a 100644 ---- a/src/kpatch_make.c -+++ b/src/kpatch_make.c -@@ -163,8 +163,10 @@ unmap: - munmap(buf, st.st_size); - - cleanup: -- close(fdo); -- close(fd1); -+ if (fdo >= 0) -+ close(fdo); -+ if (fd1 >= 0) -+ close(fd1); - free(buildid); - free(outputname); - free(patch_id); --- -2.27.0 - diff --git a/0114-process-turn-on-gcc-Werror-and-fix-some-warning.patch b/0114-process-turn-on-gcc-Werror-and-fix-some-warning.patch deleted file mode 100644 index 02ddabe..0000000 --- a/0114-process-turn-on-gcc-Werror-and-fix-some-warning.patch +++ /dev/null @@ -1,27 +0,0 @@ -From d2a2700286bfc1f3dad5e282e87304fb8251aa72 Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Thu, 1 Jul 2021 15:25:31 +0800 -Subject: [PATCH 114/118] process: turn on gcc Werror and fix some warning - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/Makefile | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/Makefile b/src/Makefile -index ace1029..e7d7c08 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -11,7 +11,7 @@ DEBUG = yes # comment out this line if not debug - SRC_PATH := $(shell pwd) - - CC = gcc --CFLAGS_MISC = -Wall -g -O2 -D_GNU_SOURCE -D_FORTIFY_SOURCE=2 -I $(SRC_PATH) -+CFLAGS_MISC = -Wall -Werror -g -O2 -D_GNU_SOURCE -D_FORTIFY_SOURCE=2 -I $(SRC_PATH) - - cc-option = $(shell if $(CC) $(CFLAGS_MISC) $(1) -S -o /dev/null -xc /dev/null \ - > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;) --- -2.27.0 - diff --git a/0115-kpatch_ptrace-fix-uninitialing-buf.patch b/0115-kpatch_ptrace-fix-uninitialing-buf.patch deleted file mode 100644 index 2abcf07..0000000 --- a/0115-kpatch_ptrace-fix-uninitialing-buf.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 1c4f9689052b5206f370e3f6a7975c7942cd4041 Mon Sep 17 00:00:00 2001 -From: Zhang Bo -Date: Mon, 5 Jul 2021 17:12:21 +0800 -Subject: [PATCH 115/118] kpatch_ptrace: fix uninitialing buf - -fix uninitialing buf in kpatch_process_memcpy. - -Signed-off-by: Zhang Bo -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_ptrace.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index 23ce64f..58e0f4b 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -1,4 +1,7 @@ - /****************************************************************************** -+ * 2021.10.13 - codeDex: fix uninitialing buf -+ * Huawei Technologies Co., Ltd. -+ * - * 2021.10.13 - codeDex: fix wrong return type - * Huawei Technologies Co., Ltd. - * -@@ -588,6 +591,7 @@ kpatch_process_memcpy(kpatch_process_t *proc, - kplogerror("Failed to malloc buffer\n"); - return -1; - } -+ memset(buf, 0, size); - - ret = kpatch_process_mem_read(proc, src, buf, size); - if (ret < 0) { --- -2.27.0 - diff --git a/0116-reliablity-avoid-double-free-in-future.patch b/0116-reliablity-avoid-double-free-in-future.patch deleted file mode 100644 index 67ccce4..0000000 --- a/0116-reliablity-avoid-double-free-in-future.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 3fc160a1f7e779853ba988555312554db5c29f65 Mon Sep 17 00:00:00 2001 -From: Zhang Bo -Date: Mon, 5 Jul 2021 17:38:49 +0800 -Subject: [PATCH 116/118] reliablity: avoid double free in future - -Pids got freed in process_list_threads in some cases, but -it would be freed again in the caller kpatch_process_attach. -although due to business flow this didn't happen, as it returns -1 in -such cases, set it to NULL anyway to avoid double free in future. - -Signed-off-by: Zhang Bo -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_process.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index 9a05429..4135c17 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -656,6 +656,7 @@ process_list_threads(kpatch_process_t *proc, - - dealloc: - free(pids); -+ *ppids = NULL; - *alloc = *npids = 0; - return -1; - } --- -2.27.0 - diff --git a/0117-process-check-running-status-if-ptrace-detach-return.patch b/0117-process-check-running-status-if-ptrace-detach-return.patch deleted file mode 100644 index b995f50..0000000 --- a/0117-process-check-running-status-if-ptrace-detach-return.patch +++ /dev/null @@ -1,76 +0,0 @@ -From 36ad23d403a4abe9abfc5bd0fe613fe22a5e806f Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Mon, 5 Jul 2021 17:21:15 +0800 -Subject: [PATCH 117/118] process: check running status if ptrace detach return - ESRCH - -During the detach qemu process, if we directly execute waitpid() while -ptrace return ESRCH, there is a probability that the qemu process and -libcare-ctl process will be stuck. To solve this problem, we add checking -pctx->running before calling waitpid(). - -The libcare-ctl stack look like this: - #0 0x0000ffffb7b7c3f0 in waitpid() from /usr/lib64/libc.so.6 - #1 process_detach (proc=0xfffffffff210) at kpatch_process.c:649 - #2 0x0000aaaaaaab0604 in kpatch_process_free - (proc=proc@entry=0xfffffffff210) at kpatch_process.c:1423 - #3 0x0000aaaaaaaa63ec in process_patch (pid=pid@entry=3014078, - _data=_data@entry=0xfffffffff330) at kpatch_patch.c:647 - #4 0x0000aaaaaaaa30e4 in processes_do (data=0xfffffffff330, - callback=, pid=3014078) at kpatch_user.c:321 - #5 processes_patch (send_fd=-1, is_just_started=0, is_lazy_check=0, - pid=3014078, storage=0xfffffffff308) at kpatch_user.c:53 - #6 patch_user (storage_path=, pid=3014078, - is_lazy_check=0, is_just_started=0, send_fd=-1) at kpatch_user.c:85 - #7 0x0000fffff7d93f80 in __libc_start_main () from /usr/lib64/libc.so.6 - #8 0x0000aaaaaaaa2874 in _start () - -The qemu process look like this: - PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND -2133340 root 20 0 5269076 1.1g 22904 t 0.0 0.4 0:00.00 worker -2133338 root 20 0 5269076 1.1g 22904 S 0.0 0.4 0:00.00 vnc_worker -2133337 root 20 0 5269076 1.1g 22904 S 0.0 0.4 0:00.00 memory_lock -2133336 root 20 0 5269076 1.1g 22904 S 0.7 0.4 107:06.85 CPU 0/KVM -2133334 root 20 0 5269076 1.1g 22904 S 0.0 0.4 0:00.37 IO mon_iothread -2133332 root 20 0 5269076 1.1g 22904 S 0.0 0.4 0:00.00 signalfd_compat -2133331 root 20 0 5269076 1.1g 22904 S 0.0 0.4 0:01.32 qemu-kvm-4.1.0- -2133328 root 20 0 5269076 1.1g 22904 S 0.0 0.4 11:38.65 qemu-kvm-4.1.0- - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_process.c | 18 +++++++++++++++++- - 1 file changed, 17 insertions(+), 1 deletion(-) - -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index 4135c17..3f7de56 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -598,7 +598,23 @@ process_detach(kpatch_process_t *proc) - unw_destroy_addr_space(proc->ptrace.unwd); - - list_for_each_entry_safe(p, ptmp, &proc->ptrace.pctxs, list) { -- if (kpatch_ptrace_detach(p) == -ESRCH) { -+ /** -+ * If kpatch_ptrace_detach(p) return -ESRCH, there are two situations, -+ * as described below: -+ * 1. the specified thread does not exist, it means the thread dead -+ * during the attach processing, so we need to wait for the thread -+ * to exit; -+ * 2. the specified thread is not currently being traced by the libcare, -+ * or is not stopped, so we just ignore it; -+ * -+ * We using the running variable of the struct kpatch_ptrace_ctx to -+ * distinguish them: -+ * 1. if pctx->running = 0, it means the thread is traced by libcare, we -+ * will wait for the thread to exit; -+ * 2. if pctx->running = 1, it means we can not sure about the status of -+ * the thread, we just ignore it; -+ */ -+ if (kpatch_ptrace_detach(p) == -ESRCH && !p->running) { - do { - pid = waitpid(p->pid, &status, __WALL); - } while (pid > 0 && !WIFEXITED(status)); --- -2.27.0 - diff --git a/0118-kpatch_gensrc-libcare-dump-avoid-resource-leak-in-cm.patch b/0118-kpatch_gensrc-libcare-dump-avoid-resource-leak-in-cm.patch deleted file mode 100644 index 5fc427b..0000000 --- a/0118-kpatch_gensrc-libcare-dump-avoid-resource-leak-in-cm.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 9ac889259d405c9f304fe2ca4bd8edccbaea730b Mon Sep 17 00:00:00 2001 -From: Zhang Bo -Date: Tue, 6 Jul 2021 14:17:55 +0800 -Subject: [PATCH 118/118] kpatch_gensrc/libcare-dump: avoid resource leak in - cmdline - -The args in the process of parsing args shall be freed -before being allocated, as the args maybe called multiple -times. - -Signed-off-by: Zhang Bo -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_gensrc.c | 1 + - src/libcare-dump.c | 2 ++ - 2 files changed, 3 insertions(+) - -diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c -index 8503361..a407909 100644 ---- a/src/kpatch_gensrc.c -+++ b/src/kpatch_gensrc.c -@@ -1655,6 +1655,7 @@ int main(int argc, char **argv) - k++; - break; - case 'o': -+ close_file(&outfile); - if ((err = create_file(&outfile, optarg))) - kpfatal("Can't open output file '%s': %s\n", optarg, strerror(err)); - break; -diff --git a/src/libcare-dump.c b/src/libcare-dump.c -index 0264ec1..8736452 100644 ---- a/src/libcare-dump.c -+++ b/src/libcare-dump.c -@@ -159,9 +159,11 @@ int main(int argc, char **argv) - dump_kpatch_header = 1; - break; - case 'i': -+ free(input_file); - input_file = strdup(optarg); - break; - case 'o': -+ free(output_file); - output_file = strdup(optarg); - break; - case 'c': --- -2.27.0 - diff --git a/0120-strip-return-1-if-get-tls-got_offset-failed.patch b/0120-strip-return-1-if-get-tls-got_offset-failed.patch deleted file mode 100644 index bff550b..0000000 --- a/0120-strip-return-1-if-get-tls-got_offset-failed.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 318745e2e2bf05dd2d8eb4e53e349b062f80d0aa Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Tue, 13 Jul 2021 10:59:00 +0800 -Subject: [PATCH 120/165] strip: return -1 if get tls got_offset failed - -return -1 if get tls got_offset failed. This bug is found by codedex. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/arch/x86/arch_strip.c | 3 +++ - src/kpatch_strip.c | 2 +- - 2 files changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/arch/x86/arch_strip.c b/src/arch/x86/arch_strip.c -index 64716c1..71a32ca 100644 ---- a/src/arch/x86/arch_strip.c -+++ b/src/arch/x86/arch_strip.c -@@ -137,6 +137,9 @@ update_reloc_with_tls_got_entry(kpatch_objinfo *origbin, - */ - - got_offset = objinfo_find_tls_got_by_symname(origbin, symname); -+ } else { -+ kperr("get symbol '%s' got_offset failed\n", symname); -+ return -1; - } - - if (rela->r_addend != got_offset) { -diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c -index 6cd7e76..cc573d1 100644 ---- a/src/kpatch_strip.c -+++ b/src/kpatch_strip.c -@@ -407,7 +407,7 @@ kpatch_fixup_rela_one(kpatch_objinfo *origbin, - rv = kpatch_arch_fixup_rela_update_tls(origbin, patch, rel, - sym, sh_text, text); - if (rv < 0) -- kperr("Faileed to do kpatch_fixup_rela_update_tls"); -+ kperr("Failed to do kpatch_fixup_rela_update_tls"); - - return rv; - } --- -2.27.0 - diff --git a/0121-user-print-log-before-performing-task.patch b/0121-user-print-log-before-performing-task.patch deleted file mode 100644 index d3edac0..0000000 --- a/0121-user-print-log-before-performing-task.patch +++ /dev/null @@ -1,46 +0,0 @@ -From f75e749cc286c990b2b6ac7c3a04dd6ac9a86ff4 Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Sat, 10 Jul 2021 16:13:14 +0800 -Subject: [PATCH 121/165] user: print log before performing task - -print log before performing task - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_user.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/kpatch_user.c b/src/kpatch_user.c -index f318b9b..b982b50 100644 ---- a/src/kpatch_user.c -+++ b/src/kpatch_user.c -@@ -135,6 +135,8 @@ int cmd_patch_user(int argc, char *argv[]) - goto out_err; - - storage_path = argv[argc - 1]; -+ -+ kpinfo("Applying patch for %d with %s", pid, storage_path); - ret = patch_user(storage_path, pid, - /* is_just_started */ 0, /* send_fd */ -1); - -@@ -201,6 +203,8 @@ int cmd_unpatch_user(int argc, char *argv[]) - if (!kpatch_check_system()) - return -1; - -+ kpinfo("Unpplying patch for %d with patch id '%s'", -+ pid, patch_id); - return processes_unpatch(pid, argv, argc, patch_id); - } - -@@ -301,6 +305,7 @@ int cmd_info_user(int argc, char *argv[]) - if (!verbose) - log_level = LOG_ERR; - -+ kpinfo("Query patch information for %d", pid); - return process_info(pid); - } - --- -2.27.0 - diff --git a/0122-process-memset-new-malloc-object.patch b/0122-process-memset-new-malloc-object.patch deleted file mode 100644 index 2207f3d..0000000 --- a/0122-process-memset-new-malloc-object.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 4f93c7e5325c52f0b15e898fc6baa0afadcedc2a Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Thu, 15 Jul 2021 15:01:55 +0800 -Subject: [PATCH 122/165] process: memset new malloc object - -We may use uninitialized member variable in proc->objs, such as -is_shared_lib variable in kpatch_object_load_dynsym(). We could find -warning log such as following: -2021-06-30T21:04:08.736292+08:00|warning|libcare-ctl[3012164]||kpatch_object_load_dynsym[641]|: -load test-fjw-1_shm_2 dynamic symbol error, ignore it... - -In order solve this problem, we memset the new malloc object in -process_new_object(). - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_process.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index 3f7de56..89cc0d1 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -131,6 +131,8 @@ process_new_object(kpatch_process_t *proc, - kpdebug("FAIL\n"); - return NULL; - } -+ memset(o, 0, sizeof(struct object_file)); -+ - list_init(&o->list); - list_init(&o->vma); - list_init(&o->applied_patch); -@@ -164,6 +166,7 @@ process_new_object(kpatch_process_t *proc, - o->ndynsyms = 0; - o->dynsymnames = NULL; - init_kp_file(&o->kpfile); -+ - list_add(&o->list, &proc->objs); - proc->num_objs++; - kpdebug("OK\n"); --- -2.27.0 - diff --git a/0123-patch-add-default-case-for-bash-case-statement.patch b/0123-patch-add-default-case-for-bash-case-statement.patch deleted file mode 100644 index d015c42..0000000 --- a/0123-patch-add-default-case-for-bash-case-statement.patch +++ /dev/null @@ -1,30 +0,0 @@ -From d66ea5deed093d67cd1822a9fb3df513e6f55f69 Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Fri, 16 Jul 2021 12:01:33 +0800 -Subject: [PATCH 123/165] patch: add default case for bash case statement - -add default case for bash case statement to avoid endless loop. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/libcare-patch-make | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/libcare-patch-make b/src/libcare-patch-make -index aab6845..320ab88 100755 ---- a/src/libcare-patch-make -+++ b/src/libcare-patch-make -@@ -224,6 +224,9 @@ main() { - --) - shift; break; - ;; -+ *) -+ usage 1 -+ ;; - esac - done - --- -2.27.0 - diff --git a/0124-style-fix-mismatch-code-alignment.patch b/0124-style-fix-mismatch-code-alignment.patch deleted file mode 100644 index 6994783..0000000 --- a/0124-style-fix-mismatch-code-alignment.patch +++ /dev/null @@ -1,174 +0,0 @@ -From 77f78c3ff41db26ad874a0b980332d791328da3a Mon Sep 17 00:00:00 2001 -From: eillon -Date: Fri, 30 Jul 2021 04:19:10 -0400 -Subject: [PATCH 124/165] style: fix mismatch code alignment - -Signed-off-by: eillon -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/arch/aarch64/arch_elf.c | 4 ++-- - src/arch/aarch64/arch_ptrace.c | 14 +++++++------- - src/arch/x86/arch_ptrace.c | 14 +++++++------- - src/kpatch_ptrace.c | 16 ++++++++-------- - 4 files changed, 24 insertions(+), 24 deletions(-) - -diff --git a/src/arch/aarch64/arch_elf.c b/src/arch/aarch64/arch_elf.c -index 73d0232..9ce586d 100644 ---- a/src/arch/aarch64/arch_elf.c -+++ b/src/arch/aarch64/arch_elf.c -@@ -110,8 +110,8 @@ static int kpatch_arch_apply_relocate(GElf_Rela *r, GElf_Sym *s, - */ - kpdebug("R_AARCH64_LD64_GOT_LO12_NC: val=0x%lx\n", val); - if (GELF_ST_TYPE(s->st_info) == STT_OBJECT && -- s->st_shndx == SHN_UNDEF && -- GELF_ST_BIND(s->st_info) == STB_GLOBAL) { -+ s->st_shndx == SHN_UNDEF && -+ GELF_ST_BIND(s->st_info) == STB_GLOBAL) { - /* This case is for a new global var from DSO */ - val += 8; - val = ((val & 0xfff) >> 3) << 10; -diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c -index 3ff5794..c4a671e 100644 ---- a/src/arch/aarch64/arch_ptrace.c -+++ b/src/arch/aarch64/arch_ptrace.c -@@ -195,9 +195,9 @@ wait_for_mmap(struct kpatch_ptrace_ctx *pctx, - } - - int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, -- unsigned long arg1, unsigned long arg2, unsigned long arg3, -- unsigned long arg4, unsigned long arg5, unsigned long arg6, -- unsigned long *res) -+ unsigned long arg1, unsigned long arg2, unsigned long arg3, -+ unsigned long arg4, unsigned long arg5, unsigned long arg6, -+ unsigned long *res) - { - struct user_regs_struct regs; - unsigned char syscall[] = { -@@ -223,7 +223,7 @@ int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, - } - - int kpatch_arch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, -- unsigned long *addr) -+ unsigned long *addr) - { - struct user_regs_struct regs; - unsigned char callrax[] = { -@@ -330,7 +330,7 @@ poke_back: - } - - void copy_regs(struct user_regs_struct *dst, -- struct user_regs_struct *src) -+ struct user_regs_struct *src) - { - #define COPY_REG(x) dst->x = src->x - COPY_REG(regs[0]); -@@ -359,8 +359,8 @@ void copy_regs(struct user_regs_struct *dst, - - int - kpatch_arch_ptrace_waitpid(kpatch_process_t *proc, -- struct timespec *timeout, -- const sigset_t *sigset) -+ struct timespec *timeout, -+ const sigset_t *sigset) - { - struct kpatch_ptrace_ctx *pctx; - siginfo_t siginfo; -diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c -index b8e761f..838a106 100644 ---- a/src/arch/x86/arch_ptrace.c -+++ b/src/arch/x86/arch_ptrace.c -@@ -192,9 +192,9 @@ wait_for_mmap(struct kpatch_ptrace_ctx *pctx, - } - - int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, -- unsigned long arg1, unsigned long arg2, unsigned long arg3, -- unsigned long arg4, unsigned long arg5, unsigned long arg6, -- unsigned long *res) -+ unsigned long arg1, unsigned long arg2, unsigned long arg3, -+ unsigned long arg4, unsigned long arg5, unsigned long arg6, -+ unsigned long *res) - { - struct user_regs_struct regs; - -@@ -267,7 +267,7 @@ poke: - } - - int kpatch_arch_ptrace_resolve_ifunc(struct kpatch_ptrace_ctx *pctx, -- unsigned long *addr) -+ unsigned long *addr) - { - struct user_regs_struct regs; - unsigned char callrax[] = { -@@ -366,7 +366,7 @@ poke_back: - } - - void copy_regs(struct user_regs_struct *dst, -- struct user_regs_struct *src) -+ struct user_regs_struct *src) - { - #define COPY_REG(x) dst->x = src->x - COPY_REG(r15); -@@ -388,8 +388,8 @@ void copy_regs(struct user_regs_struct *dst, - } - - int kpatch_arch_ptrace_waitpid(kpatch_process_t *proc, -- struct timespec *timeout, -- const sigset_t *sigset) -+ struct timespec *timeout, -+ const sigset_t *sigset) - { - struct kpatch_ptrace_ctx *pctx; - siginfo_t siginfo; -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index 58e0f4b..201eb41 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -441,7 +441,7 @@ int - wait_for_stop(struct kpatch_ptrace_ctx *pctx, - const void *data) - { -- int ret, status = 0, pid = (int)(uintptr_t)data ?: pctx->pid; -+ int ret, status = 0, pid = (int)(uintptr_t)data ? : pctx->pid; - kpdebug("wait_for_stop(pctx->pid=%d, pid=%d)\n", pctx->pid, pid); - - while (1) { -@@ -479,11 +479,11 @@ kpatch_execute_remote(struct kpatch_ptrace_ctx *pctx, - struct user_regs_struct *pregs) - { - return kpatch_arch_execute_remote_func(pctx, -- code, -- codelen, -- pregs, -- wait_for_stop, -- NULL); -+ code, -+ codelen, -+ pregs, -+ wait_for_stop, -+ NULL); - } - - /* FIXME(pboldin) buf might be too small */ -@@ -528,7 +528,7 @@ kpatch_mmap_remote(struct kpatch_ptrace_ctx *pctx, - kpdebug("mmap_remote: 0x%lx+%lx, %x, %x, %d, %lx\n", addr, length, - prot, flags, fd, offset); - ret = kpatch_arch_syscall_remote(pctx, __NR_mmap, (unsigned long)addr, -- length, prot, flags, fd, offset, &res); -+ length, prot, flags, fd, offset, &res); - if (ret < 0) - return 0; - if (ret == 0 && res >= (unsigned long)-MAX_ERRNO) { -@@ -547,7 +547,7 @@ int kpatch_munmap_remote(struct kpatch_ptrace_ctx *pctx, - - kpdebug("munmap_remote: 0x%lx+%lx\n", addr, length); - ret = kpatch_arch_syscall_remote(pctx, __NR_munmap, (unsigned long)addr, -- length, 0, 0, 0, 0, &res); -+ length, 0, 0, 0, 0, &res); - if (ret < 0) - return -1; - if (ret == 0 && res >= (unsigned long)-MAX_ERRNO) { --- -2.27.0 - diff --git a/0125-kpatch_cc-Avoid-buffer-out-of-bounds-write.patch b/0125-kpatch_cc-Avoid-buffer-out-of-bounds-write.patch deleted file mode 100644 index 6c10753..0000000 --- a/0125-kpatch_cc-Avoid-buffer-out-of-bounds-write.patch +++ /dev/null @@ -1,32 +0,0 @@ -From b5e59717fbd2e499281e325794b22c96bdf9eee2 Mon Sep 17 00:00:00 2001 -From: Peng Liang -Date: Sat, 31 Jul 2021 10:10:10 +0800 -Subject: [PATCH 125/165] kpatch_cc: Avoid buffer out-of-bounds write - -We will write to newargv[argnum + 4], so we should make sure that argnum -+ 4 < the size of newargv, which is newargc. - -Signed-off-by: Peng Liang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_cc.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/kpatch_cc.c b/src/kpatch_cc.c -index da9b6c7..0f68328 100644 ---- a/src/kpatch_cc.c -+++ b/src/kpatch_cc.c -@@ -861,7 +861,7 @@ static int build_multiple(void) - } - - argnum = i; -- if (argnum + 4 > newargc) { -+ if (argnum + 4 >= newargc) { - kpccfatal("Failed to build multiple due to buffer overflow.\n"); - } - --- -2.27.0 - diff --git a/0126-kpatch_make-Avoid-open-NULL.patch b/0126-kpatch_make-Avoid-open-NULL.patch deleted file mode 100644 index b20b3b7..0000000 --- a/0126-kpatch_make-Avoid-open-NULL.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 9b60ee80d06d9b4547bc161da2768c08e9fa4f99 Mon Sep 17 00:00:00 2001 -From: Peng Liang -Date: Sat, 31 Jul 2021 10:16:27 +0800 -Subject: [PATCH 126/165] kpatch_make: Avoid open NULL - -Before open argv[optind], we should make sure that optind is less than -argc. - -Signed-off-by: Peng Liang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_make.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/kpatch_make.c b/src/kpatch_make.c -index 96f7b5a..89b335d 100644 ---- a/src/kpatch_make.c -+++ b/src/kpatch_make.c -@@ -127,7 +127,7 @@ int main(int argc, char **argv) - if (verbose) - log_level = LOG_DEBUG; - -- if (buildid == NULL || patch_id == NULL || *patch_id == '\0') -+ if (buildid == NULL || patch_id == NULL || *patch_id == '\0' || optind >= argc) - usage(); - - if (strlen(buildid) != KPATCH_BUILDID_LEN) { --- -2.27.0 - diff --git a/0127-bugfix-set-o-dynsyms-to-NULL-when-free-buffer.patch b/0127-bugfix-set-o-dynsyms-to-NULL-when-free-buffer.patch deleted file mode 100644 index 0f58127..0000000 --- a/0127-bugfix-set-o-dynsyms-to-NULL-when-free-buffer.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 08a29744fa7057be2efb8dec4925043019b9e617 Mon Sep 17 00:00:00 2001 -From: eillon -Date: Fri, 30 Jul 2021 22:17:23 -0400 -Subject: [PATCH 127/165] bugfix: set o->dynsyms to NULL when free buffer - -Currently, o->dynsyms points to 'buffer' if -buffer is malloced successfully. However, 'buffer' might -be freed when ret < 0. Then the o->dynsyms becomes a wild- -pointer and may cause memory access exceptions. - -So set o->dynsyms to NULL when free buffer. - -Signed-off-by: eillon -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_elf.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c -index 7914298..c0a1747 100644 ---- a/src/kpatch_elf.c -+++ b/src/kpatch_elf.c -@@ -631,6 +631,7 @@ elf_object_load_dynsym(struct object_file *o) - out_free: - if (rv < 0) { - free(buffer); -+ o->dynsyms = NULL; - } - free(dynamics); - --- -2.27.0 - diff --git a/0128-codesytle-keep-the-same-size-of-proc-memfd.patch b/0128-codesytle-keep-the-same-size-of-proc-memfd.patch deleted file mode 100644 index b20723e..0000000 --- a/0128-codesytle-keep-the-same-size-of-proc-memfd.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 3614d99b55adfc06d06fe5802ad6f2bb34f09c3a Mon Sep 17 00:00:00 2001 -From: eillon -Date: Fri, 30 Jul 2021 22:29:16 -0400 -Subject: [PATCH 128/165] codesytle: keep the same size of proc->memfd - -The proc->memfd is inited in kpatch_process_mem_open, -where it's max size is sizeof("/proc/0123456789/mem"). - -Keep the same here. - -Signed-off-by: eillon -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/arch/aarch64/arch_ptrace.c | 2 +- - src/arch/x86/arch_ptrace.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c -index c4a671e..e43a96d 100644 ---- a/src/arch/aarch64/arch_ptrace.c -+++ b/src/arch/aarch64/arch_ptrace.c -@@ -124,7 +124,7 @@ kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) - - /* Suddenly, /proc/pid/mem gets invalidated */ - { -- char buf[128]; -+ char buf[sizeof("/proc/0123456789/mem")]; - close(proc->memfd); - - snprintf(buf, sizeof(buf), "/proc/%d/mem", proc->pid); -diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c -index 838a106..d7439ab 100644 ---- a/src/arch/x86/arch_ptrace.c -+++ b/src/arch/x86/arch_ptrace.c -@@ -121,7 +121,7 @@ kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) - - /* Suddenly, /proc/pid/mem gets invalidated */ - { -- char buf[128]; -+ char buf[sizeof("/proc/0123456789/mem")]; - close(proc->memfd); - - snprintf(buf, sizeof(buf), "/proc/%d/mem", proc->pid); --- -2.27.0 - diff --git a/0129-optimize-Remove-unused-functions-and-add-check-for-s.patch b/0129-optimize-Remove-unused-functions-and-add-check-for-s.patch deleted file mode 100644 index 2295494..0000000 --- a/0129-optimize-Remove-unused-functions-and-add-check-for-s.patch +++ /dev/null @@ -1,104 +0,0 @@ -From 64aa0e909c9f4749ad434627948dcd1e077a9631 Mon Sep 17 00:00:00 2001 -From: eillon -Date: Fri, 30 Jul 2021 23:37:20 -0400 -Subject: [PATCH 129/165] optimize: Remove unused functions and add check for - some metadata. - -Signed-off-by: eillon -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/include/kpatch_ptrace.h | 4 ++-- - src/kpatch_elf.c | 15 ++++++++++++++- - src/kpatch_ptrace.c | 7 ++++--- - 3 files changed, 20 insertions(+), 6 deletions(-) - -diff --git a/src/include/kpatch_ptrace.h b/src/include/kpatch_ptrace.h -index fbd9ce5..42869e7 100644 ---- a/src/include/kpatch_ptrace.h -+++ b/src/include/kpatch_ptrace.h -@@ -33,8 +33,8 @@ struct process_mem_iter * - kpatch_process_mem_iter_init(kpatch_process_t *proc); - void kpatch_process_mem_iter_free(struct process_mem_iter *iter); - int kpatch_process_mem_iter_peek_ulong(struct process_mem_iter *iter, -- unsigned long *dst, -- unsigned long remote_addr); -+ unsigned long *dst, -+ unsigned long remote_addr); - int kpatch_process_mem_iter_peek(struct process_mem_iter *iter, - void *dst, size_t size, - unsigned long remote_addr); -diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c -index c0a1747..b7f2e98 100644 ---- a/src/kpatch_elf.c -+++ b/src/kpatch_elf.c -@@ -44,6 +44,11 @@ elf_object_peek_phdr(struct object_file *o) - sizeof(o->ehdr)); - if (rv < 0) - return rv; -+ -+ if (o->ehdr.e_phnum <= 0) { -+ kperr("Wrong ELF header: ehdr.e_phnum: %d\n", o->ehdr.e_phnum); -+ return -1; -+ } - } - - if (o->phdr == NULL) { -@@ -72,12 +77,20 @@ kpatch_elf_object_set_ehdr(struct object_file *o, - - - if (memcmp(buf, ELFMAG, SELFMAG)) { -- kpdebug("magic(%s) = %x%x%x%x\n", o->name, buf[0], buf[1], buf[2], buf[3]); -+ kperr("magic(%s) = %x%x%x%x\n", o->name, buf[0], buf[1], buf[2], buf[3]); - return -1; - } - - memcpy(&o->ehdr, buf, sizeof(o->ehdr)); - -+ /* check the metadata in o->ehdr */ -+ if (o->ehdr.e_phentsize != sizeof(Elf64_Phdr) || -+ o->ehdr.e_phnum <= 0) { -+ kperr("Wrong ELF header: ehdr.e_phentsize: %d, ehdr.e_phnum: %d\n", -+ o->ehdr.e_phentsize, o->ehdr.e_phnum); -+ return -1; -+ } -+ - if (bufsize < o->ehdr.e_phoff + o->ehdr.e_phentsize * o->ehdr.e_phnum) - return 0; - -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index 201eb41..dc11357 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -120,6 +120,7 @@ kpatch_process_mem_iter_init(kpatch_process_t *proc) - if (!iter) - return NULL; - -+ memset(iter, 0, sizeof(*iter) + pagesize); - iter->proc = proc; - iter->buflen = 0; - -@@ -161,8 +162,8 @@ int kpatch_process_mem_iter_peek(struct process_mem_iter *iter, - } - - int kpatch_process_mem_iter_peek_ulong(struct process_mem_iter *iter, -- unsigned long *dst, -- unsigned long remote_addr) -+ unsigned long *dst, -+ unsigned long remote_addr) - { - return kpatch_process_mem_iter_peek(iter, dst, sizeof(*dst), remote_addr); - } -@@ -523,7 +524,7 @@ kpatch_mmap_remote(struct kpatch_ptrace_ctx *pctx, - off_t offset) - { - int ret; -- unsigned long res; -+ unsigned long res = 0; - - kpdebug("mmap_remote: 0x%lx+%lx, %x, %x, %d, %lx\n", addr, length, - prot, flags, fd, offset); --- -2.27.0 - diff --git a/0130-kpatch_storage-adapt-some-indent-alignment-and-descr.patch b/0130-kpatch_storage-adapt-some-indent-alignment-and-descr.patch deleted file mode 100644 index 835db36..0000000 --- a/0130-kpatch_storage-adapt-some-indent-alignment-and-descr.patch +++ /dev/null @@ -1,129 +0,0 @@ -From d22749297b53e48aee9e5618b8f0cc42db3545a7 Mon Sep 17 00:00:00 2001 -From: Hao Wang -Date: Sun, 1 Aug 2021 15:30:07 +0800 -Subject: [PATCH 130/165] kpatch_storage: adapt some indent alignment and - description - -Signed-off-by: Hao Wang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/include/kpatch_storage.h | 2 +- - src/kpatch_storage.c | 24 +++++++++++------------- - 2 files changed, 12 insertions(+), 14 deletions(-) - -diff --git a/src/include/kpatch_storage.h b/src/include/kpatch_storage.h -index eb8064b..37ea255 100644 ---- a/src/include/kpatch_storage.h -+++ b/src/include/kpatch_storage.h -@@ -46,7 +46,7 @@ struct kpatch_storage { - typedef struct kpatch_storage kpatch_storage_t; - - int storage_init(kpatch_storage_t *storage, -- const char *fname); -+ const char *fname); - void storage_free(kpatch_storage_t *storage); - - enum { -diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c -index 8977329..1569a95 100644 ---- a/src/kpatch_storage.c -+++ b/src/kpatch_storage.c -@@ -48,25 +48,28 @@ patch_file_verify(struct kp_file *kpfile) - k->modulename); - return -1; - } -+ - if (k->total_size > size) { - kperr("'%s' patch is invalid: Invalid size: %u/%ld.\n", - k->modulename, k->total_size, size); - return -1; - } -+ - hdr = (void *)k + k->kpatch_offset; - if (memcmp(hdr->e_ident, ELFMAG, SELFMAG) || -- hdr->e_type != ET_REL || -- hdr->e_shentsize != sizeof(GElf_Shdr)) { -+ hdr->e_type != ET_REL || -+ hdr->e_shentsize != sizeof(GElf_Shdr)) { - kperr("'%s' patch is invalid: Wrong ELF header or not ET_REL\n", - k->modulename); - return -1; - } -+ - kpdebug("OK\n"); - return 1; - } - - int storage_init(kpatch_storage_t *storage, -- const char *fname) -+ const char *fname) - { - int patch_fd = -1; - struct stat stat = { .st_mode = 0 }; -@@ -105,11 +108,11 @@ int storage_init(kpatch_storage_t *storage, - } - - storage->path = strdup(fname); -- - return 0; - - out_close: - close(patch_fd); -+ - out_err: - kplogerror("cannot open storage '%s'\n", fname); - return -1; -@@ -209,7 +212,6 @@ storage_open_patch(kpatch_storage_t *storage, - patch->kpfile.patch->user_level = patch->patchlevel; - rv = PATCH_FOUND; - } -- - } - - return rv; -@@ -230,7 +232,6 @@ storage_stat_patch(kpatch_storage_t *storage, - sprintf(fname, pathtemplates[i], buildid); - - rv = fstatat(storage->patch_fd, fname, &buf, /* flags */ 0); -- - if (rv == 0) { - rv = PATCH_FOUND; - patch->kpfile.size = buf.st_size; -@@ -253,11 +254,8 @@ storage_stat_patch(kpatch_storage_t *storage, - return rv; - } - --/* -- * TODO(pboldin) I duplicate a lot of code kernel has for filesystems already. -- * Should we avoid this caching at all? -- */ - #define ERR_PATCH ((struct kpatch_storage_patch *)1) -+ - static struct kpatch_storage_patch * - storage_get_patch(kpatch_storage_t *storage, const char *buildid, - int load) -@@ -441,7 +439,7 @@ int storage_lookup_patches(kpatch_storage_t *storage, kpatch_process_t *proc) - if (ret == PATCH_OPEN_ERROR) { - if (errno != ENOENT) - kplogerror("error finding patch for %s (%s)\n", -- o->name, bid); -+ o->name, bid); - continue; - } - -@@ -462,8 +460,8 @@ int storage_lookup_patches(kpatch_storage_t *storage, kpatch_process_t *proc) - - static int - storage_execute_script(kpatch_storage_t *storage, -- kpatch_process_t *proc, -- const char *name) -+ kpatch_process_t *proc, -+ const char *name) - { - int childpid, rv = 0, status; - char pidbuf[16], pathbuf[PATH_MAX]; --- -2.27.0 - diff --git a/0131-tests-UT-support-aarch64-architecture.patch b/0131-tests-UT-support-aarch64-architecture.patch deleted file mode 100644 index c6e4de1..0000000 --- a/0131-tests-UT-support-aarch64-architecture.patch +++ /dev/null @@ -1,138 +0,0 @@ -From 8dfe390cff15636a161060a65c2715b9360257b4 Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Fri, 30 Jul 2021 20:06:23 +0800 -Subject: [PATCH 131/165] tests: UT support aarch64 architecture - -Support running UT in aarch64 architecture. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - tests/Makefile | 6 +++++ - .../fail_busy_single_top.c | 2 +- - .../fail_busy_single_top.diff | 2 +- - tests/run_tests.sh | 24 +++++++++++++++++++ - tests/tls_simple/tls_simple.c | 1 + - tests/tls_simple/tls_simple.diff | 4 ++-- - 6 files changed, 35 insertions(+), 4 deletions(-) - -diff --git a/tests/Makefile b/tests/Makefile -index cf44479..c9edaf3 100644 ---- a/tests/Makefile -+++ b/tests/Makefile -@@ -2,6 +2,12 @@ MAKEFLAGS += --no-builtin-rules - - SUBDIRS := $(patsubst %/desc,%,$(wildcard */desc)) - -+AARCH64_NO_SUPPORT_TESTS = fail_coro fail_coro_listed -+ARCH = $(shell uname -m) -+ifeq ($(ARCH), aarch64) -+ SUBDIRS := $(filter-out $(AARCH64_NO_SUPPORT_TESTS), $(SUBDIRS)) -+endif -+ - KPATCH_PATH:=$(CURDIR)/../src - export KPATCH_PATH - -diff --git a/tests/fail_busy_single_top/fail_busy_single_top.c b/tests/fail_busy_single_top/fail_busy_single_top.c -index 6e55b83..18935e8 100644 ---- a/tests/fail_busy_single_top/fail_busy_single_top.c -+++ b/tests/fail_busy_single_top/fail_busy_single_top.c -@@ -17,7 +17,7 @@ void do_work2() { - while (1) { - print_greetings(); - for (i = 0; i < INT_MAX / 50; i++) -- asm ("pause"); -+ sleep(1); - } - } - -diff --git a/tests/fail_busy_single_top/fail_busy_single_top.diff b/tests/fail_busy_single_top/fail_busy_single_top.diff -index e9a0300..9880342 100644 ---- a/tests/fail_busy_single_top/fail_busy_single_top.diff -+++ b/tests/fail_busy_single_top/fail_busy_single_top.diff -@@ -7,5 +7,5 @@ - - print_greetings(); - + print_greetings_patched(); - for (i = 0; i < INT_MAX / 50; i++) -- asm ("pause"); -+ sleep(1); - } -diff --git a/tests/run_tests.sh b/tests/run_tests.sh -index 2512963..de5244f 100755 ---- a/tests/run_tests.sh -+++ b/tests/run_tests.sh -@@ -510,6 +510,22 @@ should_skip() { - fi - fi - -+ if test "$ARCH" = "aarch64"; then -+ if test "$1" = "tls_shared" || \ -+ test "$1" = "tls_simple" || \ -+ test "$1" = "ref_glibc_data" || \ -+ test "$1" = "fail_coro_listed" || \ -+ test "$1" = "fail_coro"; then -+ return 0 -+ fi -+ -+ if test "$FLAVOR" = "test_unpatch_files"; then -+ if test "$1" = "frame_finish"; then -+ return 0 -+ fi -+ fi -+ fi -+ - case "$1" in - ifunc) - if grep -q 'release 6' /etc/redhat-release 2>/dev/null; then -@@ -542,6 +558,7 @@ main() { - - DESTDIR=build - FLAVOR=test_patch_files -+ ARCH=$(uname -m) - while getopts ":f:vqd:p:" opt "$@"; do - case $opt in - f) -@@ -585,6 +602,13 @@ main() { - exit 1 - esac - -+ if test "$ARCH" = "aarch64"; then -+ if test "$FLAVOR" = "test_patch_startup" || \ -+ test "$FLAVOR" = "test_patch_startup_ld_linux"; then -+ exit 0 -+ fi -+ fi -+ - PATCHROOT="${PATCHROOT-$PWD/$DESTDIR-patchroot}" - - shift $(($OPTIND - 1)) -diff --git a/tests/tls_simple/tls_simple.c b/tests/tls_simple/tls_simple.c -index 6914ac0..14b34cf 100644 ---- a/tests/tls_simple/tls_simple.c -+++ b/tests/tls_simple/tls_simple.c -@@ -7,6 +7,7 @@ - #include - #include - #include -+#include - - int *p; - int __thread v; -diff --git a/tests/tls_simple/tls_simple.diff b/tests/tls_simple/tls_simple.diff -index 543e7fb..848c667 100644 ---- a/tests/tls_simple/tls_simple.diff -+++ b/tests/tls_simple/tls_simple.diff -@@ -8,8 +8,8 @@ - + if (p == &v && v == 0xDEADBEAF) { - + printf("TLS PATCHED\n"); - + } else { --+ /* Provoke segfault w/o messing with %rax */ --+ asm ("movl $0, %ebx; movl $0, (%rbx)"); -++ /* Provoke segfault */ -++ strlen(NULL); - + } - } - --- -2.27.0 - diff --git a/0132-process-fix-some-exception-handling-problem-and-code.patch b/0132-process-fix-some-exception-handling-problem-and-code.patch deleted file mode 100644 index e22e36e..0000000 --- a/0132-process-fix-some-exception-handling-problem-and-code.patch +++ /dev/null @@ -1,121 +0,0 @@ -From debb038891dd0bb18742586fd9cd60e5f7799eab Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Sun, 1 Aug 2021 15:45:49 +0800 -Subject: [PATCH 132/165] process: fix some exception handling problem and code - alignment - -fix some exception handling problem and code alignment - -Signed-off-by: Chuan Zheng -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/arch/aarch64/arch_process.c | 5 ++--- - src/arch/x86/arch_process.c | 8 ++++---- - src/kpatch_process.c | 13 ++++++++----- - 3 files changed, 14 insertions(+), 12 deletions(-) - -diff --git a/src/arch/aarch64/arch_process.c b/src/arch/aarch64/arch_process.c -index 6fa6fdc..7ddf4aa 100644 ---- a/src/arch/aarch64/arch_process.c -+++ b/src/arch/aarch64/arch_process.c -@@ -50,8 +50,8 @@ object_find_patch_region(struct object_file *obj, - struct vm_hole **hole) - { - struct list_head *head = &obj->proc->vmaholes; -- struct vm_hole *left_hole = obj->previous_hole, -- *right_hole = next_hole(left_hole, head); -+ struct vm_hole *left_hole = obj->previous_hole; -+ struct vm_hole *right_hole = next_hole(left_hole, head); - unsigned long max_distance = 0x8000000; - struct obj_vm_area *sovma; - -@@ -112,4 +112,3 @@ object_find_patch_region(struct object_file *obj, - - return region_start; - } -- -diff --git a/src/arch/x86/arch_process.c b/src/arch/x86/arch_process.c -index 9b6ba84..7a15252 100644 ---- a/src/arch/x86/arch_process.c -+++ b/src/arch/x86/arch_process.c -@@ -45,12 +45,12 @@ - * patch region inside the (-2GiB, +2GiB) range from the original object. - */ - unsigned long object_find_patch_region(struct object_file *obj, -- size_t memsize, -- struct vm_hole **hole) -+ size_t memsize, -+ struct vm_hole **hole) - { - struct list_head *head = &obj->proc->vmaholes; -- struct vm_hole *left_hole = obj->previous_hole, -- *right_hole = next_hole(left_hole, head); -+ struct vm_hole *left_hole = obj->previous_hole; -+ struct vm_hole *right_hole = next_hole(left_hole, head); - unsigned long max_distance = 0x80000000; - struct obj_vm_area *sovma; - -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index 89cc0d1..f89356a 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -236,6 +236,8 @@ process_add_object_vma(kpatch_process_t *proc, - unsigned char header_buf[1024]; - struct object_file *o; - -+ /* Event though process_get_object_type() return -1, -+ * we still need continue process. */ - object_type = process_get_object_type(proc, - vma, - name, -@@ -276,8 +278,10 @@ process_add_object_vma(kpatch_process_t *proc, - rv = kpatch_elf_object_set_ehdr(o, - header_buf, - sizeof(header_buf)); -- if (rv < 0) -+ if (rv < 0) { - kperr("unable to kpatch_elf_object_set_ehdr\n"); -+ return -1; -+ } - } - - return 0; -@@ -405,6 +409,7 @@ process_add_vm_hole(kpatch_process_t *proc, - if (hole == NULL) - return NULL; - -+ memset(hole, 0, sizeof(*hole)); - hole->start = hole_start; - hole->end = hole_end; - -@@ -828,7 +833,6 @@ process_print_cmdline(kpatch_process_t *proc) - } - } - -- - err_close: - close(fd); - } -@@ -1073,8 +1077,7 @@ kpatch_object_allocate_patch(struct object_file *o, - PROT_READ | PROT_WRITE | PROT_EXEC, - MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - if (addr == 0) { -- kplogerror("remote alloc of 0x%lx bytes failed\n", -- addr); -+ kplogerror("remote alloc memory for patch failed\n"); - return -1; - } - -@@ -1185,7 +1188,7 @@ kpatch_process_get_obj_by_regex(kpatch_process_t *proc, const char *regex) - - struct object_file * - kpatch_object_get_applied_patch_by_id(struct object_file *o, -- const char *patch_id) -+ const char *patch_id) - { - struct obj_applied_patch *applied_patch; - --- -2.27.0 - diff --git a/0133-Fix-some-code-alignments.patch b/0133-Fix-some-code-alignments.patch deleted file mode 100644 index 012f22b..0000000 --- a/0133-Fix-some-code-alignments.patch +++ /dev/null @@ -1,166 +0,0 @@ -From 26c13fff7f1b49f5e5e43e49520c64f8ec673232 Mon Sep 17 00:00:00 2001 -From: Peng Liang -Date: Mon, 2 Aug 2021 11:21:15 +0800 -Subject: [PATCH 133/165] Fix some code alignments - -Signed-off-by: Peng Liang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/arch/x86/arch_coro.c | 2 +- - src/arch/x86/arch_patch.c | 2 +- - src/rbtree.c | 34 ++++++++++++---------------------- - 3 files changed, 14 insertions(+), 24 deletions(-) - -diff --git a/src/arch/x86/arch_coro.c b/src/arch/x86/arch_coro.c -index 27c834b..a1c4f4c 100644 ---- a/src/arch/x86/arch_coro.c -+++ b/src/arch/x86/arch_coro.c -@@ -83,7 +83,7 @@ locate_start_context_symbol(struct kpatch_process *proc, - } - - int get_ptr_guard(struct kpatch_process *proc, -- unsigned long *ptr_guard) -+ unsigned long *ptr_guard) - { - int ret; - unsigned long tls; -diff --git a/src/arch/x86/arch_patch.c b/src/arch/x86/arch_patch.c -index 91e041b..00c52ca 100644 ---- a/src/arch/x86/arch_patch.c -+++ b/src/arch/x86/arch_patch.c -@@ -33,7 +33,7 @@ - * This flag is local, i.e. it is never stored to the - * patch applied to patient's memory. - */ --unsigned int PATCH_APPLIED = (1 << 31); -+unsigned int PATCH_APPLIED = (1 << 31); - unsigned int HUNK_SIZE = 5; - - int patch_apply_hunk(struct object_file *o, size_t nhunk) -diff --git a/src/rbtree.c b/src/rbtree.c -index 6aff1d1..b7b8a1a 100644 ---- a/src/rbtree.c -+++ b/src/rbtree.c -@@ -155,8 +155,7 @@ __rb_insert(struct rb_node *node, struct rb_root *root) - WRITE_ONCE(parent->rb_right, tmp); - WRITE_ONCE(node->rb_left, parent); - if (tmp) -- rb_set_parent_color(tmp, parent, -- RB_BLACK); -+ rb_set_parent_color(tmp, parent, RB_BLACK); - rb_set_parent_color(parent, node, RB_RED); - parent = node; - tmp = node->rb_right; -@@ -196,8 +195,7 @@ __rb_insert(struct rb_node *node, struct rb_root *root) - WRITE_ONCE(parent->rb_left, tmp); - WRITE_ONCE(node->rb_right, parent); - if (tmp) -- rb_set_parent_color(tmp, parent, -- RB_BLACK); -+ rb_set_parent_color(tmp, parent, RB_BLACK); - rb_set_parent_color(parent, node, RB_RED); - parent = node; - tmp = node->rb_left; -@@ -247,8 +245,7 @@ ____rb_erase_color(struct rb_node *parent, struct rb_root *root) - WRITE_ONCE(parent->rb_right, tmp1); - WRITE_ONCE(sibling->rb_left, parent); - rb_set_parent_color(tmp1, parent, RB_BLACK); -- __rb_rotate_set_parents(parent, sibling, root, -- RB_RED); -+ __rb_rotate_set_parents(parent, sibling, root, RB_RED); - sibling = tmp1; - } - tmp1 = sibling->rb_right; -@@ -270,8 +267,7 @@ ____rb_erase_color(struct rb_node *parent, struct rb_root *root) - * if it was red, or by recursing at p. - * p is red when coming from Case 1. - */ -- rb_set_parent_color(sibling, parent, -- RB_RED); -+ rb_set_parent_color(sibling, parent, RB_RED); - if (rb_is_red(parent)) - rb_set_black(parent); - else { -@@ -314,8 +310,7 @@ ____rb_erase_color(struct rb_node *parent, struct rb_root *root) - WRITE_ONCE(tmp2->rb_right, sibling); - WRITE_ONCE(parent->rb_right, tmp2); - if (tmp1) -- rb_set_parent_color(tmp1, sibling, -- RB_BLACK); -+ rb_set_parent_color(tmp1, sibling, RB_BLACK); - tmp1 = sibling; - sibling = tmp2; - } -@@ -337,8 +332,7 @@ ____rb_erase_color(struct rb_node *parent, struct rb_root *root) - rb_set_parent_color(tmp1, sibling, RB_BLACK); - if (tmp2) - rb_set_parent(tmp2, parent); -- __rb_rotate_set_parents(parent, sibling, root, -- RB_BLACK); -+ __rb_rotate_set_parents(parent, sibling, root, RB_BLACK); - break; - } else { - sibling = parent->rb_left; -@@ -348,8 +342,7 @@ ____rb_erase_color(struct rb_node *parent, struct rb_root *root) - WRITE_ONCE(parent->rb_left, tmp1); - WRITE_ONCE(sibling->rb_right, parent); - rb_set_parent_color(tmp1, parent, RB_BLACK); -- __rb_rotate_set_parents(parent, sibling, root, -- RB_RED); -+ __rb_rotate_set_parents(parent, sibling, root, RB_RED); - sibling = tmp1; - } - tmp1 = sibling->rb_left; -@@ -357,8 +350,7 @@ ____rb_erase_color(struct rb_node *parent, struct rb_root *root) - tmp2 = sibling->rb_right; - if (!tmp2 || rb_is_black(tmp2)) { - /* Case 2 - sibling color flip */ -- rb_set_parent_color(sibling, parent, -- RB_RED); -+ rb_set_parent_color(sibling, parent, RB_RED); - if (rb_is_red(parent)) - rb_set_black(parent); - else { -@@ -375,8 +367,7 @@ ____rb_erase_color(struct rb_node *parent, struct rb_root *root) - WRITE_ONCE(tmp2->rb_left, sibling); - WRITE_ONCE(parent->rb_left, tmp2); - if (tmp1) -- rb_set_parent_color(tmp1, sibling, -- RB_BLACK); -+ rb_set_parent_color(tmp1, sibling, RB_BLACK); - tmp1 = sibling; - sibling = tmp2; - } -@@ -387,8 +378,7 @@ ____rb_erase_color(struct rb_node *parent, struct rb_root *root) - rb_set_parent_color(tmp1, sibling, RB_BLACK); - if (tmp2) - rb_set_parent(tmp2, parent); -- __rb_rotate_set_parents(parent, sibling, root, -- RB_BLACK); -+ __rb_rotate_set_parents(parent, sibling, root, RB_BLACK); - break; - } - } -@@ -427,7 +417,7 @@ void rb_erase(struct rb_node *node, struct rb_root *root) - */ - struct rb_node *rb_first(const struct rb_root *root) - { -- struct rb_node *n; -+ struct rb_node *n; - - n = root->rb_node; - if (!n) -@@ -440,7 +430,7 @@ struct rb_node *rb_first(const struct rb_root *root) - - struct rb_node *rb_last(const struct rb_root *root) - { -- struct rb_node *n; -+ struct rb_node *n; - - n = root->rb_node; - if (!n) --- -2.27.0 - diff --git a/0134-kpatch_gensrc-Call-close_file-to-avoid-memory-leak.patch b/0134-kpatch_gensrc-Call-close_file-to-avoid-memory-leak.patch deleted file mode 100644 index 2f6b2ae..0000000 --- a/0134-kpatch_gensrc-Call-close_file-to-avoid-memory-leak.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 84c42ef39944e45b45d566f0e70009ed9468e735 Mon Sep 17 00:00:00 2001 -From: Peng Liang -Date: Mon, 2 Aug 2021 11:56:48 +0800 -Subject: [PATCH 134/165] kpatch_gensrc: Call close_file to avoid memory leak - -Call close_file to avoid memory leak. - -Signed-off-by: Peng Liang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_gensrc.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c -index a407909..eea4df9 100644 ---- a/src/kpatch_gensrc.c -+++ b/src/kpatch_gensrc.c -@@ -1639,6 +1639,10 @@ int main(int argc, char **argv) - struct kp_file infile[2], outfile; - int ret = -1; - -+ memset(&infile[0], 0, sizeof(struct kp_file)); -+ infile[0].f = NULL; -+ memset(&infile[1], 0, sizeof(struct kp_file)); -+ infile[1].f = NULL; - memset(&outfile, 0, sizeof(struct kp_file)); - outfile.f = NULL; - while ((ch = getopt_long(argc, argv, "d:O:i:o:a:f", long_opts, 0)) != -1) { -@@ -1739,6 +1743,8 @@ int main(int argc, char **argv) - ret = 0; - - cleanup: -+ close_file(&infile[0]); -+ close_file(&infile[1]); - close_file(&outfile); - - return ret; --- -2.27.0 - diff --git a/0135-kpatch_io-Fix-memory-leak.patch b/0135-kpatch_io-Fix-memory-leak.patch deleted file mode 100644 index 0e982af..0000000 --- a/0135-kpatch_io-Fix-memory-leak.patch +++ /dev/null @@ -1,81 +0,0 @@ -From cc4e16057a6d4c42a4d9b9457c94c82c7ce16dd9 Mon Sep 17 00:00:00 2001 -From: Peng Liang -Date: Mon, 2 Aug 2021 14:05:41 +0800 -Subject: [PATCH 135/165] kpatch_io: Fix memory leak - -Fix memory leak of lines, lines_num, rpath, dirname, and basename. - -Signed-off-by: Peng Liang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_io.c | 31 ++++++++++++++++++++++++++----- - 1 file changed, 26 insertions(+), 5 deletions(-) - -diff --git a/src/kpatch_io.c b/src/kpatch_io.c -index 32964ae..4ee6d66 100644 ---- a/src/kpatch_io.c -+++ b/src/kpatch_io.c -@@ -34,6 +34,7 @@ int read_file(struct kp_file *file, const char *fname) - { - int sz = 64; - char buf[BUFSIZE]; -+ char *tmp = NULL; - - memset(file, 0, sizeof(*file)); - if (!strcmp(fname, "-")) -@@ -43,11 +44,13 @@ int read_file(struct kp_file *file, const char *fname) - - file->rpath = realpath(fname, NULL); - if (!file->rpath) -- file->rpath = ""; -- file->dirname = strdup(file->rpath); -- file->dirname = dirname(file->dirname); -- file->basename = strdup(file->rpath); -- file->basename = basename(file->basename); -+ file->rpath = strdup(""); -+ tmp = strdup(file->rpath); -+ file->dirname = strdup(dirname(file->dirname)); -+ free(tmp); -+ tmp = strdup(file->rpath); -+ file->basename = strdup(basename(file->basename)); -+ free(tmp); - - if (!file->f) - return errno; -@@ -67,6 +70,7 @@ int read_file(struct kp_file *file, const char *fname) - } - file->lines[0] = ""; /* make line with index 0 to be empty, so that our line numbers would match and editor for easier debugging, i.e. we start from index=1 */ - fclose(file->f); -+ file->f = NULL; - return 0; - } - -@@ -85,6 +89,23 @@ int create_file(struct kp_file *file, const char *fname) - - void close_file(struct kp_file *file) - { -+ int i; -+ -+ if (!file) { -+ return; -+ } -+ - if (file->f) - fclose(file->f); -+ -+ /* nr_lines starts from 1 */ -+ for (i = 1; i < file->nr_lines; ++i) { -+ free(file->lines[i]); -+ } -+ free(file->lines); -+ -+ free(file->lines_num); -+ free(file->rpath); -+ free(file->dirname); -+ free(file->basename); - } --- -2.27.0 - diff --git a/0136-kpatch_gensrc-Fix-memory-leak-of-renames.patch b/0136-kpatch_gensrc-Fix-memory-leak-of-renames.patch deleted file mode 100644 index df9eed3..0000000 --- a/0136-kpatch_gensrc-Fix-memory-leak-of-renames.patch +++ /dev/null @@ -1,74 +0,0 @@ -From 33038119bd1ab70327d0dd24834f3695d074c1e4 Mon Sep 17 00:00:00 2001 -From: Peng Liang -Date: Mon, 2 Aug 2021 15:16:30 +0800 -Subject: [PATCH 136/165] kpatch_gensrc: Fix memory leak of renames - -Free src and dst when a node is deleted from the tree and when the -process ends to avoid memory leak. - -Signed-off-by: Peng Liang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_gensrc.c | 19 +++++++++++++++++-- - 1 file changed, 17 insertions(+), 2 deletions(-) - -diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c -index eea4df9..1b189c4 100644 ---- a/src/kpatch_gensrc.c -+++ b/src/kpatch_gensrc.c -@@ -174,8 +174,10 @@ void rename_add(struct kp_file *f, kpstr_t *src, kpstr_t *dst) - if (r == NULL) { - kpfatal("Failed to malloc rbtree!\n"); - } -- r->src = *src; -- r->dst = *dst; -+ r->src.l = src->l; -+ r->src.s = strdup(src->s); -+ r->dst.l = dst->l; -+ r->dst.s = strdup(dst->s); - rb_insert_node(&f->renames, &r->rb, rename_cmp, (unsigned long)src); - } - -@@ -185,10 +187,20 @@ void rename_del(struct kp_file *f, kpstr_t *src) - r = rename_find(f, src); - if (r) { - rb_erase(&r->rb, &f->renames); -+ free(r->src.s); -+ free(r->dst.s); - free(r); - } - } - -+static void rename_free(struct rb_node *node) -+{ -+ struct rename *r = rb_entry(node, struct rename, rb); -+ free(r->src.s); -+ free(r->dst.s); -+ free(r); -+} -+ - int strcmp_after_rename(struct kp_file *f0, struct kp_file *f1, char *s0, char *s1) - { - kpstr_t t0, t1; -@@ -957,6 +969,7 @@ static void __name_add_kpatch_suffix(struct kp_file *f, kpstr_t *t, kpstr_t *bas - } - snprintf(tnew.s, tnew.l, "%.*s%s", basename->l, basename->s, suffix); - rename_add(f, t, &tnew); -+ free(tnew.s); - kplog(LOG_DEBUG, "RENAME[%d]: %.*s -> %.*s\n", f->id, t->l, t->s, tnew.l, tnew.s); - } - -@@ -1743,6 +1756,8 @@ int main(int argc, char **argv) - ret = 0; - - cleanup: -+ rb_destroy(&infile[0].renames, rename_free); -+ rb_destroy(&infile[1].renames, rename_free); - close_file(&infile[0]); - close_file(&infile[1]); - close_file(&outfile); --- -2.27.0 - diff --git a/0137-kpatch_gensrc-Fix-memory-leak-of-cblocks.patch b/0137-kpatch_gensrc-Fix-memory-leak-of-cblocks.patch deleted file mode 100644 index 11ee211..0000000 --- a/0137-kpatch_gensrc-Fix-memory-leak-of-cblocks.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 0ffb69384ae91ce85410ded77b06ffcd28a7c11d Mon Sep 17 00:00:00 2001 -From: Peng Liang -Date: Mon, 2 Aug 2021 15:17:59 +0800 -Subject: [PATCH 137/165] kpatch_gensrc: Fix memory leak of cblocks - -Because cblocks_by_start, cblocks_by_name, cblocks_by_human_name share -the same nodes, we only need to destroy one tree. Because the cleanup -is in the end of main, we don't need to set another 2 trees to NULL. - -Signed-off-by: Peng Liang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/include/kpatch_parse.h | 1 + - src/kpatch_gensrc.c | 6 ++++++ - src/kpatch_parse.c | 6 ++++++ - 3 files changed, 13 insertions(+) - -diff --git a/src/include/kpatch_parse.h b/src/include/kpatch_parse.h -index 0f41509..3a868e6 100644 ---- a/src/include/kpatch_parse.h -+++ b/src/include/kpatch_parse.h -@@ -116,6 +116,7 @@ int is_data_def(char *s, int type); - struct cblock *cblock_find_by_name(struct kp_file *f, kpstr_t *nm); - struct cblock *cblock_find_by_human_name(struct kp_file *f, kpstr_t *nm); - void cblocks_init(struct kp_file *f); -+void cblock_free_by_start(struct rb_node *node); - void cblock_print2(struct cblock *b0, struct cblock *b1); - struct cblock *cblock_first(struct kp_file *f); - struct cblock *cblock_next(struct cblock *blk); -diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c -index 1b189c4..7f8db2d 100644 ---- a/src/kpatch_gensrc.c -+++ b/src/kpatch_gensrc.c -@@ -1758,6 +1758,12 @@ int main(int argc, char **argv) - cleanup: - rb_destroy(&infile[0].renames, rename_free); - rb_destroy(&infile[1].renames, rename_free); -+ /* -+ * The nodes in cblocks_by_start, cblocks_by_name, and cblocks_by_human_name -+ * are same, so only need to free nodes in one tree. -+ */ -+ rb_destroy(&infile[0].cblocks_by_start, cblock_free_by_start); -+ rb_destroy(&infile[1].cblocks_by_start, cblock_free_by_start); - close_file(&infile[0]); - close_file(&infile[1]); - close_file(&outfile); -diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c -index 023246f..a260e47 100644 ---- a/src/kpatch_parse.c -+++ b/src/kpatch_parse.c -@@ -431,6 +431,12 @@ void cblocks_init(struct kp_file *f) - } - } - -+void cblock_free_by_start(struct rb_node *node) -+{ -+ struct cblock *cb = rb_entry(node, struct cblock, rbs); -+ free(cb); -+} -+ - void cblock_print2(struct cblock *b0, struct cblock *b1) - { - int i0, i1; --- -2.27.0 - diff --git a/0138-kpatch_io-Fix-memory-leak-of-section-and-ctype.patch b/0138-kpatch_io-Fix-memory-leak-of-section-and-ctype.patch deleted file mode 100644 index b39317e..0000000 --- a/0138-kpatch_io-Fix-memory-leak-of-section-and-ctype.patch +++ /dev/null @@ -1,88 +0,0 @@ -From e129a1e537cea7c7704ee10010f03d02dd01f377 Mon Sep 17 00:00:00 2001 -From: Peng Liang -Date: Mon, 2 Aug 2021 15:39:21 +0800 -Subject: [PATCH 138/165] kpatch_io: Fix memory leak of section and ctype - -Fix memory leak of section and ctype - -Signed-off-by: Peng Liang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/include/kpatch_parse.h | 1 + - src/kpatch_io.c | 3 +++ - src/kpatch_parse.c | 19 +++++++++++++++++++ - 3 files changed, 23 insertions(+) - -diff --git a/src/include/kpatch_parse.h b/src/include/kpatch_parse.h -index 3a868e6..a36a015 100644 ---- a/src/include/kpatch_parse.h -+++ b/src/include/kpatch_parse.h -@@ -71,6 +71,7 @@ struct section_desc { - struct section_desc *find_section(char *name); - struct section_desc *csect(struct kp_file *f, int l); - void init_sections(struct kp_file *f); -+void free_sections(struct kp_file *f); - - int is_data_sect(struct section_desc *sect); - int is_code_sect(struct section_desc *sect); -diff --git a/src/kpatch_io.c b/src/kpatch_io.c -index 4ee6d66..f563163 100644 ---- a/src/kpatch_io.c -+++ b/src/kpatch_io.c -@@ -12,6 +12,7 @@ - #include "include/kpatch_log.h" - #include "include/kpatch_io.h" - #include "include/kpatch_str.h" -+#include "include/kpatch_parse.h" - - void *kp_realloc(void *p, int oldsz, int newsz) - { -@@ -108,4 +109,6 @@ void close_file(struct kp_file *file) - free(file->rpath); - free(file->dirname); - free(file->basename); -+ free_sections(file); -+ free(file->ctype); - } -diff --git a/src/kpatch_parse.c b/src/kpatch_parse.c -index a260e47..ddf58f8 100644 ---- a/src/kpatch_parse.c -+++ b/src/kpatch_parse.c -@@ -544,6 +544,7 @@ static struct section_desc *dup_section(struct section_desc *sect) - } - - *s = *sect; -+ s->name = strdup(sect->name); - s->prev = NULL; - memset(&s->rbnm, 0, sizeof(s->rbnm)); - return s; -@@ -666,6 +667,24 @@ void init_sections(struct kp_file *f) - } - } - -+void free_sections(struct kp_file *f) -+{ -+ struct section_desc **secs = NULL; -+ int i; -+ -+ if (!f || !f->section) { -+ return; -+ } -+ secs = (struct section_desc **)f->section; -+ for (i = 1; i < f->nr_lines; ++i) { -+ if (secs[i] != secs[i - 1]) { -+ free(secs[i]->name); -+ free(secs[i]); -+ } -+ } -+ free(secs); -+} -+ - /* ----------------------------------------- code block boundaries detection ---------------------------------------- */ - int is_function_end(struct kp_file *f, int l, kpstr_t *nm) - { --- -2.27.0 - diff --git a/0139-optimize-fix-uninitialized-variable.patch b/0139-optimize-fix-uninitialized-variable.patch deleted file mode 100644 index d370a83..0000000 --- a/0139-optimize-fix-uninitialized-variable.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 0ea46f2114730df1c091c642085486d62dc70d83 Mon Sep 17 00:00:00 2001 -From: Hao Wang -Date: Mon, 2 Aug 2021 11:03:17 +0800 -Subject: [PATCH 139/165] optimize: fix uninitialized variable - -Signed-off-by: Hao Wang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/arch/x86/arch_ptrace.c | 4 +++- - src/include/kpatch_storage.h | 2 +- - src/kpatch_elf.c | 2 +- - 3 files changed, 5 insertions(+), 3 deletions(-) - -diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c -index d7439ab..3e3d497 100644 ---- a/src/arch/x86/arch_ptrace.c -+++ b/src/arch/x86/arch_ptrace.c -@@ -224,7 +224,8 @@ int kpatch_arch_syscall_remote(struct kpatch_ptrace_ctx *pctx, int nr, - int kpatch_arch_prctl_remote(struct kpatch_ptrace_ctx *pctx, int code, unsigned long *addr) - { - struct user_regs_struct regs; -- unsigned long res, rsp; -+ unsigned long res = (unsigned long)-MAX_ERRNO; -+ unsigned long rsp; - int ret; - - kpdebug("arch_prctl_remote: %d, %p\n", code, addr); -@@ -262,6 +263,7 @@ poke: - regs.rsp, - sizeof(rsp))) - kplogerror("can't poke orig stack data\n"); -+ - *addr = res; - return ret; - } -diff --git a/src/include/kpatch_storage.h b/src/include/kpatch_storage.h -index 37ea255..ce3b9e6 100644 ---- a/src/include/kpatch_storage.h -+++ b/src/include/kpatch_storage.h -@@ -11,7 +11,7 @@ struct kpatch_storage_patch { - struct kp_file kpfile; - - /* Build id kept here for negative caching */ -- char buildid[41]; -+ char buildid[KPATCH_BUILDID_LEN + 1]; - - /* Patch level */ - int patchlevel; -diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c -index b7f2e98..7007d72 100644 ---- a/src/kpatch_elf.c -+++ b/src/kpatch_elf.c -@@ -145,7 +145,7 @@ elf_object_look_for_buildid(struct object_file *o) - continue; - - data += nhdr->n_namesz; -- for (i = 0; i < 40; i+=2, data++) -+ for (i = 0; i < KPATCH_BUILDID_LEN; i+=2, data++) - sprintf(o->buildid + i, "%02hhx", *data); - - kpdebug("read '%s'\n", o->buildid); --- -2.27.0 - diff --git a/0140-kpatch_patch-fix-possible-memory-leaks.patch b/0140-kpatch_patch-fix-possible-memory-leaks.patch deleted file mode 100644 index 9940f7f..0000000 --- a/0140-kpatch_patch-fix-possible-memory-leaks.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 9d08f362b03c875b93c548bc349ed8a1b5b44dae Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Sun, 1 Aug 2021 17:02:58 +0800 -Subject: [PATCH 140/165] kpatch_patch: fix possible memory leaks - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_patch.c | 22 ++++++++++++++++++---- - 1 file changed, 18 insertions(+), 4 deletions(-) - -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index fc961fc..693e94d 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -548,6 +548,23 @@ out: - return ret; - } - -+static int -+object_kpatch_info_realloc(struct object_file *o, size_t nalloc) -+{ -+ struct kpatch_info *tmp = NULL; -+ -+ tmp = realloc(o->info, nalloc * sizeof(struct kpatch_info)); -+ if (tmp == NULL) { -+ kperr("Failed to realloc o->info!\n"); -+ free(o->info); -+ o->info = NULL; -+ o->ninfo = 0; -+ return -1; -+ } -+ -+ o->info = tmp; -+ return 0; -+} - - /***************************************************************************** - * Patch cancellcation subroutines and cmd_unpatch_user -@@ -592,10 +609,7 @@ object_find_applied_patch_info(struct object_file *o) - - if (o->ninfo == nalloc) { - nalloc += 16; -- o->info = realloc(o->info, nalloc * sizeof(tmpinfo)); -- if (o->info == NULL) { -- kperr("Failed to realloc o->info!\n"); -- o->ninfo = 0; -+ if (object_kpatch_info_realloc(o, nalloc) < 0) { - ret = -1; - goto err; - } --- -2.27.0 - diff --git a/0141-kpatch-fix-some-codeing-problems.patch b/0141-kpatch-fix-some-codeing-problems.patch deleted file mode 100644 index e25ec41..0000000 --- a/0141-kpatch-fix-some-codeing-problems.patch +++ /dev/null @@ -1,70 +0,0 @@ -From c6b315253c7d2de4f121e7f7fc5c24e7c7a25179 Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Mon, 2 Aug 2021 11:51:02 +0800 -Subject: [PATCH 141/165] kpatch: fix some codeing problems - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_patch.c | 3 ++- - src/kpatch_process.c | 2 ++ - src/kpatch_strip.c | 9 +++++++-- - 3 files changed, 11 insertions(+), 3 deletions(-) - -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index 693e94d..148ac29 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -394,7 +394,8 @@ object_apply_patch(struct object_file *o) - o->kpta, - kp->total_size); - if (ret < 0) -- return -1; -+ return ret; -+ - if (o->jmp_table) { - ret = kpatch_process_mem_write(o->proc, - o->jmp_table, -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index f89356a..d5eaeea 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -507,6 +507,8 @@ kpatch_process_parse_proc_maps(kpatch_process_t *proc) - r = sscanf(line, "%lx-%lx %s %lx %x:%x %d %255s", - &start, &end, perms, &offset, - &maj, &min, &inode, name_); -+ if (r == EOF) -+ goto error; - if (r != 8) - strcpy(name, "[anonymous]"); - -diff --git a/src/kpatch_strip.c b/src/kpatch_strip.c -index cc573d1..5717e5a 100644 ---- a/src/kpatch_strip.c -+++ b/src/kpatch_strip.c -@@ -135,7 +135,7 @@ static int kpatch_strip(Elf *elfin, Elf *elfout) - { - GElf_Ehdr ehin, ehout; - Elf_Scn *scnin = NULL, *scnout = NULL; -- Elf_Data *dataout; -+ Elf_Data *dataout, *tmp; - GElf_Shdr shin, shout; - Elf64_Off off = -1ull; - size_t shstridx; -@@ -202,7 +202,12 @@ static int kpatch_strip(Elf *elfin, Elf *elfout) - kperr("Failed to do elf_newdata"); - return -1; - } -- *dataout = *elf_getdata(scnin, NULL); -+ tmp = elf_getdata(scnin, NULL); -+ if (tmp == NULL) { -+ kperr("Failed to do elf_getdata"); -+ return -1; -+ } -+ *dataout = *tmp; - off += shin.sh_size; - if (!strcmp(scnname, ".kpatch.info")) { - offset = process_kpatch_info(scnout, &shout); --- -2.27.0 - diff --git a/0142-kpatch_process-fix-memory-leak.patch b/0142-kpatch_process-fix-memory-leak.patch deleted file mode 100644 index babd0cf..0000000 --- a/0142-kpatch_process-fix-memory-leak.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 41ae031c1e84866dc67d709064c215657d8cfeca Mon Sep 17 00:00:00 2001 -From: Hao Wang -Date: Mon, 2 Aug 2021 21:50:12 +0800 -Subject: [PATCH 142/165] kpatch_process: fix memory leak - -Signed-off-by: Hao Wang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_process.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index d5eaeea..aa5ce27 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -349,8 +349,9 @@ object_destroy(struct object_file *o) - if (o->is_patch) { - free(o->info); - } -- if (o->num_applied_patch == 0) -+ if (o->kpfile.patch) { - free(o->kpfile.patch); -+ } - free(o); - } - --- -2.27.0 - diff --git a/0143-kpatch_process-fix-double-free.patch b/0143-kpatch_process-fix-double-free.patch deleted file mode 100644 index bbbc3ee..0000000 --- a/0143-kpatch_process-fix-double-free.patch +++ /dev/null @@ -1,52 +0,0 @@ -From a81b6e4b8a3b7b7d6deb120906521a07a67b4e5f Mon Sep 17 00:00:00 2001 -From: Hao Wang -Date: Tue, 3 Aug 2021 00:11:23 +0800 -Subject: [PATCH 143/165] kpatch_process: fix double free - -Signed-off-by: Hao Wang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/include/kpatch_process.h | 3 +++ - src/kpatch_process.c | 3 ++- - 2 files changed, 5 insertions(+), 1 deletion(-) - -diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h -index 56b4be1..2e23f00 100644 ---- a/src/include/kpatch_process.h -+++ b/src/include/kpatch_process.h -@@ -136,6 +136,9 @@ struct object_file { - - /* Is it an unpatch target */ - unsigned int is_unpatch_target_elf:1; -+ -+ /* Is kpfile duplicated */ -+ unsigned int is_kpfile_dup:1; - }; - - struct kpatch_process { -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index aa5ce27..04c02f2 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -166,6 +166,7 @@ process_new_object(kpatch_process_t *proc, - o->ndynsyms = 0; - o->dynsymnames = NULL; - init_kp_file(&o->kpfile); -+ o->is_kpfile_dup = 0; - - list_add(&o->list, &proc->objs); - proc->num_objs++; -@@ -349,7 +350,7 @@ object_destroy(struct object_file *o) - if (o->is_patch) { - free(o->info); - } -- if (o->kpfile.patch) { -+ if (o->is_kpfile_dup && o->kpfile.patch) { - free(o->kpfile.patch); - } - free(o); --- -2.27.0 - diff --git a/0144-kpatch_gensrc-Fix-use-after-free.patch b/0144-kpatch_gensrc-Fix-use-after-free.patch deleted file mode 100644 index 40defd9..0000000 --- a/0144-kpatch_gensrc-Fix-use-after-free.patch +++ /dev/null @@ -1,32 +0,0 @@ -From da6e00392f6fc65f102f3b0f57075fa9aed95e0c Mon Sep 17 00:00:00 2001 -From: Peng Liang -Date: Tue, 3 Aug 2021 10:17:22 +0800 -Subject: [PATCH 144/165] kpatch_gensrc: Fix use after free - -Fix: 37b7f4f3d0 ("kpatch_gensrc: Fix memory leak of renames") - -Signed-off-by: Peng Liang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_gensrc.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c -index 7f8db2d..64c2f10 100644 ---- a/src/kpatch_gensrc.c -+++ b/src/kpatch_gensrc.c -@@ -969,8 +969,8 @@ static void __name_add_kpatch_suffix(struct kp_file *f, kpstr_t *t, kpstr_t *bas - } - snprintf(tnew.s, tnew.l, "%.*s%s", basename->l, basename->s, suffix); - rename_add(f, t, &tnew); -- free(tnew.s); - kplog(LOG_DEBUG, "RENAME[%d]: %.*s -> %.*s\n", f->id, t->l, t->s, tnew.l, tnew.s); -+ free(tnew.s); - } - - static void cblock_make_new_labels(struct cblock *b) --- -2.27.0 - diff --git a/0145-kpatch_io-Fix-NULL-dereference.patch b/0145-kpatch_io-Fix-NULL-dereference.patch deleted file mode 100644 index 1226ecd..0000000 --- a/0145-kpatch_io-Fix-NULL-dereference.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 47464f75866aae31c781d51672c9b7ad42a72279 Mon Sep 17 00:00:00 2001 -From: Peng Liang -Date: Tue, 3 Aug 2021 17:46:10 +0800 -Subject: [PATCH 145/165] kpatch_io: Fix NULL dereference - -We should check the return value of strdup to avoid NULL dereference. - -Signed-off-by: Peng Liang -Signed-off-by: imxcc -Signed-off-by: Bihong Yu -Reviewed-by: Bihong Yu ---- - src/kpatch_io.c | 21 +++++++++++++++------ - 1 file changed, 15 insertions(+), 6 deletions(-) - -diff --git a/src/kpatch_io.c b/src/kpatch_io.c -index f563163..08f6e46 100644 ---- a/src/kpatch_io.c -+++ b/src/kpatch_io.c -@@ -31,6 +31,15 @@ void *kp_realloc(void *p, int oldsz, int newsz) - return p2; - } - -+static char *kp_strdup(const char *s) -+{ -+ char *new = strdup(s); -+ if (new == NULL) { -+ kpfatal("failed to allocate memory"); -+ } -+ return new; -+} -+ - int read_file(struct kp_file *file, const char *fname) - { - int sz = 64; -@@ -45,12 +54,12 @@ int read_file(struct kp_file *file, const char *fname) - - file->rpath = realpath(fname, NULL); - if (!file->rpath) -- file->rpath = strdup(""); -- tmp = strdup(file->rpath); -- file->dirname = strdup(dirname(file->dirname)); -+ file->rpath = kp_strdup(""); -+ tmp = kp_strdup(file->rpath); -+ file->dirname = kp_strdup(dirname(tmp)); - free(tmp); -- tmp = strdup(file->rpath); -- file->basename = strdup(basename(file->basename)); -+ tmp = kp_strdup(file->rpath); -+ file->basename = kp_strdup(basename(tmp)); - free(tmp); - - if (!file->f) -@@ -67,7 +76,7 @@ int read_file(struct kp_file *file, const char *fname) - break; - - trim_crlf(buf); -- file->lines[file->nr_lines++] = strdup(buf); -+ file->lines[file->nr_lines++] = kp_strdup(buf); - } - file->lines[0] = ""; /* make line with index 0 to be empty, so that our line numbers would match and editor for easier debugging, i.e. we start from index=1 */ - fclose(file->f); --- -2.27.0 - diff --git a/0146-process-Revert-codedex-fix-double-free.patch b/0146-process-Revert-codedex-fix-double-free.patch deleted file mode 100644 index e6df4a5..0000000 --- a/0146-process-Revert-codedex-fix-double-free.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 5b9a00d2ea3d9d51784d077846913d6f87bf0e5b Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Tue, 3 Aug 2021 19:45:51 +0800 -Subject: [PATCH 146/165] process: Revert "codedex: fix double free" - -Revert "codedex: fix double free" -This reverts commit 501ad445eced2d4297fa2cb6ee4bceb94300d7f7. - -Signed-off-by: yubihong -Signed-off-by: imxcc ---- - src/include/kpatch_process.h | 3 --- - src/kpatch_process.c | 3 +-- - 2 files changed, 1 insertion(+), 5 deletions(-) - -diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h -index 2e23f00..56b4be1 100644 ---- a/src/include/kpatch_process.h -+++ b/src/include/kpatch_process.h -@@ -136,9 +136,6 @@ struct object_file { - - /* Is it an unpatch target */ - unsigned int is_unpatch_target_elf:1; -- -- /* Is kpfile duplicated */ -- unsigned int is_kpfile_dup:1; - }; - - struct kpatch_process { -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index 04c02f2..aa5ce27 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -166,7 +166,6 @@ process_new_object(kpatch_process_t *proc, - o->ndynsyms = 0; - o->dynsymnames = NULL; - init_kp_file(&o->kpfile); -- o->is_kpfile_dup = 0; - - list_add(&o->list, &proc->objs); - proc->num_objs++; -@@ -350,7 +349,7 @@ object_destroy(struct object_file *o) - if (o->is_patch) { - free(o->info); - } -- if (o->is_kpfile_dup && o->kpfile.patch) { -+ if (o->kpfile.patch) { - free(o->kpfile.patch); - } - free(o); --- -2.27.0 - diff --git a/0147-process-malloc-new-memory-to-store-target-object-s-k.patch b/0147-process-malloc-new-memory-to-store-target-object-s-k.patch deleted file mode 100644 index e4261cd..0000000 --- a/0147-process-malloc-new-memory-to-store-target-object-s-k.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 542777ed3322898fe6ffee4fe4d1a75ffd356468 Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Tue, 3 Aug 2021 20:20:58 +0800 -Subject: [PATCH 147/165] process: malloc new memory to store target object's - kpfile.patch during unpatching - -During unapply processing, the kpfile.patch pointed adderss of the kpatch -object is also assign to the target object's kpfile.patch. It's high -risk to do this which will cause double free. So we mallocate new memory -to store target object's kpfile.patch during unpatching. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_process.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index aa5ce27..d8cf6ad 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -425,6 +425,7 @@ kpatch_process_associate_patches(kpatch_process_t *proc, const char *patch_id) - struct object_file *o, *objpatch; - size_t found = 0; - size_t unpatch_target_elf_num = 0; -+ struct kpatch_file *patch = NULL; - - list_for_each_entry(objpatch, &proc->objs, list) { - -@@ -448,8 +449,16 @@ kpatch_process_associate_patches(kpatch_process_t *proc, const char *patch_id) - struct obj_vm_area, - list); - o->kpta = patchvma->inmem.start; -- o->kpfile = objpatch->kpfile; - o->is_unpatch_target_elf = 1; -+ -+ /* copy kpatch object kpfile information */ -+ patch = malloc(sizeof(struct kpatch_file)); -+ if (patch == NULL) -+ return -1; -+ memcpy(patch, objpatch->kpfile.patch, sizeof(struct kpatch_file)); -+ o->kpfile.patch = patch; -+ o->kpfile.size = objpatch->kpfile.size; -+ - unpatch_target_elf_num++; - } - --- -2.27.0 - diff --git a/0148-ptrace-fix-NULL-pointer-access-problem.patch b/0148-ptrace-fix-NULL-pointer-access-problem.patch deleted file mode 100644 index fa3eac8..0000000 --- a/0148-ptrace-fix-NULL-pointer-access-problem.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 8b1a45726675020196922e6e12d2f7596a20dc7e Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Mon, 9 Aug 2021 16:16:27 +0800 -Subject: [PATCH 148/165] ptrace: fix NULL pointer access problem - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/arch/aarch64/arch_ptrace.c | 7 ++++++- - src/arch/x86/arch_ptrace.c | 7 ++++++- - 2 files changed, 12 insertions(+), 2 deletions(-) - -diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c -index e43a96d..72e5853 100644 ---- a/src/arch/aarch64/arch_ptrace.c -+++ b/src/arch/aarch64/arch_ptrace.c -@@ -451,8 +451,13 @@ kpatch_arch_ptrace_waitpid(kpatch_process_t *proc, - * Bail out. - */ - pctx = kpatch_ptrace_find_thread(proc, pid, 0); -- if (pctx != NULL) -+ if (pctx != NULL) { - pctx->running = 0; -+ kperr("the thread ran out: %d, pc= %llx, expected = %lx\n", -+ pid, regs.pc, pctx->execute_until); -+ } else { -+ kperr("the thread ran out: %d, pc= %llx\n", pid, regs.pc); -+ } - - /* TODO: fix the latter by SINGLESTEPping such a thread with - * the original instruction in place */ -diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c -index 3e3d497..e208fda 100644 ---- a/src/arch/x86/arch_ptrace.c -+++ b/src/arch/x86/arch_ptrace.c -@@ -478,8 +478,13 @@ int kpatch_arch_ptrace_waitpid(kpatch_process_t *proc, - * Bail out. - */ - pctx = kpatch_ptrace_find_thread(proc, pid, 0); -- if (pctx != NULL) -+ if (pctx != NULL) { - pctx->running = 0; -+ kperr("the thread ran out: %d, rip = %llx, expected = %lx\n", -+ pid, regs.rip, pctx->execute_until); -+ } else { -+ kperr("the thread ran out: %d, rip = %llx\n", pid, regs.rip); -+ } - - /* TODO: fix the latter by SINGLESTEPping such a thread with - * the original instruction in place */ --- -2.27.0 - diff --git a/0149-ptrace-check-the-return-value-of-open-function.patch b/0149-ptrace-check-the-return-value-of-open-function.patch deleted file mode 100644 index 22c27df..0000000 --- a/0149-ptrace-check-the-return-value-of-open-function.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 701b62f3ffef12dcfef3184cc65650de710f85ac Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Mon, 9 Aug 2021 20:35:48 +0800 -Subject: [PATCH 149/165] ptrace: check the return value of open function - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/arch/aarch64/arch_ptrace.c | 4 ++++ - src/arch/x86/arch_ptrace.c | 4 ++++ - 2 files changed, 8 insertions(+) - -diff --git a/src/arch/aarch64/arch_ptrace.c b/src/arch/aarch64/arch_ptrace.c -index 72e5853..774dc21 100644 ---- a/src/arch/aarch64/arch_ptrace.c -+++ b/src/arch/aarch64/arch_ptrace.c -@@ -129,6 +129,10 @@ kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) - - snprintf(buf, sizeof(buf), "/proc/%d/mem", proc->pid); - proc->memfd = open(buf, O_RDWR); -+ if (proc->memfd < 0) { -+ kplogerror("Failed to open proc mem\n"); -+ return -1; -+ } - } - - kpdebug("...done\n"); -diff --git a/src/arch/x86/arch_ptrace.c b/src/arch/x86/arch_ptrace.c -index e208fda..9069484 100644 ---- a/src/arch/x86/arch_ptrace.c -+++ b/src/arch/x86/arch_ptrace.c -@@ -126,6 +126,10 @@ kpatch_arch_ptrace_kickstart_execve_wrapper(kpatch_process_t *proc) - - snprintf(buf, sizeof(buf), "/proc/%d/mem", proc->pid); - proc->memfd = open(buf, O_RDWR); -+ if (proc->memfd < 0) { -+ kplogerror("Failed to open proc mem\n"); -+ return -1; -+ } - } - - kpdebug("...done\n"); --- -2.27.0 - diff --git a/0150-log-optimize-some-descriptions-and-formats-of-logs.patch b/0150-log-optimize-some-descriptions-and-formats-of-logs.patch deleted file mode 100644 index 3296fd8..0000000 --- a/0150-log-optimize-some-descriptions-and-formats-of-logs.patch +++ /dev/null @@ -1,83 +0,0 @@ -From db3a4ad5c6c75302b019f8eea166245b59d4748d Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Tue, 10 Aug 2021 09:42:37 +0800 -Subject: [PATCH 150/165] log: optimize some descriptions and formats of logs - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_common.c | 4 ++-- - src/kpatch_patch.c | 2 +- - src/kpatch_storage.c | 14 ++++++++------ - 3 files changed, 11 insertions(+), 9 deletions(-) - -diff --git a/src/kpatch_common.c b/src/kpatch_common.c -index 95d4a54..bbc9eed 100644 ---- a/src/kpatch_common.c -+++ b/src/kpatch_common.c -@@ -42,14 +42,14 @@ int kpatch_open_fd(int fd, struct kp_file *kpatch) - - kpdebug("OK\nQuerying file size..."); - if (fstat(fd, &st) == -1) { -- kpdebug("FAIL: %s\n", strerror(errno)); -+ kperr("FSTAT FAIL: %s\n", strerror(errno)); - return -1; - } - kpdebug("OK\nMapping patch file..."); - kpatch->size = st.st_size; - kpatch->patch = mmap(NULL, st.st_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); - if (kpatch->patch == MAP_FAILED) { -- kpdebug("FAIL: %s\n", strerror(errno)); -+ kperr("MMAP FAIL: %s\n", strerror(errno)); - return -1; - } - -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index 148ac29..98e8b9f 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -773,7 +773,7 @@ out_free: - if (is_calc_time) { - gettimeofday(&end_tv, NULL); - frozen_time = GET_MICROSECONDS(end_tv, start_tv); -- kpinfo("PID '%d' process unpatch frozen_time is %ld microsecond\n", pid, frozen_time); -+ kpinfo("PID '%d' process unpatch frozen_time is %lu microsecond\n", pid, frozen_time); - } - - out: -diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c -index 1569a95..8798d25 100644 ---- a/src/kpatch_storage.c -+++ b/src/kpatch_storage.c -@@ -80,11 +80,15 @@ int storage_init(kpatch_storage_t *storage, - } - - patch_fd = open(fname, O_RDONLY | O_CLOEXEC); -- if (patch_fd < 0) -- goto out_err; -+ if (patch_fd < 0) { -+ kperr("cannot open storage '%s'\n", fname); -+ return -1; -+ } - -- if (fstat(patch_fd, &stat) < 0) -- goto out_close; -+ if (fstat(patch_fd, &stat) < 0) { -+ kperr("FSTAT FAIL: %s\n", strerror(errno)); -+ goto out_close; -+ } - - storage->patch_fd = patch_fd; - storage->is_patch_dir = S_ISDIR(stat.st_mode); -@@ -113,8 +117,6 @@ int storage_init(kpatch_storage_t *storage, - out_close: - close(patch_fd); - --out_err: -- kplogerror("cannot open storage '%s'\n", fname); - return -1; - } - --- -2.27.0 - diff --git a/0151-security-replace-sprintf-with-snprintf-to-ensure-saf.patch b/0151-security-replace-sprintf-with-snprintf-to-ensure-saf.patch deleted file mode 100644 index b51ad0b..0000000 --- a/0151-security-replace-sprintf-with-snprintf-to-ensure-saf.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 7065a65862d5b72f63fd28945cc65644c914f731 Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Tue, 10 Aug 2021 11:15:13 +0800 -Subject: [PATCH 151/165] security: replace sprintf with snprintf to ensure - safety - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/include/kpatch_process.h | 3 +++ - src/kpatch_process.c | 9 ++++++--- - src/kpatch_ptrace.c | 4 ++-- - 3 files changed, 11 insertions(+), 5 deletions(-) - -diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h -index 56b4be1..cdde8c8 100644 ---- a/src/include/kpatch_process.h -+++ b/src/include/kpatch_process.h -@@ -26,6 +26,9 @@ - #include "kpatch_file.h" - #include "list.h" - -+/* "[kpatch-]" string length */ -+#define KPATCH_OBJECT_NAME_LEN (KPATCH_BUILDID_LEN + sizeof("[kpatch-]")) -+ - struct kpatch_process; - typedef struct kpatch_process kpatch_process_t; - -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index d8cf6ad..243580f 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -209,7 +209,8 @@ process_get_object_type(kpatch_process_t *proc, - struct kpatch_file *pkpfile = (struct kpatch_file *)buf; - - if (!strcmp(pkpfile->magic, KPATCH_FILE_MAGIC1)) { -- sprintf(name, "[kpatch-%s]", pkpfile->buildid); -+ snprintf(name, KPATCH_OBJECT_NAME_LEN, -+ "[kpatch-%s]", pkpfile->buildid); - return type; - } - } -@@ -816,7 +817,8 @@ process_print_cmdline(kpatch_process_t *proc) - int fd; - ssize_t i, rv; - -- sprintf(buf, "/proc/%d/cmdline", proc->pid); -+ snprintf(buf, sizeof("/proc/0123456789/cmdline"), -+ "/proc/%d/cmdline", proc->pid); - fd = open(buf, O_RDONLY); - if (fd == -1) { - kplogerror("open\n"); -@@ -857,7 +859,8 @@ process_get_comm_ld_linux(kpatch_process_t *proc) - ssize_t i, rv; - - kpdebug("process_get_comm_ld_linux"); -- sprintf(buf, "/proc/%d/cmdline", proc->pid); -+ snprintf(buf, sizeof("/proc/0123456789/cmdline"), -+ "/proc/%d/cmdline", proc->pid); - fd = open(buf, O_RDONLY); - if (fd == -1) { - kplogerror("open\n"); -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index dc11357..ae67ba3 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -177,7 +177,7 @@ int kpatch_ptrace_get_entry_point(struct kpatch_ptrace_ctx *pctx, - - kpdebug("Looking for entry point..."); - -- sprintf(path, "/proc/%d/auxv", pctx->pid); -+ snprintf(path, sizeof(path), "/proc/%d/auxv", pctx->pid); - fd = open(path, O_RDONLY); - if (fd == -1) { - kplogerror("can't open %s\n", path); -@@ -495,7 +495,7 @@ get_threadgroup_id(int tid) - char buf[256]; - int pid = -1; - -- sprintf(buf, "/proc/%d/status", tid); -+ snprintf(buf, sizeof(buf), "/proc/%d/status", tid); - - fh = fopen(buf, "r"); - if (fh == NULL) --- -2.27.0 - diff --git a/0152-security-replace-strcpy-with-strncpy-to-ensure-safet.patch b/0152-security-replace-strcpy-with-strncpy-to-ensure-safet.patch deleted file mode 100644 index 6207f81..0000000 --- a/0152-security-replace-strcpy-with-strncpy-to-ensure-safet.patch +++ /dev/null @@ -1,31 +0,0 @@ -From b5477ec955090895541ab5d2e59def0485a96e5a Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Tue, 10 Aug 2021 14:54:52 +0800 -Subject: [PATCH 152/165] security: replace strcpy with strncpy to ensure - safety - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_storage.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c -index 8798d25..d8d8864 100644 ---- a/src/kpatch_storage.c -+++ b/src/kpatch_storage.c -@@ -108,7 +108,10 @@ int storage_init(kpatch_storage_t *storage, - kpatch_close_file(&storage->patch.kpfile); - goto out_close; - } -- strcpy(storage->patch.buildid, storage->patch.kpfile.patch->buildid); -+ strncpy(storage->patch.buildid, -+ storage->patch.kpfile.patch->buildid, -+ KPATCH_BUILDID_LEN); -+ storage->patch.buildid[KPATCH_BUILDID_LEN] = '\0'; - } - - storage->path = strdup(fname); --- -2.27.0 - diff --git a/0153-process-solve-only-can-apply-one-patch-in-left-hole-.patch b/0153-process-solve-only-can-apply-one-patch-in-left-hole-.patch deleted file mode 100644 index da0f77e..0000000 --- a/0153-process-solve-only-can-apply-one-patch-in-left-hole-.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 678f682c0b32d73a2de7bda691f76c992c38f226 Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Sat, 14 Aug 2021 15:28:08 +0800 -Subject: [PATCH 153/165] process: solve only can apply one patch in left hole - problem - -While using left vm holes, the patient's obj_end address is bigger than -left vm hole's start address, so we should use (obj_end - left_hole->start) -to calcuate vma distance. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/arch/aarch64/arch_process.c | 2 +- - src/arch/x86/arch_process.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/arch/aarch64/arch_process.c b/src/arch/aarch64/arch_process.c -index 7ddf4aa..009a6e6 100644 ---- a/src/arch/aarch64/arch_process.c -+++ b/src/arch/aarch64/arch_process.c -@@ -91,7 +91,7 @@ object_find_patch_region(struct object_file *obj, - left_hole = NULL; - else if (hole_size(left_hole) > memsize) { - region_start = -- (left_hole->start - obj_end) <= max_distance ? -+ (obj_end - left_hole->start) <= max_distance ? - left_hole->start : obj_end > max_distance ? - obj_end - max_distance : 0; - region_end = left_hole->end - memsize; -diff --git a/src/arch/x86/arch_process.c b/src/arch/x86/arch_process.c -index 7a15252..d9e9963 100644 ---- a/src/arch/x86/arch_process.c -+++ b/src/arch/x86/arch_process.c -@@ -90,7 +90,7 @@ unsigned long object_find_patch_region(struct object_file *obj, - left_hole = NULL; - else if (hole_size(left_hole) > memsize) { - region_start = -- (left_hole->start - obj_end) <= max_distance ? -+ (obj_end - left_hole->start) <= max_distance ? - left_hole->start : obj_end > max_distance ? - obj_end - max_distance : 0; - region_end = left_hole->end - memsize; --- -2.27.0 - diff --git a/0154-patch-fix-the-type-mismatch-problem.patch b/0154-patch-fix-the-type-mismatch-problem.patch deleted file mode 100644 index c9a2775..0000000 --- a/0154-patch-fix-the-type-mismatch-problem.patch +++ /dev/null @@ -1,29 +0,0 @@ -From f76f807d8af7aa2795e51bd319abe427c93da25b Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Mon, 16 Aug 2021 20:32:29 +0800 -Subject: [PATCH 154/165] patch: fix the type mismatch problem - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_patch.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index 98e8b9f..bfa0c10 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -322,8 +322,8 @@ duplicate_kp_file(struct object_file *o) - return 0; - } - --extern int PATCH_APPLIED; --extern int HUNK_SIZE; -+extern unsigned int PATCH_APPLIED; -+extern unsigned int HUNK_SIZE; - - static int - object_apply_patch(struct object_file *o) --- -2.27.0 - diff --git a/0155-optimize-fix-some-coding-problems.patch b/0155-optimize-fix-some-coding-problems.patch deleted file mode 100644 index bf3e27e..0000000 --- a/0155-optimize-fix-some-coding-problems.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 8244998d1539351790196760e7a074267d08f99c Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Mon, 16 Aug 2021 22:16:15 +0800 -Subject: [PATCH 155/165] optimize: fix some coding problems - -solve following problems: -1. check index before using for flavor[]; -2. free pids malloc memory before return; - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_gensrc.c | 7 ++++++- - src/kpatch_process.c | 6 ++++-- - 2 files changed, 10 insertions(+), 3 deletions(-) - -diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c -index 64c2f10..c62789c 100644 ---- a/src/kpatch_gensrc.c -+++ b/src/kpatch_gensrc.c -@@ -332,11 +332,12 @@ static int is_global_rip_reference(kpstr_t *t) - - #define MOV_PREFIX "mov" - #define MOV_LENGTH (sizeof(MOV_PREFIX) - 1) -+#define MAX_FLAVOR_SIZE 16 - - void str_do_gotpcrel(struct kp_file *f, char *dst, char *src) - { - kpstr_t mov, movsrc, movdst, tmptok; -- char flavor[16], *s = src, *d = dst; -+ char flavor[MAX_FLAVOR_SIZE], *s = src, *d = dst; - - *d = 0; - -@@ -350,6 +351,10 @@ void str_do_gotpcrel(struct kp_file *f, char *dst, char *src) - if (strstr(s, "%rip") == NULL) - goto out; - -+ if (mov.l < MOV_LENGTH || -+ mov.l - MOV_LENGTH >= MAX_FLAVOR_SIZE) -+ goto out; -+ - strncpy(flavor, mov.s + MOV_LENGTH, mov.l - MOV_LENGTH); - flavor[mov.l - MOV_LENGTH] = '\0'; - -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index 243580f..94ace79 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -651,7 +651,7 @@ process_list_threads(kpatch_process_t *proc, - size_t *npids, - size_t *alloc) - { -- DIR *dir; -+ DIR *dir = NULL; - struct dirent *de; - char path[128]; - int *pids = *ppids; -@@ -660,7 +660,7 @@ process_list_threads(kpatch_process_t *proc, - dir = opendir(path); - if (!dir) { - kplogerror("can't open '%s' directory\n", path); -- return -1; -+ goto dealloc; - } - - *npids = 0; -@@ -692,6 +692,8 @@ process_list_threads(kpatch_process_t *proc, - return *npids; - - dealloc: -+ if (dir) -+ closedir(dir); - free(pids); - *ppids = NULL; - *alloc = *npids = 0; --- -2.27.0 - diff --git a/0156-security-check-kpatch-file-size-before-using-it.patch b/0156-security-check-kpatch-file-size-before-using-it.patch deleted file mode 100644 index 228b1d6..0000000 --- a/0156-security-check-kpatch-file-size-before-using-it.patch +++ /dev/null @@ -1,50 +0,0 @@ -From f3eee1af4a3930d95f7faf47d5e67626a4ceed49 Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Thu, 19 Aug 2021 20:24:01 +0800 -Subject: [PATCH 156/165] security: check kpatch file size before using it - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_common.c | 6 ++++++ - src/kpatch_storage.c | 6 ++++++ - 2 files changed, 12 insertions(+) - -diff --git a/src/kpatch_common.c b/src/kpatch_common.c -index bbc9eed..14426b7 100644 ---- a/src/kpatch_common.c -+++ b/src/kpatch_common.c -@@ -45,7 +45,13 @@ int kpatch_open_fd(int fd, struct kp_file *kpatch) - kperr("FSTAT FAIL: %s\n", strerror(errno)); - return -1; - } -+ - kpdebug("OK\nMapping patch file..."); -+ if (st.st_size < sizeof(struct kpatch_file)) { -+ kperr("storage size(%jdB) is less than kaptch header size(%zuB)", -+ (intmax_t)st.st_size, sizeof(struct kpatch_file)); -+ return -1; -+ } - kpatch->size = st.st_size; - kpatch->patch = mmap(NULL, st.st_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); - if (kpatch->patch == MAP_FAILED) { -diff --git a/src/kpatch_storage.c b/src/kpatch_storage.c -index d8d8864..6fbb739 100644 ---- a/src/kpatch_storage.c -+++ b/src/kpatch_storage.c -@@ -55,6 +55,12 @@ patch_file_verify(struct kp_file *kpfile) - return -1; - } - -+ if (k->kpatch_offset + sizeof(GElf_Ehdr) > size) { -+ kperr("'%s' patch is invalid: Invalid kpatch offset: %u\n", -+ k->modulename, k->kpatch_offset); -+ return -1; -+ } -+ - hdr = (void *)k + k->kpatch_offset; - if (memcmp(hdr->e_ident, ELFMAG, SELFMAG) || - hdr->e_type != ET_REL || --- -2.27.0 - diff --git a/0157-objinfo-check-index-before-using.patch b/0157-objinfo-check-index-before-using.patch deleted file mode 100644 index 6a42b35..0000000 --- a/0157-objinfo-check-index-before-using.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 0990cdffff8cf9183948cb231bd7b5baef868caf Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Mon, 23 Aug 2021 14:56:56 +0800 -Subject: [PATCH 157/165] objinfo: check index before using - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_elf_objinfo.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/kpatch_elf_objinfo.c b/src/kpatch_elf_objinfo.c -index bc63007..85e58fe 100644 ---- a/src/kpatch_elf_objinfo.c -+++ b/src/kpatch_elf_objinfo.c -@@ -153,7 +153,7 @@ int kpatch_objinfo_is_our_section(kpatch_objinfo *oi, int secnum) - int i = 0, n = ARRAY_SIZE(oi->_kpatch_sections); - unsigned short *s = oi->_kpatch_sections; - -- for (; s[i] && i < n; i++) { -+ for (; i < n && s[i]; i++) { - if (s[i] == secnum) - return 1; - } --- -2.27.0 - diff --git a/0158-log-log-enhancement-to-facilitate-problems-location.patch b/0158-log-log-enhancement-to-facilitate-problems-location.patch deleted file mode 100644 index f314d05..0000000 --- a/0158-log-log-enhancement-to-facilitate-problems-location.patch +++ /dev/null @@ -1,248 +0,0 @@ -From c4a205208122c1201f320839600aae0f01253e9c Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Mon, 23 Aug 2021 20:20:41 +0800 -Subject: [PATCH 158/165] log: log enhancement to facilitate problems location - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/arch/aarch64/arch_patch.c | 3 +++ - src/arch/x86/arch_patch.c | 3 +++ - src/kpatch_elf.c | 2 +- - src/kpatch_patch.c | 33 ++++++++++++++++++++++++--------- - src/kpatch_process.c | 26 +++++++++++++++++--------- - 5 files changed, 48 insertions(+), 19 deletions(-) - -diff --git a/src/arch/aarch64/arch_patch.c b/src/arch/aarch64/arch_patch.c -index 461e28c..268520c 100644 ---- a/src/arch/aarch64/arch_patch.c -+++ b/src/arch/aarch64/arch_patch.c -@@ -59,6 +59,9 @@ int patch_apply_hunk(struct object_file *o, size_t nhunk) - code, - info->daddr, - sizeof(code)); -+ if (ret < 0) { -+ kperr("Failed to write remote info"); -+ } - /* - * NOTE(pboldin): This is only stored locally, as information have - * been copied to patient's memory already. -diff --git a/src/arch/x86/arch_patch.c b/src/arch/x86/arch_patch.c -index 00c52ca..0e039f6 100644 ---- a/src/arch/x86/arch_patch.c -+++ b/src/arch/x86/arch_patch.c -@@ -61,6 +61,9 @@ int patch_apply_hunk(struct object_file *o, size_t nhunk) - code, - info->daddr, - sizeof(code)); -+ if (ret < 0) { -+ kperr("Failed to write remote info"); -+ } - /* - * NOTE(pboldin): This is only stored locally, as information have - * been copied to patient's memory already. -diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c -index 7007d72..911b92e 100644 ---- a/src/kpatch_elf.c -+++ b/src/kpatch_elf.c -@@ -907,6 +907,6 @@ int kpatch_elf_load_kpatch_info(struct object_file *o) - } - } - -- kpdebug("failed\n"); -+ kperr("Failed to load kpatch info for %s", o->name); - return -1; - } -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index bfa0c10..0ec09e5 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -272,8 +272,10 @@ patch_ensure_safety(struct object_file *o, - list_for_each_entry(p, &o->proc->ptrace.pctxs, list) - nr++; - retips = malloc(nr * sizeof(unsigned long)); -- if (retips == NULL) -+ if (retips == NULL) { -+ kperr("Failed to malloc retips"); - return -1; -+ } - - memset(retips, 0, nr * sizeof(unsigned long)); - -@@ -393,16 +395,20 @@ object_apply_patch(struct object_file *o) - kp, - o->kpta, - kp->total_size); -- if (ret < 0) -+ if (ret < 0) { -+ kperr("Failed to write kpatch"); - return ret; -+ } - - if (o->jmp_table) { - ret = kpatch_process_mem_write(o->proc, - o->jmp_table, - o->kpta + kp->jmp_offset, - o->jmp_table->size); -- if (ret < 0) -+ if (ret < 0) { -+ kperr("Failed to write jmp table"); - return ret; -+ } - } - - ret = patch_ensure_safety(o, ACTION_APPLY_PATCH); -@@ -584,26 +590,32 @@ object_find_applied_patch_info(struct object_file *o) - if (o->info != NULL) - return 0; - -- if (o->kpfile.patch) -+ if (o->kpfile.patch) { - patch_id = o->kpfile.patch->id; -- else -+ } else { -+ kperr("Object(%s) kpatch file is NULL", o->name); - return -1; -+ } - - applied_patch = kpatch_object_get_applied_patch_by_id(o, patch_id); - if (!applied_patch) { -- fprintf(stderr, "Failed to find target applied patch!\n"); -+ kperr("Failed to find target applied patch!"); - return -1; - } - - iter = kpatch_process_mem_iter_init(o->proc); -- if (iter == NULL) -+ if (iter == NULL) { -+ kperr("Failed to initialize iterator"); - return -1; -+ } - - remote_info = (void *)o->kpta + o->kpfile.patch->user_info; - do { - ret = REMOTE_PEEK(iter, tmpinfo, remote_info); -- if (ret < 0) -+ if (ret < 0) { -+ kperr("Failed to get remote kpatch info"); - goto err; -+ } - - if (is_end_info(&tmpinfo)) - break; -@@ -612,6 +624,7 @@ object_find_applied_patch_info(struct object_file *o) - nalloc += 16; - if (object_kpatch_info_realloc(o, nalloc) < 0) { - ret = -1; -+ kperr("Failed to expand kpatch info mem"); - goto err; - } - } -@@ -674,8 +687,10 @@ object_unapply_patch(struct object_file *o, int check_flag) - o->kpta, - o->kpfile.size); - -- if (ret < 0) -+ if (ret < 0) { -+ kperr("Failed to unmap remote kpatch mem"); - return ret; -+ } - - return 1; - } -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index 94ace79..0a84035 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -493,14 +493,14 @@ kpatch_process_parse_proc_maps(kpatch_process_t *proc) - */ - fd = dup(proc->fdmaps); - if (fd < 0) { -- kperr("unable to dup fd %d\n", proc->fdmaps); -+ kperr("unable to dup fd %d", proc->fdmaps); - return -1; - } - - lseek(fd, 0, SEEK_SET); - f = fdopen(fd, "r"); - if (f == NULL) { -- kperr("unable to fdopen %d\n", fd); -+ kperr("unable to fdopen %d", fd); - close(fd); - return -1; - } -@@ -518,8 +518,10 @@ kpatch_process_parse_proc_maps(kpatch_process_t *proc) - r = sscanf(line, "%lx-%lx %s %lx %x:%x %d %255s", - &start, &end, perms, &offset, - &maj, &min, &inode, name_); -- if (r == EOF) -+ if (r == EOF) { -+ kperr("sscanf failed: end of file"); - goto error; -+ } - if (r != 8) - strcpy(name, "[anonymous]"); - -@@ -534,8 +536,10 @@ kpatch_process_parse_proc_maps(kpatch_process_t *proc) - hole = process_add_vm_hole(proc, - hole_start + PAGE_SIZE, - start - PAGE_SIZE); -- if (hole == NULL) -+ if (hole == NULL) { -+ kperr("Failed to add vma hole"); - goto error; -+ } - } - hole_start = end; - -@@ -543,8 +547,10 @@ kpatch_process_parse_proc_maps(kpatch_process_t *proc) - - ret = process_add_object_vma(proc, makedev(maj, min), - inode, name, &vma, hole); -- if (ret < 0) -+ if (ret < 0) { -+ kperr("Failed to add object vma"); - goto error; -+ } - - if (!is_libc_base_set && - !strncmp(basename(name), "libc", 4) && -@@ -557,12 +563,12 @@ kpatch_process_parse_proc_maps(kpatch_process_t *proc) - fclose(f); - - if (!is_libc_base_set) { -- kperr("Can't find libc_base required for manipulations: %d\n", -+ kperr("Can't find libc_base required for manipulations: %d", - proc->pid); - return -1; - } - -- kpinfo("Found %d object file(s).\n", proc->num_objs); -+ kpinfo("Found %d object file(s)", proc->num_objs); - - return 0; - -@@ -589,7 +595,7 @@ kpatch_process_map_object_files(kpatch_process_t *proc, const char *patch_id) - - ret = kpatch_process_associate_patches(proc, patch_id); - if (ret >= 0) { -- kpinfo("Found %d applied patch(es).\n", ret); -+ kpinfo("Found %d applied patch(es)", ret); - } - - return ret; -@@ -1034,8 +1040,10 @@ vm_hole_split(struct vm_hole *hole, - struct vm_hole *left = NULL; - - left = malloc(sizeof(*hole)); -- if (left == NULL) -+ if (left == NULL) { -+ kperr("Failed to malloc for vm hole"); - return -1; -+ } - - left->start = hole->start; - left->end = alloc_start; --- -2.27.0 - diff --git a/0159-gensrc-make-sure-.kpatch.data-is-4K-page-alignment.patch b/0159-gensrc-make-sure-.kpatch.data-is-4K-page-alignment.patch deleted file mode 100644 index d853aac..0000000 --- a/0159-gensrc-make-sure-.kpatch.data-is-4K-page-alignment.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 18713d8f8ac85ac1f812944bb977d675db1d6a55 Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Sat, 28 Aug 2021 11:14:10 +0800 -Subject: [PATCH 159/165] gensrc: make sure .kpatch.data is 4K-page alignment - -In order to use mprotect to change .kpatch.data permissions, we need to -make sure .kpatch.data is 4K-page alignment. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_gensrc.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/src/kpatch_gensrc.c b/src/kpatch_gensrc.c -index c62789c..32c7afc 100644 ---- a/src/kpatch_gensrc.c -+++ b/src/kpatch_gensrc.c -@@ -434,7 +434,9 @@ out: - - static void change_section(struct kp_file *fout, struct section_desc *sect, int flags) - { -+ static int init_data_section = 0; - char *s; -+ char *align = NULL; - - if (sect == NULL) { - kpfatal("Section description is NULL!\n"); -@@ -444,10 +446,17 @@ static void change_section(struct kp_file *fout, struct section_desc *sect, int - s = sect->outname; - else if (sect->type & SECTION_EXECUTABLE) - s = ".kpatch.text,\"ax\",@progbits"; -- else -+ else { - s = ".kpatch.data,\"aw\",@progbits"; -+ if (!init_data_section && !(flags & FLAG_PUSH_SECTION)) { -+ init_data_section = 1; -+ align = ".p2align\t12"; -+ } -+ } - - fprintf(fout->f, "\t.%ssection %s\n", (flags & FLAG_PUSH_SECTION) ? "push" : "", s); -+ if (align) -+ fprintf(fout->f, "\t%s\n", align); - } - - void get_comm_args(struct kp_file *f, int l, kpstr_t *xname, int *sz, int *align) --- -2.27.0 - diff --git a/0160-elf-get-.kpatch.data-offset.patch b/0160-elf-get-.kpatch.data-offset.patch deleted file mode 100644 index 506aa63..0000000 --- a/0160-elf-get-.kpatch.data-offset.patch +++ /dev/null @@ -1,103 +0,0 @@ -From ac3f200537e70195cb1bb55beaa7e6b2249101aa Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Tue, 31 Aug 2021 10:57:56 +0800 -Subject: [PATCH 160/165] elf: get .kpatch.data offset - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/include/kpatch_elf.h | 1 + - src/include/kpatch_process.h | 3 +++ - src/kpatch_elf.c | 26 ++++++++++++++++++++++++++ - src/kpatch_patch.c | 2 ++ - src/kpatch_process.c | 1 + - 5 files changed, 33 insertions(+) - -diff --git a/src/include/kpatch_elf.h b/src/include/kpatch_elf.h -index 74efe04..0f2cdad 100644 ---- a/src/include/kpatch_elf.h -+++ b/src/include/kpatch_elf.h -@@ -18,6 +18,7 @@ kpatch_elf_object_set_ehdr(struct object_file *o, - int kpatch_elf_object_is_shared_lib(struct object_file *o); - int kpatch_elf_parse_program_header(struct object_file *o); - int kpatch_elf_load_kpatch_info(struct object_file *o); -+void kpatch_get_kpatch_data_offset(struct object_file *o); - - int kpatch_resolve(struct object_file *o); - int kpatch_relocate(struct object_file *o); -diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h -index cdde8c8..585e965 100644 ---- a/src/include/kpatch_process.h -+++ b/src/include/kpatch_process.h -@@ -111,6 +111,9 @@ struct object_file { - /* Program header */ - Elf64_Phdr *phdr; - -+ /* .kpatch.data sh_offset */ -+ Elf64_Off data_offset; -+ - /* Dynamic symbols exported by the object if it is a library */ - Elf64_Sym *dynsyms; - size_t ndynsyms; -diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c -index 911b92e..2685ff5 100644 ---- a/src/kpatch_elf.c -+++ b/src/kpatch_elf.c -@@ -910,3 +910,29 @@ int kpatch_elf_load_kpatch_info(struct object_file *o) - kperr("Failed to load kpatch info for %s", o->name); - return -1; - } -+ -+void -+kpatch_get_kpatch_data_offset(struct object_file *o) -+{ -+ GElf_Ehdr *ehdr; -+ GElf_Shdr *shdr; -+ int i; -+ -+ ehdr = (void *)o->kpfile.patch + o->kpfile.patch->kpatch_offset; -+ shdr = (void *)ehdr + ehdr->e_shoff; -+ -+ kpdebug("Geting patch .kpatch.data offset '%s'...", o->name); -+ for (i = 1; i < ehdr->e_shnum; i++) { -+ GElf_Shdr *s = shdr + i; -+ -+ if (!strcmp(secname(ehdr, s), ".kpatch.data")) { -+ o->data_offset = s->sh_offset; -+ kpdebug(".kpatch.data sh_offset: 0x%lx", s->sh_offset); -+ return; -+ } -+ } -+ -+ kpdebug("%s object doesn't have the .kpatch.data section", o->name); -+ return; -+} -+ -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index 0ec09e5..2d1e9ce 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -356,6 +356,8 @@ object_apply_patch(struct object_file *o) - if (ret < 0) - return ret; - -+ kpatch_get_kpatch_data_offset(o); -+ - kp = o->kpfile.patch; - - sz = ROUND_UP(kp->total_size, 8); -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index 0a84035..e7412d3 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -160,6 +160,7 @@ process_new_object(kpatch_process_t *proc, - o->load_offset = ~(unsigned long)0; - memset(&o->ehdr, 0, sizeof(o->ehdr)); - o->phdr = NULL; -+ o->data_offset = 0; - o->is_elf = 0; - o->is_unpatch_target_elf = 0; - o->dynsyms = NULL; --- -2.27.0 - diff --git a/0161-process-rearrange-the-kpatch-region-memory-distribut.patch b/0161-process-rearrange-the-kpatch-region-memory-distribut.patch deleted file mode 100644 index 0f3b842..0000000 --- a/0161-process-rearrange-the-kpatch-region-memory-distribut.patch +++ /dev/null @@ -1,177 +0,0 @@ -From 49d28ba3384086a4eb23b129f176297aae3668f6 Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Tue, 31 Aug 2021 17:28:04 +0800 -Subject: [PATCH 161/165] process: rearrange the kpatch region memory - distribution - -The .kpatch.text section and the jmp table need executable permisson, -but their memory region are not consecutive. So we need rearrange the -kpatch region memory distribution, to make sure that The .kpatch.text -section memory region and the jmp table memory region are continuous. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/include/kpatch_file.h | 8 ++++--- - src/include/kpatch_process.h | 2 ++ - src/kpatch_elf.c | 3 ++- - src/kpatch_patch.c | 44 ++++++++++++++++++++++++++++-------- - 4 files changed, 44 insertions(+), 13 deletions(-) - -diff --git a/src/include/kpatch_file.h b/src/include/kpatch_file.h -index 963d06d..e098d67 100644 ---- a/src/include/kpatch_file.h -+++ b/src/include/kpatch_file.h -@@ -127,16 +127,18 @@ struct kpatch_file { - char pad[6]; - char modulename[64]; /* "vmlinux" or module name */ - char buildid[KPATCH_BUILDID_LEN + 1]; /* patch buildid */ -- char pad1[23]; -+ char pad1[7]; - - uint64_t build_time; /* build time */ - uint32_t csum; /* checksum of the whole kpatch */ - uint32_t nr_reloc; /* number of relocations */ - -- kpatch_offset_t kpatch_offset; /* content offset */ -+ kpatch_offset_t kpatch_offset; /* elf content offset in kpatch file */ - kpatch_offset_t rel_offset; /* relocations offset (vmlinux) */ - kpatch_offset_t total_size; /* total size = header + relocations + content */ - kpatch_offset_t jmp_offset; /* jump table offset for user-space patches */ -+ kpatch_offset_t elf_offset; /* elf content offset in patient's mem */ -+ char pad2[4]; - - /* array of entry offsets in the patch content */ - union { -@@ -162,7 +164,7 @@ struct kpatch_file { - }; - - char srcversion[25]; /* srcversion of module or zeros */ -- char pad2[231]; -+ char pad3[231]; - - /* relocations */ - /* content */ -diff --git a/src/include/kpatch_process.h b/src/include/kpatch_process.h -index 585e965..6762678 100644 ---- a/src/include/kpatch_process.h -+++ b/src/include/kpatch_process.h -@@ -113,6 +113,8 @@ struct object_file { - - /* .kpatch.data sh_offset */ - Elf64_Off data_offset; -+ /* .kpatch.info sh_offset */ -+ Elf64_Off info_offset; - - /* Dynamic symbols exported by the object if it is a library */ - Elf64_Sym *dynsyms; -diff --git a/src/kpatch_elf.c b/src/kpatch_elf.c -index 2685ff5..3ac56d9 100644 ---- a/src/kpatch_elf.c -+++ b/src/kpatch_elf.c -@@ -824,7 +824,7 @@ int kpatch_resolve(struct object_file *o) - * proper offet in *target process* region of memory - */ - s->sh_addr = (unsigned long)o->kpta + -- o->kpfile.patch->kpatch_offset + s->sh_offset; -+ o->kpfile.patch->elf_offset + s->sh_offset; - } else { - /* - * We copy the `sh_addr`esses from the original binary -@@ -899,6 +899,7 @@ int kpatch_elf_load_kpatch_info(struct object_file *o) - GElf_Shdr *s = shdr + i; - - if (!strcmp(secname(ehdr, s), ".kpatch.info")) { -+ o->info_offset = s->sh_offset; - o->info = (struct kpatch_info *)((void *)ehdr + - s->sh_offset); - o->ninfo = s->sh_size / sizeof(struct kpatch_info); -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index 2d1e9ce..7052c33 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -38,6 +38,7 @@ - #include - #include - #include -+#include - - #include - #include -@@ -359,8 +360,9 @@ object_apply_patch(struct object_file *o) - kpatch_get_kpatch_data_offset(o); - - kp = o->kpfile.patch; -- -- sz = ROUND_UP(kp->total_size, 8); -+ /* kpatch header */ -+ sz = ROUND_UP(sizeof(struct kpatch_file), 8); -+ /* jmp table */ - undef = kpatch_count_undefined(o); - if (undef) { - o->jmp_table = kpatch_new_jmp_table(undef); -@@ -368,13 +370,19 @@ object_apply_patch(struct object_file *o) - return -1; - } - kp->jmp_offset = sz; -- kpinfo("Jump table %d bytes for %d syms at offset 0x%x\n", -- o->jmp_table->size, undef, kp->jmp_offset); -- sz = ROUND_UP(sz + o->jmp_table->size, 128); -+ kpdebug("Jump table %d bytes for %d syms at offset 0x%x\n", -+ o->jmp_table->size, undef, kp->jmp_offset); -+ sz = ROUND_UP(sz + o->jmp_table->size, 4096); - } -+ sz = ROUND_UP(sz, 4096); - -- kp->user_info = (unsigned long)o->info - -- (unsigned long)o->kpfile.patch; -+ /* kpatch elf */ -+ kp->elf_offset = sz; -+ sz = ROUND_UP(sz + kp->total_size - sizeof(struct kpatch_file), 128); -+ /* Calculate the .kpatch.info offset in remote kapatch memory region -+ * and save it to kp->user_info */ -+ kp->user_info = (unsigned long)o->info_offset + (unsigned long)kp->elf_offset; -+ /* user undo */ - kp->user_undo = sz; - sz = ROUND_UP(sz + HUNK_SIZE * o->ninfo, 16); - -@@ -393,16 +401,34 @@ object_apply_patch(struct object_file *o) - ret = kpatch_relocate(o); - if (ret < 0) - return ret; -+ -+ /* Then, write kpatch elf to patient's memory */ -+ kpdebug("kpatch elf: 0x%lx + 0x%lx", o->kpta + kp->elf_offset, -+ kp->total_size - sizeof(struct kpatch_file)); -+ ret = kpatch_process_mem_write(o->proc, -+ (void *)kp + kp->kpatch_offset, -+ o->kpta + kp->elf_offset, -+ kp->total_size - sizeof(struct kpatch_file)); -+ if (ret < 0) { -+ kperr("Failed to write kpatch elf"); -+ return ret; -+ } -+ -+ /* Finally, write kpatch header to patient's memory */ -+ kpdebug("kpatch header: 0x%lx + 0x%lx", -+ o->kpta, sizeof(struct kpatch_file)); - ret = kpatch_process_mem_write(o->proc, - kp, - o->kpta, -- kp->total_size); -+ sizeof(struct kpatch_file)); - if (ret < 0) { -- kperr("Failed to write kpatch"); -+ kperr("Failed to write kpatch header"); - return ret; - } - - if (o->jmp_table) { -+ kpdebug("jmp table: 0x%lx + 0x%x", -+ o->kpta + kp->jmp_offset, o->jmp_table->size); - ret = kpatch_process_mem_write(o->proc, - o->jmp_table, - o->kpta + kp->jmp_offset, --- -2.27.0 - diff --git a/0162-ptrace-support-remote-mprotect-syscall.patch b/0162-ptrace-support-remote-mprotect-syscall.patch deleted file mode 100644 index 149d160..0000000 --- a/0162-ptrace-support-remote-mprotect-syscall.patch +++ /dev/null @@ -1,66 +0,0 @@ -From b2e48fe69cfc5f3d6c42f3f2472693b9d3403e9a Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Sat, 28 Aug 2021 11:26:22 +0800 -Subject: [PATCH 162/165] ptrace: support remote mprotect syscall - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/include/kpatch_ptrace.h | 7 +++++++ - src/kpatch_ptrace.c | 22 ++++++++++++++++++++++ - 2 files changed, 29 insertions(+) - -diff --git a/src/include/kpatch_ptrace.h b/src/include/kpatch_ptrace.h -index 42869e7..43a6b02 100644 ---- a/src/include/kpatch_ptrace.h -+++ b/src/include/kpatch_ptrace.h -@@ -91,6 +91,13 @@ kpatch_mmap_remote(struct kpatch_ptrace_ctx *pctx, - int flags, - int fd, - off_t offset); -+ -+int -+kpatch_mprotect_remote(struct kpatch_ptrace_ctx *pctx, -+ unsigned long addr, -+ size_t length, -+ int prot); -+ - int - kpatch_munmap_remote(struct kpatch_ptrace_ctx *pctx, - unsigned long addr, -diff --git a/src/kpatch_ptrace.c b/src/kpatch_ptrace.c -index ae67ba3..edf0e34 100644 ---- a/src/kpatch_ptrace.c -+++ b/src/kpatch_ptrace.c -@@ -539,6 +539,28 @@ kpatch_mmap_remote(struct kpatch_ptrace_ctx *pctx, - return res; - } - -+int -+kpatch_mprotect_remote(struct kpatch_ptrace_ctx *pctx, -+ unsigned long addr, -+ size_t length, -+ int prot) -+{ -+ int ret; -+ unsigned long res; -+ -+ kpdebug("mprotect_remote: 0x%lx+%lx\n", addr, length); -+ ret = kpatch_arch_syscall_remote(pctx, __NR_mprotect, (unsigned long)addr, -+ length, prot, 0, 0, 0, &res); -+ if (ret < 0) -+ return -1; -+ if (ret == 0 && res >= (unsigned long)-MAX_ERRNO) { -+ errno = -(long)res; -+ return -1; -+ } -+ -+ return 0; -+} -+ - int kpatch_munmap_remote(struct kpatch_ptrace_ctx *pctx, - unsigned long addr, - size_t length) --- -2.27.0 - diff --git a/0163-patch-record-remote-malloc-total-memory-size.patch b/0163-patch-record-remote-malloc-total-memory-size.patch deleted file mode 100644 index 7674a8b..0000000 --- a/0163-patch-record-remote-malloc-total-memory-size.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 797977022335ac531585643681d59909f9364119 Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Wed, 1 Sep 2021 15:43:53 +0800 -Subject: [PATCH 163/165] patch: record remote malloc total memory size - -In order to unmap remote kpatch memory during unapplying kpatch, we need -to record remote malloc total memory size during applying kpatch. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/include/kpatch_file.h | 9 +++++++++ - src/kpatch_patch.c | 3 ++- - 2 files changed, 11 insertions(+), 1 deletion(-) - -diff --git a/src/include/kpatch_file.h b/src/include/kpatch_file.h -index e098d67..e1f6ed9 100644 ---- a/src/include/kpatch_file.h -+++ b/src/include/kpatch_file.h -@@ -119,6 +119,14 @@ struct kpatch_payload { - char *description; // could be NULL - }; - -+/* -+ * When modifying the struct kpatch_file structure, you need to pay attention to -+ * two points: -+ * 1. make sure that the struct kpatch_file structure does not exceed -+ * 1024 bytes; -+ * 2. add pad to ensure that the start address of the ELF executable -+ * part is aligned to 8 bytes; -+ */ - struct kpatch_file { - char magic[8]; /* magic string */ - char id[8]; /* unique patch id */ -@@ -139,6 +147,7 @@ struct kpatch_file { - kpatch_offset_t jmp_offset; /* jump table offset for user-space patches */ - kpatch_offset_t elf_offset; /* elf content offset in patient's mem */ - char pad2[4]; -+ uint64_t kpatch_total_mem_sz; /* malloc total mem size for kpatch in patient's mem */ - - /* array of entry offsets in the patch content */ - union { -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index 7052c33..ff79c2c 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -387,6 +387,7 @@ object_apply_patch(struct object_file *o) - sz = ROUND_UP(sz + HUNK_SIZE * o->ninfo, 16); - - sz = ROUND_UP(sz, 4096); -+ kp->kpatch_total_mem_sz = sz; - - /* - * Map patch as close to the original code as possible. -@@ -713,7 +714,7 @@ object_unapply_patch(struct object_file *o, int check_flag) - kpinfo("munmap kpatch memory from 0x%lx\n", o->kpta); - ret = kpatch_munmap_remote(proc2pctx(o->proc), - o->kpta, -- o->kpfile.size); -+ o->kpfile.patch->kpatch_total_mem_sz); - - if (ret < 0) { - kperr("Failed to unmap remote kpatch mem"); --- -2.27.0 - diff --git a/0164-process-change-kpatch-region-access-permission.patch b/0164-process-change-kpatch-region-access-permission.patch deleted file mode 100644 index ed449b4..0000000 --- a/0164-process-change-kpatch-region-access-permission.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 42b34456861a9d5d291ba471db2d2d2dc4f58a53 Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Tue, 31 Aug 2021 19:32:19 +0800 -Subject: [PATCH 164/165] process: change kpatch region access permission - -In order to minimize access permissions, we change the .kaptch.data -seciton to rw-p, the .kpatch.text and the jmp table to r-xp. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_patch.c | 10 ++++++++++ - src/kpatch_process.c | 2 +- - 2 files changed, 11 insertions(+), 1 deletion(-) - -diff --git a/src/kpatch_patch.c b/src/kpatch_patch.c -index ff79c2c..d74299d 100644 ---- a/src/kpatch_patch.c -+++ b/src/kpatch_patch.c -@@ -450,6 +450,16 @@ object_apply_patch(struct object_file *o) - return ret; - } - -+ /* change .kpatch.text and jmp table mem to readable and executable */ -+ ret = kpatch_mprotect_remote(proc2pctx(o->proc), o->kpta, -+ o->data_offset ? kp->elf_offset + o->data_offset : kp->kpatch_total_mem_sz, -+ PROT_READ | PROT_EXEC); -+ if (ret < 0) { -+ kperr("Failed to change kpatch access protection"); -+ return ret; -+ } -+ kpinfo("r-xp: 0x%lx + 0x%lx", o->kpta, kp->elf_offset + o->data_offset); -+ - return 1; - } - -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index e7412d3..b6c25f7 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -1100,7 +1100,7 @@ kpatch_object_allocate_patch(struct object_file *o, - - addr = kpatch_mmap_remote(proc2pctx(o->proc), - addr, sz, -- PROT_READ | PROT_WRITE | PROT_EXEC, -+ PROT_READ | PROT_WRITE, - MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - if (addr == 0) { - kplogerror("remote alloc memory for patch failed\n"); --- -2.27.0 - diff --git a/0165-process-adapt-to-recognize-kpatch-region.patch b/0165-process-adapt-to-recognize-kpatch-region.patch deleted file mode 100644 index 7c36ce0..0000000 --- a/0165-process-adapt-to-recognize-kpatch-region.patch +++ /dev/null @@ -1,36 +0,0 @@ -From e0970bd37d3374e4755d2f8bc83616d613f70804 Mon Sep 17 00:00:00 2001 -From: yubihong -Date: Tue, 31 Aug 2021 20:26:46 +0800 -Subject: [PATCH 165/165] process: adapt to recognize kpatch region - -Now the kpatch region consists of two part mem region. The first part is -kpatch header + jmp table + .kpatch.text and the access permision is r-xp, -the second part is .kpatch.data + rela + user_undo and the access -permison is rw-p. - -We just need to use the first part to recognize and get the kpatch info. - -Signed-off-by: Bihong Yu -Signed-off-by: imxcc ---- - src/kpatch_process.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/kpatch_process.c b/src/kpatch_process.c -index b6c25f7..9d6daa4 100644 ---- a/src/kpatch_process.c -+++ b/src/kpatch_process.c -@@ -194,8 +194,8 @@ process_get_object_type(kpatch_process_t *proc, - return -1; - } - -- if (!strcmp(name, "[anonymous]") && -- vma->prot == (PROT_READ | PROT_WRITE | PROT_EXEC) && -+ if (vma->prot == (PROT_READ | PROT_EXEC) && -+ !strncmp(name, "[anonymous]", strlen("[anonymous]")) && - (vma->end - vma->start) >= sizeof(struct kpatch_file)) - type = OBJECT_KPATCH; - --- -2.27.0 - diff --git a/0166-kpatch_user-init-pid-in-cmd_info_user.patch b/0166-kpatch_user-init-pid-in-cmd_info_user.patch deleted file mode 100644 index 6daf941..0000000 --- a/0166-kpatch_user-init-pid-in-cmd_info_user.patch +++ /dev/null @@ -1,25 +0,0 @@ -From ec61f8f0f9fe4ae5ca0fdabe43d33d9df28aa046 Mon Sep 17 00:00:00 2001 -From: Bihong Yu -Date: Fri, 3 Dec 2021 02:19:51 -0500 -Subject: [PATCH] kpatch_user: init pid in cmd_info_user - -Signed-off-by: Bihong Yu ---- - src/kpatch_user.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/kpatch_user.c b/src/kpatch_user.c -index b982b50..0bcc219 100644 ---- a/src/kpatch_user.c -+++ b/src/kpatch_user.c -@@ -291,6 +291,7 @@ int cmd_info_user(int argc, char *argv[]) - while ((opt = getopt(argc, argv, "hp:v")) != EOF) { - switch (opt) { - case 'p': -+ pid = atoi(optarg); - break; - case 'v': - verbose = 1; --- -2.27.0 - diff --git a/LICENSE b/LICENSE deleted file mode 100644 index d159169..0000000 --- a/LICENSE +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/README.en.md b/README.en.md deleted file mode 100644 index 3077b91..0000000 --- a/README.en.md +++ /dev/null @@ -1,35 +0,0 @@ -# LibcarePlus - -#### Description -LibcarePlus‧is‧a‧general‧user-mode‧live‧patch‧framework.‧It delivers live patches to any of your Linux executables or libraries at the runtime, without the need for restart of your applications. - -LibcarePlus is a self-maintained branch derived from the LibCare project. It is released with the same license with LibCare and the original copyright is kept. - -More information about LibCare can be reached at: - -[https://github.com/cloudlinux/libcare](https://github.com/cloudlinux/libcare) - -LibcarePlus aims at providing user-mode live patches for popular architectures like x86_64 and AArch64. - -#### Software Architecture - -For more information about the design of LibcarePlus, see the `LibcarePlus Design`. - -#### Installation - -Refer to the `LibcarePlus Intallation Guide` to install LibcarePlus. - - -#### User Guide - -Refer to: - -* LibcarePlus Patch Make Tutorial -* LibcarePlus Patch Apply Tutorial - -to help you make the patch and apply it to the target process. - -#### Contribution - -Any contributors are welcome to join this project, and we are glad to provide help and guidance needed. -Developers can post an issue on this project and submit a pull request to join the development process. \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 78a9541..0000000 --- a/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# libcareplus - -#### 介绍 - -LibcarePlus是一个通用的用户态热补丁框架,它可以被用来对Linux可执行程序或者动态链接库打补丁,而不需要重启应用程序。 - -LibcarePlus是一个基于LibCare的独立发展分支, 采用和LibCare相同License发布并保留原作者的Copyright, -更多关于LibCare的信息可以从以下链接获取: - -[https://github.com/cloudlinux/libcare](https://github.com/cloudlinux/libcare) - -LibcarePlus的发展目标是对x86_64和aarch64等常见体系结构提供用户态热补丁能力支持。 - -#### 软件架构 - -想获取更多的LibcarePlus核心架构设计信息,请参考`LibcarePlus Design`。 - -#### 安装教程 - -请参考`LibcarePlus安装指南`来完成LibcarePlus的安装。 - -#### 使用说明 - -请参考: - -* LibcarePlus热补丁制作指导 -* LibcarePlus热补丁应用指导 - -来完成补丁的制作和打补丁的操作流程。 - -#### 参与贡献 - -我们非常欢迎新贡献者的加入,并且非常乐意为新的贡献者提供指导和帮助。 开发者可以通过在本仓库提Issue来描述需求,并通过PR体检提交代码的方式参与开发。 \ No newline at end of file diff --git a/libcareplus-0.1.4.tar.gz b/libcareplus-0.1.4.tar.gz deleted file mode 100644 index b2dcc2663804de8ddfe9da3157bbb2f8758b9e22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 571831 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 Cv6Z{bX%O@2DQW3Q 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%0DM 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

tAAitq5gUNIXsE%s^!Y7XHW2lUQkvV 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%0Al*oW@Xo3I~7;%$llCNV$nrO55O@rO(l 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

iW;cStq1mu4h)w`Kvm_~+1B#M}1M%zw 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 sN<+(QT=xP=EIdNgcnpw6sFB>fL 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≦̸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%0Af!$X;dRR0FxWDeJY7v1e;c!(ypVU;0)$<^ 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

  • $WY{E^6j8l)@DO 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 z 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

    *E{YVIYv8wBE*zV+sZp-sT;qO4a;c#B@m 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�Z@idu4};oPXHn~L<8`CekvwdfHo6r1P0H- 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�Vr$wjPV(GpauZ71w#DJG&KP-5+&+e2OE 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

    yDMsNC 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 literal 0 HcmV?d00001 diff --git a/libcareplus.spec b/libcareplus.spec index 6a2bf64..0b78f3a 100644 --- a/libcareplus.spec +++ b/libcareplus.spec @@ -1,180 +1,14 @@ %define with_selinux 1 -Version: 0.1.4 +Version: 1.0.0 Name: libcareplus Summary: LibcarePlus tools -Release: 15 +Release: 0 Group: Applications/System License: GPLv2 Url: https://gitee.com/openeuler/libcareplus Source0: %{name}-%{version}.tar.gz -Patch0001: src-Makefile-install-kpatch_gensrc-into-bindir.patch -Patch0002: 0001-Split-kpatch_storage.c-from-kpatch_user.c.patch -Patch0003: 0002-Split-kpatch_patch.c-from-kpatch_user.c.patch -Patch0004: 0003-cmd_patch-pass-arguments-directly.patch -Patch0005: 0004-travis-use-VM-for-now.patch -Patch0006: 0005-scripts-pkgbuild-add-prepare_env-hook.patch -Patch0007: 0006-pkgbuild-fix-for-non-root-rpmbuild-built-root.patch -Patch0008: 0007-Toil-package-builder.patch -Patch0009: 0008-pkgbuild-use-yumdownloader-if-source-url-is-missing.patch -Patch0010: 0009-execve-abort-on-failure.patch -Patch0011: 0010-Add-test-stage-to-pkgbuild.patch -Patch0012: 0011-glibc-minimal-readme-for-toil-builder.patch -Patch0013: 0012-Fix-kpatch_process_init-kpatch_coroutines_free.patch -Patch0014: 0013-Add-libcare-stresstest.patch -Patch0015: 0014-read-auxv-from-proc-pid-auxv.patch -Patch0016: 0015-add-fail-to-unpatch-test.patch -Patch0017: 0016-Waitpid-for-finished-threads-after-detach.patch -Patch0018: 0017-.gitignore-build-artefacts.patch -Patch0019: 0018-kpatch_storage-put-an-end-to-description-string-load.patch -Patch0020: 0019-Fix-README-files.patch -Patch0021: 0020-include-Create-include-directory-for-header-files.patch -Patch0022: 0021-src-Update-header-file-position.patch -Patch0023: 0022-arch-Create-arch-directory-to-support-multi-arch.patch -Patch0024: 0023-config-configure-out-the-running-arch.patch -Patch0025: 0024-Makefile-Adapt-Makefile-for-different-architectures.patch -Patch0026: 0025-kpatch_parse-Update-asm_directives-for-aarch64.patch -Patch0027: 0026-kpatch_parse-Split-function-parse_ctype.patch -Patch0028: 0027-kpatch_parse-Split-function-init_multilines.patch -Patch0029: 0028-kpatch_parse-Split-function-is_variable_start.patch -Patch0030: 0029-kpatch_parse-Split-function-is_data_def.patch -Patch0031: 0030-kpatch_parse-Split-function-is_function_start.patch -Patch0032: 0031-kpatch_common.h-Factor-out-PAGE_SIZE-marco.patch -Patch0033: 0032-kpatch_coro-Split-function-_UCORO_access_reg.patch -Patch0034: 0033-kpatch_coro-Split-function-get_ptr_guard.patch -Patch0035: 0034-kpatch_coro-Split-function-locate_start_context_symb.patch -Patch0036: 0035-kpatch_patch-Split-function-patch_apply_hunk.patch -Patch0037: 0036-kpatch_elf-Split-function-kpatch_add_jmp_entry.patch -Patch0038: 0037-kpatch_elf-Split-function-kpatch_apply_relocate_add.patch -Patch0039: 0038-kpatch_process-Split-function-object_find_patch_regi.patch -Patch0040: 0039-kpatch_ptrace-Split-function-kpatch_ptrace_waitpid.patch -Patch0041: 0040-kpatch_ptrace-Split-function-copy_regs.patch -Patch0042: 0041-kpatch_ptrace-Split-function-kpatch_execute_remote_f.patch -Patch0043: 0042-kpatch_ptrace-Split-function-kpatch_ptrace_resolve_i.patch -Patch0044: 0043-kpatch_ptrace-Split-function-kpatch_arch_prctl_remot.patch -Patch0045: 0044-kpatch_ptrace-Split-function-kpatch_syscall_remote.patch -Patch0046: 0045-kpatch_ptrace-Split-function-wait_for_mmap.patch -Patch0047: 0046-kpatch_ptrace-Split-function-kpatch_ptrace_kickstart.patch -Patch0048: 0047-Allow-init_t-create-lnk-file.patch -Patch0049: 0048-libcare-patch-make-add-j-jobs-option.patch -Patch0050: 0049-kpatch_user.c-fix-gcc-warning.patch -Patch0051: 0050-libcare-cc-add-gcc-iquote-option-support.patch -Patch0052: 0051-kpatch_cc.c-support-gcc-MQ-option.patch -Patch0053: 0052-src-Makefile-execute-config-scripts-before-building.patch -Patch0054: 0053-kpatch_gensrc.c-support-ignoring-functions-which-we-.patch -Patch0055: 0054-arch-aarch64-arch_parse-modify-is_variable_start-for.patch -Patch0056: 0055-libcare-ctl-implement-applied-patch-list.patch -Patch0057: 0056-libcare-ctl-introduce-patch-id.patch -Patch0058: 0057-arch-aarch64-arch_elf-Add-LDR-and-B-instruction-relo.patch -Patch0059: 0058-arch-aarch64-arch_parse-improve-VAR_CBLOCK-start-ind.patch -Patch0060: 0059-tls-add-support-for-TLS-symbol-with-IE-model.patch -Patch0061: 0060-arch64-arch_elf-add-R_AARCH64_LDST32_ABS_LO12_NC-rel.patch -Patch0062: 0061-process-fix-region-start-calculation.patch -Patch0063: 0062-aarch64-arch_elf-Add-ldr-and-ldrb-relocation-for-aar.patch -Patch0064: 0063-process-add-some-checks-before-patching.patch -Patch0065: 0064-time-add-frozen-time-count-for-patch-unpatch.patch -Patch0066: 0065-libcare-ctl-optimize-output-of-libcare-ctl-info.patch -Patch0067: 0066-libcare-patch-make-add-build-id-options.patch -Patch0068: 0067-libcare-patch-make-add-j-option-to-accelarate-make-p.patch -Patch0069: 0068-Makefile-make-binfiles-permission-as-500.patch -Patch0070: 0069-libcare-ctl-remove-useless-codes-for-info-interface.patch -Patch0071: 0070-kpatch_object-combine-funcitons-with-similar-functio.patch -Patch0072: 0071-process_unpatch-adapt-return-value.patch -Patch0073: 0072-kpatch_elf-arch_elf-enhance-kpatch_elf-and-arch_elf-.patch -Patch0074: 0073-tls-prctl-remove-deprecated-code-for-tls-and-prctl.patch -Patch0075: 0074-kpatch_parse-fix-possible-Null-pointer-dereferences.patch -Patch0076: 0075-gensrc-cc-elf-optimize-libcare-code-to-make-checker-.patch -Patch0077: 0076-kpatch_parse-fix-wrong-return-in-is_data_sect.patch -Patch0078: 0077-libcare-patch-make-export-libcare-env-variables.patch -Patch0079: 0078-storage-strip-fix-some-bad-code-problem.patch -Patch0080: 0079-ptrace-process-patch-fix-some-bad-code-problem.patch -Patch0081: 0080-kpatch-rename-uname-to-buildid.patch -Patch0082: 0081-kpatch-clear-code-checker-warnings.patch -Patch0083: 0082-kpatch_strip-revert-close-fd-in-kpatch_open_elf.patch -Patch0084: 0083-kpatch-fix-code-checker-warning.patch -Patch0085: 0084-kpatch_ptrace-fix-x86-compile-failure.patch -Patch0086: 0085-return-make-every-return-properly-other-than-direct-.patch -Patch0087: 0086-libcare-patch-make-check-return-for-each-patch-make-.patch -Patch0088: 0087-kpatch-clear-code-checker-warnings.patch -Patch0089: 0088-kpatch_make-initialize-fd-to-avoid-unexpected-close.patch -Patch0090: 0089-kpatch_cc-Optimize-build_multiple-a-little-bit.patch -Patch0091: 0090-patch-correct-time-comsume-print.patch -Patch0092: 0091-tests-fix-tests-some-executing-problem.patch -Patch0093: 0092-gensrc-add-test-mode-and-check-whether-the-conf-file.patch -Patch0094: 0093-libcare-dump-add-libcare-dump-auxiliary-tools.patch -Patch0095: 0094-process-add-a-flag-to-mark-unpatch-target-elf.patch -Patch0096: 0095-strip-settle-libcare-dump-output-elf-file-can-not-be.patch -Patch0097: 0096-kpatch_user-remove-stresstest-mode.patch -Patch0098: 0097-tests-Split-client-server-binary-into-devel.patch -Patch0099: 0098-misc-add-D_FORTIFY_SOURCE-2-and-fix-return-check.patch -Patch0100: 0099-misc-fix-trivial-codex-issues-and-compile-warning.patch -Patch0101: 0100-libcare-info-rename-Process-as-Target-instead.patch -Patch0102: 0101-libcare-dump-add-support-for-dumping-patch-header.patch -Patch0103: 0102-codedex-fix-codedex-warning.patch -Patch0104: 0103-unpatch-enhance-error-handling-and-log-records-of-ob.patch -Patch0105: 0104-test-adapt-UT-tests-in-x86_64.patch -Patch0106: 0105-arch.desc-delete-arch.desc.patch -Patch0107: 0106-test-fix-some-problems-in-UT-tests.patch -Patch0108: 0107-ptrace-check-pread-return-value.patch -Patch0109: 0108-libcare-dump-fix-fd-leak-in-libcare-dump.patch -Patch0110: 0109-refactor-avoid-potential-file-leak-in-main.patch -Patch0111: 0110-libcare-dump-avoid-file-leak-in-libcare-dump.patch -Patch0112: 0111-kpatch_ptrace-fix-wrong-return-type.patch -Patch0113: 0112-kpatch_strip-fix-closing-negative-fd-in-kpatch_strip.patch -Patch0114: 0113-kpatch_make-fix-closing-negative-fd-in-kpatch_make.patch -Patch0115: 0114-process-turn-on-gcc-Werror-and-fix-some-warning.patch -Patch0116: 0115-kpatch_ptrace-fix-uninitialing-buf.patch -Patch0117: 0116-reliablity-avoid-double-free-in-future.patch -Patch0118: 0117-process-check-running-status-if-ptrace-detach-return.patch -Patch0119: 0118-kpatch_gensrc-libcare-dump-avoid-resource-leak-in-cm.patch -Patch0120: 0120-strip-return-1-if-get-tls-got_offset-failed.patch -Patch0121: 0121-user-print-log-before-performing-task.patch -Patch0122: 0122-process-memset-new-malloc-object.patch -Patch0123: 0123-patch-add-default-case-for-bash-case-statement.patch -Patch0124: 0124-style-fix-mismatch-code-alignment.patch -Patch0125: 0125-kpatch_cc-Avoid-buffer-out-of-bounds-write.patch -Patch0126: 0126-kpatch_make-Avoid-open-NULL.patch -Patch0127: 0127-bugfix-set-o-dynsyms-to-NULL-when-free-buffer.patch -Patch0128: 0128-codesytle-keep-the-same-size-of-proc-memfd.patch -Patch0129: 0129-optimize-Remove-unused-functions-and-add-check-for-s.patch -Patch0130: 0130-kpatch_storage-adapt-some-indent-alignment-and-descr.patch -Patch0131: 0131-tests-UT-support-aarch64-architecture.patch -Patch0132: 0132-process-fix-some-exception-handling-problem-and-code.patch -Patch0133: 0133-Fix-some-code-alignments.patch -Patch0134: 0134-kpatch_gensrc-Call-close_file-to-avoid-memory-leak.patch -Patch0135: 0135-kpatch_io-Fix-memory-leak.patch -Patch0136: 0136-kpatch_gensrc-Fix-memory-leak-of-renames.patch -Patch0137: 0137-kpatch_gensrc-Fix-memory-leak-of-cblocks.patch -Patch0138: 0138-kpatch_io-Fix-memory-leak-of-section-and-ctype.patch -Patch0139: 0139-optimize-fix-uninitialized-variable.patch -Patch0140: 0140-kpatch_patch-fix-possible-memory-leaks.patch -Patch0141: 0141-kpatch-fix-some-codeing-problems.patch -Patch0142: 0142-kpatch_process-fix-memory-leak.patch -Patch0143: 0143-kpatch_process-fix-double-free.patch -Patch0144: 0144-kpatch_gensrc-Fix-use-after-free.patch -Patch0145: 0145-kpatch_io-Fix-NULL-dereference.patch -Patch0146: 0146-process-Revert-codedex-fix-double-free.patch -Patch0147: 0147-process-malloc-new-memory-to-store-target-object-s-k.patch -Patch0148: 0148-ptrace-fix-NULL-pointer-access-problem.patch -Patch0149: 0149-ptrace-check-the-return-value-of-open-function.patch -Patch0150: 0150-log-optimize-some-descriptions-and-formats-of-logs.patch -Patch0151: 0151-security-replace-sprintf-with-snprintf-to-ensure-saf.patch -Patch0152: 0152-security-replace-strcpy-with-strncpy-to-ensure-safet.patch -Patch0153: 0153-process-solve-only-can-apply-one-patch-in-left-hole-.patch -Patch0154: 0154-patch-fix-the-type-mismatch-problem.patch -Patch0155: 0155-optimize-fix-some-coding-problems.patch -Patch0156: 0156-security-check-kpatch-file-size-before-using-it.patch -Patch0157: 0157-objinfo-check-index-before-using.patch -Patch0158: 0158-log-log-enhancement-to-facilitate-problems-location.patch -Patch0159: 0159-gensrc-make-sure-.kpatch.data-is-4K-page-alignment.patch -Patch0160: 0160-elf-get-.kpatch.data-offset.patch -Patch0161: 0161-process-rearrange-the-kpatch-region-memory-distribut.patch -Patch0162: 0162-ptrace-support-remote-mprotect-syscall.patch -Patch0163: 0163-patch-record-remote-malloc-total-memory-size.patch -Patch0164: 0164-process-change-kpatch-region-access-permission.patch -Patch0165: 0165-process-adapt-to-recognize-kpatch-region.patch -Patch0166: 0166-kpatch_user-init-pid-in-cmd_info_user.patch BuildRequires: elfutils-libelf-devel libunwind-devel gcc systemd diff --git a/src-Makefile-install-kpatch_gensrc-into-bindir.patch b/src-Makefile-install-kpatch_gensrc-into-bindir.patch deleted file mode 100644 index 6f31adb..0000000 --- a/src-Makefile-install-kpatch_gensrc-into-bindir.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 9221bb4ccd3f448fde2923df4598df17488978a9 Mon Sep 17 00:00:00 2001 -From: Ying Fang -Date: Tue, 8 Dec 2020 15:18:19 +0800 -Subject: [PATCH] src/Makefile: install kpatch_gensrc into bindir - -Signed-off-by: Ying Fang ---- - src/Makefile | 8 +++----- - 1 file changed, 3 insertions(+), 5 deletions(-) - -diff --git a/src/Makefile b/src/Makefile -index 72ec073..22eb623 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -98,10 +98,8 @@ install: all - $(INSTALL) -m 0755 libcare-client $(DESTDIR)/$(bindir)/libcare-client - $(INSTALL) -m 0755 libcare-cc $(DESTDIR)/$(bindir)/libcare-cc - $(INSTALL) -m 0755 libcare-patch-make $(DESTDIR)/$(bindir)/libcare-patch-make -- -- $(INSTALL) -d $(DESTDIR)/$(libexecdir)/libcare -- $(INSTALL) -m 0755 kpatch_gensrc $(DESTDIR)/$(libexecdir)/libcare/kpatch_gensrc -- $(INSTALL) -m 0755 kpatch_make $(DESTDIR)/$(libexecdir)/libcare/kpatch_make -- $(INSTALL) -m 0755 kpatch_strip $(DESTDIR)/$(libexecdir)/libcare/kpatch_strip -+ $(INSTALL) -m 0755 kpatch_gensrc $(DESTDIR)/$(bindir)/kpatch_gensrc -+ $(INSTALL) -m 0755 kpatch_make $(DESTDIR)/$(bindir)/kpatch_make -+ $(INSTALL) -m 0755 kpatch_strip $(DESTDIR)/$(bindir)/kpatch_strip - - .PHONY: all clean test tests tests-gensrc tests-strip --- -2.25.4 - -- Gitee

    1ZnAb28k{$sLu^7A1D>A1*Gb7Srs-x6o%S&rb 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%0D1z-BjJh81= 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

  • 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 diff --git a/libcareplus-1.0.0.spec b/libcareplus-1.0.0.spec new file mode 100644 index 0000000..0b78f3a --- /dev/null +++ b/libcareplus-1.0.0.spec @@ -0,0 +1,226 @@ +%define with_selinux 1 + +Version: 1.0.0 +Name: libcareplus +Summary: LibcarePlus tools +Release: 0 +Group: Applications/System +License: GPLv2 +Url: https://gitee.com/openeuler/libcareplus +Source0: %{name}-%{version}.tar.gz + + +BuildRequires: elfutils-libelf-devel libunwind-devel gcc systemd + +%if 0%{with selinux} +BuildRequires: checkpolicy +BuildRequires: selinux-policy-devel +%endif + +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +%if 0%{with selinux} +Requires: libcareplus-selinux = %{version}-%{release} +%endif + +%description +LibcarePlus userland tools + +%if 0%{with selinux} + +%package selinux +Summary: SELinux package for LibcarePlus/QEMU integration +Group: System Environment/Base +Requires(post): selinux-policy-base, policycoreutils +Requires(postun): policycoreutils +%description selinux +This package contains SELinux module required to allow for +LibcarePlus interoperability with the QEMU run by sVirt. + +%endif + + +%package devel +Summary: LibcarePlus development package +Group: System Environment/Development Tools +%description devel +LibcarePlus devel files. + + +%prep +%setup -q +%autopatch -p1 + +%build +cd src +sh ./config +cd ../ +make -C src +%if 0%{with selinux} +make -C dist/selinux +%endif + +%install +%{__rm} -rf %{buildroot} + +make -C src install \ + DESTDIR=%{buildroot} \ + bindir=%{_bindir} \ + libexecdir=%{_libexecdir} + +%if 0%{with selinux} +make -C dist/selinux install \ + DESTDIR=%{buildroot} +%endif + + +install -m 0644 -D dist/libcare.service %{buildroot}%{_unitdir}/libcare.service +install -m 0644 -D dist/libcare.socket %{buildroot}%{_unitdir}/libcare.socket +install -m 0644 -D dist/libcare.preset %{buildroot}%{_presetdir}/90-libcare.preset + +%pre +/usr/sbin/groupadd libcare -r 2>/dev/null || : +/usr/sbin/usermod -a -G libcare qemu 2>/dev/null || : + +%post +%systemd_post libcare.service +%systemd_post libcare.socket + +if [ $1 -eq 1 ]; then + # First install + systemctl start libcare.socket +fi +if [ $1 -eq 2 ]; then + # Upgrade. Just stop it, we will be reactivated + # by a connect to /run/libcare.sock + systemctl stop libcare.service +fi + +%preun +%systemd_preun libcare.socket +%systemd_preun libcare.service + +%postun +%systemd_postun libcare.service +%systemd_postun libcare.socket + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-,root,root) +%{_bindir}/libcare-ctl +%{_bindir}/libcare-client +%{_bindir}/libcare-server +%{_unitdir}/libcare.service +%{_unitdir}/libcare.socket +%{_presetdir}/90-libcare.preset + +%files devel +%defattr(-,root,root) +%{_bindir}/libcare-cc +%{_bindir}/libcare-patch-make +%{_bindir}/libcare-dump +%{_bindir}/kpatch_gensrc +%{_bindir}/kpatch_strip +%{_bindir}/kpatch_make + +%if 0%{with selinux} + +%files selinux +%defattr(-,root,root,-) +%attr(0600,root,root) %{_datadir}/selinux/packages/libcare.pp + +%post selinux +. /etc/selinux/config +FILE_CONTEXT=/etc/selinux/${SELINUXTYPE}/contexts/files/file_contexts +cp ${FILE_CONTEXT} ${FILE_CONTEXT}.pre + +/usr/sbin/semodule -i %{_datadir}/selinux/packages/libcare.pp + +# Load the policy if SELinux is enabled +if ! /usr/sbin/selinuxenabled; then + # Do not relabel if selinux is not enabled + exit 0 +fi + +/usr/sbin/fixfiles -C ${FILE_CONTEXT}.pre restore 2> /dev/null + +rm -f ${FILE_CONTEXT}.pre + +exit 0 + +%postun selinux +if [ $1 -eq 0 ]; then + . /etc/selinux/config + FILE_CONTEXT=/etc/selinux/${SELINUXTYPE}/contexts/files/file_contexts + cp ${FILE_CONTEXT} ${FILE_CONTEXT}.pre + + # Remove the module + /usr/sbin/semodule -n -r libcare > /dev/null 2>&1 + + /usr/sbin/fixfiles -C ${FILE_CONTEXT}.pre restore 2> /dev/null +fi +exit 0 + +%endif + +%changelog +* Mon Feb 07 2022 imxcc - 0.1.4.15 +- kpatch_user: init pid in cmd_info_user +* Mon Feb 07 2022 imxcc - 0.1.4.14 +- some bugfix +- support aarch64 UT +- fix memory RWX problem + +* Mon Feb 07 2022 imxcc - 0.1.4.13 +- add libcare-dump tool +- support test sets running on x86 +- some bugfixs + +* Mon Feb 07 2022 imxcc - 0.1.4.12 +- src/Makefile: execute config scripts before building +- kpatch_gensrc.c: support ignoring functions which we don't need +- arch/aarch64/arch_parse: modify is_variable_start for arm asm +- libcare-ctl: implement applied patch list +- libcare-ctl: introduce patch-id +- arch/aarch64/arch_elf: Add LDR and B instruction relocation +- arch/aarch64/arch_parse: improve VAR_CBLOCK start indentify +- tls: add support for TLS symbol with IE model +- arch64/arch_elf: add R_AARCH64_LDST32_ABS_LO12_NC relocation type for aarch64 +- process: fix region start calculation +- aarch64/arch_elf: Add ldr and ldrb relocation for aarch6 + +* Mon Feb 07 2022 imxcc - 0.1.4.11 +- kpatch_cc: support gcc -MQ option +- libcare-cc: add gcc iquote option support + +* Mon Feb 07 2022 imxcc - 0.1.4.10 +- kpatch_user.c: fix gcc warning + +* Mon Feb 07 2022 imxcc - 0.1.4.9 +- libcare-patch-make: add `-j|--jobs` option + +* Mon Feb 07 2022 imxcc - 0.1.4.8 +- updated the README.en.md file + +* Wed Sep 08 2021 imxcc - 0.1.4.7 +- selinux: Allow init_t create lnk file + +* Thu Sep 02 2021 imxcc - 0.1.4.6 +- enable selinux + +* Sat Aug 21 2021 caodongxia - 0.1.4-5 +- fixes uninstall warning + +* Tue Jun 08 2021 wulei - 0.1.4-4 +- fixes failed: gcc: command not found + +* Tue Feb 09 2021 Jiajie Li - 0.1.4-3 +- Add basic support libcareplus on aarch64 + +* Mon Dec 28 2020 sunguoshuai - 0.1.4-2 +- Del the {dist} in release. + +* Tue Dec 8 2020 Ying Fang +- Init the libcareplus package spec diff --git a/libcareplus-1.0.0.tar.gz b/libcareplus-1.0.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..02691fe22ce031cba7f9f5d6ed70d453dcea023d GIT binary patch literal 2467167 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 %w)t{-rT8}JQy9vb4k7{@a~WgYAx4GP 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�#GMW`Z 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%0D~M7P2h#fz!-lcmgoq1U(Vi{ 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