Re: [PATCH v5 00/22] KCFI support

From: Sedat Dilek
Date: Wed Sep 28 2022 - 05:02:49 EST


On Mon, Sep 26, 2022 at 7:21 PM Kees Cook <keescook@xxxxxxxxxxxx> wrote:
>
> On Thu, 8 Sep 2022 14:54:42 -0700, Sami Tolvanen wrote:
> > KCFI is a forward-edge control-flow integrity scheme in the upcoming
> > Clang 16 release, which is more suitable for kernel use than the
> > existing CFI scheme used by CONFIG_CFI_CLANG. KCFI doesn't require
> > LTO, doesn't alter function references to point to a jump table, and
> > won't break function address equality.
> >
> > This series replaces the current arm64 CFI implementation with KCFI
> > and adds support for x86_64.
> >
> > [...]
>
> I assume that Peter's Ack means I should carry the tree, so, to that end:
>
> Applied to for-next/kcfi, thanks!
>

Hi,

I did regularly KCFI testing.

1. Used Sami's samitolvanen.github#linux/kcfi Git on the Linux side.

2. Used *not* LLVM-16 (including KCFI) but with LLVM-15 from
samitolvanen.github#llvm-project/15.x/kcfi Git on the toolchain side.

My last testing was with [1] (Linux v6.0-rc7 + KCFI) and [2] (LLVM
v15.0.1 + KCFI) plus drm-i915-gt/KCFI for Linux v6.0-rc7 patch from
Nathan (see [3]).
Thanks Sami for updating 15.x/kcfi on LLVM side on my request.

So, feel free to add my:

Tested-by: Sedat Dilek <sedat.dilek@xxxxxxxxx> # LLVM-15 (with KCFI
support) on x86-64

Thanks to all involved people!

Best regards,
-Sedat-

[1] https://github.com/samitolvanen/linux/commits/kcfi
[2] https://github.com/samitolvanen/llvm-project/commits/15.x/kcfi
[3] https://github.com/ClangBuiltLinux/linux/issues/1716#issuecomment-1257311327

> [01/22] treewide: Filter out CC_FLAGS_CFI
> https://git.kernel.org/kees/c/f143ff397a3f
> [02/22] scripts/kallsyms: Ignore __kcfi_typeid_
> https://git.kernel.org/kees/c/d0f9562ee43a
> [03/22] cfi: Remove CONFIG_CFI_CLANG_SHADOW
> https://git.kernel.org/kees/c/9fca7115827b
> [04/22] cfi: Drop __CFI_ADDRESSABLE
> https://git.kernel.org/kees/c/92efda8eb152
> [05/22] cfi: Switch to -fsanitize=kcfi
> https://git.kernel.org/kees/c/89245600941e
> [06/22] cfi: Add type helper macros
> https://git.kernel.org/kees/c/e84e008e7b02
> [07/22] lkdtm: Emit an indirect call for CFI tests
> https://git.kernel.org/kees/c/cf90d0383560
> [08/22] psci: Fix the function type for psci_initcall_t
> https://git.kernel.org/kees/c/44f665b69c67
> [09/22] arm64: Add types to indirect called assembly functions
> https://git.kernel.org/kees/c/c50d32859e70
> [10/22] arm64: Add CFI error handling
> https://git.kernel.org/kees/c/b26e484b8bb3
> [11/22] arm64: Drop unneeded __nocfi attributes
> https://git.kernel.org/kees/c/5f20997c194e
> [12/22] init: Drop __nocfi from __init
> https://git.kernel.org/kees/c/5dbbb3eaa2a7
> [13/22] treewide: Drop function_nocfi
> https://git.kernel.org/kees/c/607289a7cd7a
> [14/22] treewide: Drop WARN_ON_FUNCTION_MISMATCH
> https://git.kernel.org/kees/c/4b24356312fb
> [15/22] treewide: Drop __cficanonical
> https://git.kernel.org/kees/c/5659b598b4dc
> [16/22] objtool: Preserve special st_shndx indexes in elf_update_symbol
> https://git.kernel.org/kees/c/5141d3a06b2d
> [17/22] objtool: Disable CFI warnings
> https://git.kernel.org/kees/c/3c68a92d17ad
> [18/22] kallsyms: Drop CONFIG_CFI_CLANG workarounds
> https://git.kernel.org/kees/c/dfb352ab1162
> [19/22] x86/tools/relocs: Ignore __kcfi_typeid_ relocations
> https://git.kernel.org/kees/c/ca7e10bff196
> [20/22] x86: Add types to indirectly called assembly functions
> https://git.kernel.org/kees/c/ccace936eec7
> [21/22] x86/purgatory: Disable CFI
> https://git.kernel.org/kees/c/a4b7a12c5594
> [22/22] x86: Add support for CONFIG_CFI_CLANG
> https://git.kernel.org/kees/c/3c516f89e17e
>
> --
> Kees Cook
>