!48 backport upstream patches

From: @xiezhipeng1
Reviewed-by: @licihua
Signed-off-by: @licihua
This commit is contained in:
openeuler-ci-bot 2021-10-26 11:47:04 +00:00 committed by Gitee
commit 33b0bad770
4 changed files with 103 additions and 1 deletions

View File

@ -0,0 +1,36 @@
From fa5a95cafdb034b825242a93ef1b4ce57985a93d Mon Sep 17 00:00:00 2001
From: Josh Poimboeuf <jpoimboe@redhat.com>
Date: Tue, 13 Apr 2021 13:58:59 -0500
Subject: [PATCH] create-diff-object: Fix out-of-range relocation error message
Showing sec+addend isn't valid, show sym+addend instead.
Before:
create-diff-object: ERROR: sys.o: kpatch_check_relocations: 2550: out-of-range relocation .rodata.__kpatch_do_sys_uname.str1.1+139 in .rela.text.__kpatch_do_sys_uname
After:
create-diff-object: ERROR: sys.o: kpatch_check_relocations: 2550: out-of-range relocation .LC7+139 in .rela.text.__kpatch_do_sys_uname
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
---
kpatch-build/create-diff-object.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c
index 82e486f..d427beb 100644
--- a/kpatch-build/create-diff-object.c
+++ b/kpatch-build/create-diff-object.c
@@ -2547,7 +2547,7 @@ static void kpatch_check_relocations(struct kpatch_elf *kelf)
if (rela->sym->sec) {
sdata = rela->sym->sec->data;
if (rela->addend > (long)sdata->d_size) {
- ERROR("out-of-range relocation %s+%lx in %s", rela->sym->sec->name,
+ ERROR("out-of-range relocation %s+%lx in %s", rela->sym->name,
rela->addend, sec->name);
}
}
--
2.23.0

View File

@ -0,0 +1,32 @@
From 81f9ca4833bf9c5867858d633c340cedca554ca6 Mon Sep 17 00:00:00 2001
From: Josh Poimboeuf <jpoimboe@redhat.com>
Date: Tue, 13 Apr 2021 14:00:41 -0500
Subject: [PATCH] create-diff-object: Fix out-of-range relocation check
Improve the relocation check for the case where the referenced symbol
isn't at the beginning of the section.
Note that the check still isn't perfect, as many relocations have a
negative addend. But it's still a lot better than nothing.
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
---
kpatch-build/create-diff-object.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c
index d427beb..14eb1f5 100644
--- a/kpatch-build/create-diff-object.c
+++ b/kpatch-build/create-diff-object.c
@@ -2546,7 +2546,7 @@ static void kpatch_check_relocations(struct kpatch_elf *kelf)
list_for_each_entry(rela, &sec->relas, list) {
if (rela->sym->sec) {
sdata = rela->sym->sec->data;
- if (rela->addend > (long)sdata->d_size) {
+ if ((long)rela->sym->sym.st_value + rela->addend > (long)sdata->d_size) {
ERROR("out-of-range relocation %s+%lx in %s", rela->sym->name,
rela->addend, sec->name);
}
--
2.23.0

View File

@ -0,0 +1,25 @@
From eaaced1912c43103749366927daff5794ea4f404 Mon Sep 17 00:00:00 2001
From: gouhao <gouhao@uniontech.com>
Date: Wed, 8 Sep 2021 09:37:08 +0800
Subject: [PATCH] add openEuler build support
---
kpatch-build/kpatch-build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build
index 495ca3d..49c0045 100755
--- a/kpatch-build/kpatch-build
+++ b/kpatch-build/kpatch-build
@@ -696,7 +696,7 @@ fi
# shellcheck disable=SC1090
[[ -f "$RELEASE_FILE" ]] && source "$RELEASE_FILE"
DISTRO="$ID"
-if [[ "$DISTRO" = fedora ]] || [[ "$DISTRO" = rhel ]] || [[ "$DISTRO" = ol ]] || [[ "$DISTRO" = centos ]]; then
+if [[ "$DISTRO" = fedora ]] || [[ "$DISTRO" = rhel ]] || [[ "$DISTRO" = ol ]] || [[ "$DISTRO" = centos ]] || [[ "$DISTRO" = openEuler ]]; then
[[ -z "$VMLINUX" ]] && VMLINUX="/usr/lib/debug/lib/modules/$ARCHVERSION/vmlinux"
[[ -e "$VMLINUX" ]] || die "kernel-debuginfo-$ARCHVERSION not installed"
--
2.23.0

View File

@ -1,7 +1,7 @@
Name: kpatch
Epoch: 1
Version: 0.9.1
Release: 19
Release: 20
Summary: A Linux dynamic kernel patching infrastructure
License: GPLv2
@ -43,6 +43,9 @@ Patch0028:0028-lookup-Add-__UNIQUE_ID_-to-maybe_discarded_sym-list.patch
Patch0029:0029-create-diff-object-error-on-detect-new-changed-ALTIN.patch
Patch0030:0030-kpatch-update-sympos-for-duplicate-symbols-in-vmlinu.patch
Patch0031:0031-create-diff-object-fix-segment-fault-when-sec2-rela-.patch
Patch0032:0032-create-diff-object-Fix-out-of-range-relocation-error.patch
Patch0033:0033-create-diff-object-Fix-out-of-range-relocation-check.patch
Patch0034:0034-add-openEuler-build-support.patch
BuildRequires: gcc elfutils-libelf-devel kernel-devel git
Requires: bc make gcc patch bison flex openssl-devel
@ -103,6 +106,12 @@ popd
%{_mandir}/man1/*.1.gz
%changelog
* Tue Oct 26 2021 Zhipeng Xie<xiezhipeng1@huawei.com> -1:0.9.1-20
- Type:enhancement
- ID:NA
- SUG:NA
- DESC:backport upstream patches
* Tue Oct 26 2021 Zhipeng Xie<xiezhipeng1@huawei.com> -1:0.9.1-19
- Type:enhancement
- ID:NA