kpatch/0027-create-diff-object-add-support-for-.retpoline_sites-.patch
Zhipeng Xie 2cb5ae19c7 backport upstream patches
Signed-off-by: Zhipeng Xie <xiezhipeng1@huawei.com>
2022-01-26 15:25:39 +08:00

49 lines
1.5 KiB
Diff

From 20c31ce6e82430ae0df0e8014058cfde83196ea0 Mon Sep 17 00:00:00 2001
From: Markus Boehme <markubo@amazon.com>
Date: Sat, 15 Jan 2022 01:00:39 +0100
Subject: [PATCH] create-diff-object: add support for .retpoline_sites section
Commit 134ab5bd1883 ("objtool,x86: Replace alternatives with .retpoline_sites")
in the kernel starts keeping track of retpoline thunk call sites in a
dedicated section rather than via the alternatives mechanism.
The .retpoline_sites section needs to have its entries and relocations
for changed symbols included in the patch ELF when building for kernel
5.16+ with CONFIG_RETPOLINE=y.
Signed-off-by: Markus Boehme <markubo@amazon.com>
---
kpatch-build/create-diff-object.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c
index 01e5d63..bbb40ed 100644
--- a/kpatch-build/create-diff-object.c
+++ b/kpatch-build/create-diff-object.c
@@ -2233,6 +2233,11 @@ static int static_call_sites_group_size(struct kpatch_elf *kelf, int offset)
return size;
}
+
+static int retpoline_sites_group_size(struct kpatch_elf *kelf, int offset)
+{
+ return 4;
+}
#endif
#ifdef __powerpc64__
static int fixup_entry_group_size(struct kpatch_elf *kelf, int offset)
@@ -2349,6 +2354,10 @@ static struct special_section special_sections[] = {
.name = ".static_call_sites",
.group_size = static_call_sites_group_size,
},
+ {
+ .name = ".retpoline_sites",
+ .group_size = retpoline_sites_group_size,
+ },
#endif
#ifdef __powerpc64__
{
--
2.27.0