summaryrefslogtreecommitdiffstats
path: root/tools/objtool
diff options
context:
space:
mode:
authorJuergen Gross <jgross@suse.com>2024-11-29 15:47:49 +0100
committerJuergen Gross <jgross@suse.com>2024-12-13 09:28:21 +0100
commitdda014ba59331dee4f3b773a020e109932f4bd24 (patch)
tree36706823f8ff905afc600701913807230b3efce3 /tools/objtool
parentx86: make get_cpu_vendor() accessible from Xen code (diff)
downloadlinux-dda014ba59331dee4f3b773a020e109932f4bd24.tar.xz
linux-dda014ba59331dee4f3b773a020e109932f4bd24.zip
objtool/x86: allow syscall instruction
The syscall instruction is used in Xen PV mode for doing hypercalls. Allow syscall to be used in the kernel in case it is tagged with an unwind hint for objtool. This is part of XSA-466 / CVE-2024-53241. Reported-by: Andrew Cooper <andrew.cooper3@citrix.com> Signed-off-by: Juergen Gross <jgross@suse.com> Co-developed-by: Peter Zijlstra <peterz@infradead.org>
Diffstat (limited to 'tools/objtool')
-rw-r--r--tools/objtool/check.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/tools/objtool/check.c b/tools/objtool/check.c
index 4ce176ad411f..76060da755b5 100644
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -3820,9 +3820,12 @@ static int validate_branch(struct objtool_file *file, struct symbol *func,
break;
case INSN_CONTEXT_SWITCH:
- if (func && (!next_insn || !next_insn->hint)) {
- WARN_INSN(insn, "unsupported instruction in callable function");
- return 1;
+ if (func) {
+ if (!next_insn || !next_insn->hint) {
+ WARN_INSN(insn, "unsupported instruction in callable function");
+ return 1;
+ }
+ break;
}
return 0;