Control Flow Integrity in the Linux Kernel
summary
Control Flow Integrity is implemented in the kernel by using clang LTO to generate per-prototype jump tables that validate indirect calls (assembly uses an address subtract + rotate index check into the table), with a software shadow call stack for returns; ThinLTO reduces the huge link-time slowdowns (full LTO added minutes to hours). Pixel 3+ kernels ship forward and backward CFI, LKDTM triggers panics unless CFI permissive is set, and out‑of‑tree modules must be built with the same CFI-enabled toolchain.
AI-written summary · about
chapters (13)
- 0:00Introduction
- 0:58Agenda
- 1:31Why Care About CFI?
- 4:25Control Flow Attacks
- 8:18CFI Mechanisms
- 10:34Clang CFI Implementation
- 14:07Alternative Implementations
- 17:02Backward Edge Protection
- 20:37Android Implementation
- 21:43Upstreaming Challenges
- 25:24Upstreaming Status
- 29:10How to Use CFI
- 32:36Q&A Session
related talks
39mControl Flow Integrity in the Linux Kernel
44mLinux Kernel Control-Flow Integrity Sup...
35mControl Flow Integrity on RISC-V Linux
27mFiner-grained kernel control flow integrity and challenges
01h 46mA little Introduction to Control Flow Integrity
20mControl Flow Integrity on RISCV
27mControl Flow Integrity on RISC-V
01h 34mA Little Introduction to Control Flow Integrity in C++
