Porting and Generalizing Dynamic Privilege in Linux
summary
Project ports a Dynamic Privilege mechanism from x86_64 to ARM64 by adding a K_elevate syscall and a task_struct flag to track elevation, with a working ARM64 implementation and lessons for RISC‑V. x86 needs an alternate exit path because sysenter/sysret (segment selector behavior) forces privilege drops; ARM uses PSTATE and the saved program status register to flip mode between SVC and return. A permissions fault on ARM leads to a pragmatic fix: a dynamic single-page PT mapping option passed to the syscall to make just the return page executable for elevated code.
AI-written summary · about
chapters (11)
- 0:00Introduction
- 1:49What is Dynamic Privilege
- 3:13Motivations
- 5:20System call interface
- 7:50Kernel changes overview
- 8:10x86 challenges
- 10:39ARM flexibility
- 13:12Privileged memory access
- 16:02RISC-V future work
- 17:28Process caching
- 18:33Q&A
related talks
52mIntra-Process Memory Protection for Applications on ARM and X86: Leveraging the ELF ABI
50mProtected KVM on Arm64: A Technical Deep Dive
24mReliability, Availability, and Serviceability (RAS) on ARM64 status
19mDisARMed: Attacking ARM TrustZone from Userspace with Memory Aliasing
46mKernel Hardening for 32-bit Arm Processors
39mCloudLinux runtime kernel update for ARM growth difficulties
26mArm64 Linux Kernel Architecture update
22mPrivbox: Faster System Calls Through Sandboxed Privileged Execution
