Thread (35 messages) 35 messages, 8 authors, 2021-03-29

Re: [PATCH v3 12/17] arm64: implement __va_function

From: Sami Tolvanen <samitolvanen@google.com>
Date: 2021-03-25 23:29:05
Also in: bpf, linux-arm-kernel, linux-hardening, linux-kbuild, linux-pci, lkml

On Thu, Mar 25, 2021 at 3:38 AM Mark Rutland [off-list ref] wrote:
On Tue, Mar 23, 2021 at 01:39:41PM -0700, Sami Tolvanen wrote:
quoted
With CONFIG_CFI_CLANG, the compiler replaces function addresses in
instrumented C code with jump table addresses. This change implements
the __va_function() macro, which returns the actual function address
instead.

Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <redacted>
Is there really no attribute or builtin that can be used to do this
without assembly?
I don't think the compiler currently offers anything that could help
us here. Peter, can you think of another way to avoid the function
address to jump table address conversion with
-fno-sanitize-cfi-canonical-jump-tables?
IIUC from other patches the symbol tables will contain the "real"
non-cfi entry points (unless we explciitly asked to make the jump table
address canonical), so AFAICT here the compiler should have all the
necessary information to generate either the CFI or non-CFI entry point
addresses, even if it doesn't expose an interface for that today.

It'd be a lot nicer if we could get the compiler to do this for us.
I agree, that would be quite useful in the kernel.

Sami
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help