Thread (81 messages) 81 messages, 8 authors, 2022-05-25

Re: [RFC PATCH v2 07/21] cfi: Add type helper macros

From: Sami Tolvanen <samitolvanen@google.com>
Date: 2022-05-16 16:05:26
Also in: linux-hardening, lkml, llvm

On Sat, May 14, 2022 at 2:49 PM Kees Cook [off-list ref] wrote:
On Fri, May 13, 2022 at 01:21:45PM -0700, Sami Tolvanen wrote:
quoted
With CONFIG_CFI_CLANG, assembly functions called indirectly
from C code must be annotated with type identifiers to pass CFI
checking. The compiler emits a __kcfi_typeid_<function> symbol for
each address-taken function declaration in C, which contains the
expected type identifier. Add typed versions of SYM_FUNC_START and
SYM_FUNC_START_ALIAS, which emit the type identifier before the
function.

Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
And the reason to not make this change universally (i.e. directly in
SYM_FUNC_START) is to minimize how many of these symbol annotations get
emitted? (And to more directly indicate which asm is called indirectly?)
The reason not to add this to SYM_FUNC_START is that the compiler
doesn't emit the type symbols for all functions. It currently emits
them for all address-taken function declarations in each translation
unit. We could potentially further limit this by emitting them only
for function declarations with a specific attribute, for example, but
that's something we can optimize later.
What happens if an asm function is called indirectly and it doesn't have
this annotation?
It will fail the CFI check.
(Is this case detectable at compile-time?)
It's not. I'll update the commit message in the next version to
clarify these points.

Sami

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help