diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2023-12-01 11:57:27 +0300 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2023-12-02 12:51:28 +0300 |
commit | fc50065325f8b88d6986f089ae103b5db858ab96 (patch) | |
tree | 9f8c80b4cd7b0ae4a3ff255b55e96f08f39c950b | |
parent | 9e9d673b2c84719937db5d6ab1d8cbcd7d45e974 (diff) | |
download | linux-fc50065325f8b88d6986f089ae103b5db858ab96.tar.xz |
x86/callthunks: Correct calculation of dest address in is_callthunk()
GCC didn't warn on the invalid use of relocation destination
pointer, so the calculated destination value was applied to
the uninitialized pointer location in error.
Fixes: 17bce3b2ae2d ("x86/callthunks: Handle %rip-relative relocations in call thunk template")
Reported-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Closes: https://lore.kernel.org/lkml/20231201035457.GA321497@dev-arch.thelio-3990X/
Link: https://lore.kernel.org/r/20231201085727.3647051-1-ubizjak@gmail.com
-rw-r--r-- | arch/x86/kernel/callthunks.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/kernel/callthunks.c b/arch/x86/kernel/callthunks.c index f56fa303d643..2324c7f9a841 100644 --- a/arch/x86/kernel/callthunks.c +++ b/arch/x86/kernel/callthunks.c @@ -312,7 +312,7 @@ static bool is_callthunk(void *addr) if (!thunks_initialized || skip_addr((void *)dest)) return false; - *pad = dest - tmpl_size; + pad = (void *)(dest - tmpl_size); memcpy(insn_buff, skl_call_thunk_template, tmpl_size); apply_relocation(insn_buff, tmpl_size, pad, |