lkml.org 
[lkml]   [2022]   [May]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [RFC PATCH v2 07/21] cfi: Add type helper macros
    On Sat, May 14, 2022 at 2:49 PM Kees Cook <keescook@chromium.org> wrote:
    >
    > On Fri, May 13, 2022 at 01:21:45PM -0700, Sami Tolvanen wrote:
    > > 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

    \
     
     \ /
      Last update: 2022-05-16 18:08    [W:3.641 / U:0.124 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site