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

Re: [PATCH v3 03/17] mm: add generic __va_function and __pa_function macros

From: Sami Tolvanen <samitolvanen@google.com>
Date: 2021-03-24 15:55:11
Also in: bpf, linux-arm-kernel, linux-hardening, linux-kbuild, linux-pci, lkml

On Wed, Mar 24, 2021 at 12:14 AM Christoph Hellwig [off-list ref] wrote:
On Tue, Mar 23, 2021 at 01:39:32PM -0700, Sami Tolvanen wrote:
quoted
With CONFIG_CFI_CLANG, the compiler replaces function addresses
in instrumented C code with jump table addresses. This means that
__pa_symbol(function) returns the physical address of the jump table
entry instead of the actual function, which may not work as the jump
table code will immediately jump to a virtual address that may not be
mapped.

To avoid this address space confusion, this change adds generic
definitions for __va_function and __pa_function, which architectures
that support CFI can override. The typical implementation of the
__va_function macro would use inline assembly to take the function
address, which avoids compiler instrumentation.
I think these helper are sensible, but shouldn't they have somewhat
less arcane names and proper documentation?
Good point, I'll add comments in the next version. I thought
__pa_function would be a fairly straightforward replacement for
__pa_symbol, but I'm fine with renaming these. Any suggestions for
less arcane names?

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