Papers for

linux kernel developers

Papers whose findings have a practical use for this group, as judged from the abstract. Open a paper to read what it means in practice.

XRust finds hidden concurrency bugs in Linux Rust drivers

XRust: Detecting Logical Races in Rust Linux Drivers

Abstract: Rust is increasingly used in Linux to improve memory safety, but its guarantees do not prevent logical races: individually synchronized operations can still interleave in ways that violate higher-level invariants. Detecting such bugs typically requires manually written specifications and carefully controlled execution environments. We present XRust, a technique for detecting logical races in Linux Rust drivers without manually specified invariants. Using Logical Happens-Before (LHB) analysis, XRust identifies shared-state accesses relevant to logical ordering, automatically constructs operation-pair harnesses, and uses serial differential oracles to detect concurrent executions inconsistent with either serial order. XRust also uses lightweight userspace abstractions to execute driver code under reproducible schedules. Applied to Linux 7.3-rc2, XRust identifies 17 shared objects across 102 Rust files from ten drivers, constructs 1,654 executable harnesses, and discovers two previously unknown logical races. The rnull block-driver race has been confirmed by Linux maintainers, with a fix accepted into the Linux block subsystem tree.

Mon 19 OctSoftware Engineering
The gist
Rust helps ensure safe memory use in Linux code, but it doesn’t stop certain timing bugs where pieces of code wrongly overlap. The authors created XRust, a tool that automatically identifies and tests pairs of operations that could cause these timing issues without needing manual rules. XRust runs driver code under special schedules and spots when operations run in unsafe orders. This helped find two new timing bugs in real Linux Rust drivers, one of which has now been fixed.
Open → 2610.27325v1

Linux large reads reveal wait time causes and enable performance tuning

Behind a Simple Read: Understanding Work and Waiting in the Linux I/O Stack

Abstract: A simple read interface provides uniform functional semantics, but not equally simple or predictable performance behavior. We use synchronous large-buffer reads in Linux as an observation window and decompose the buffered-read path end to end, distinguishing work volume, processing time, and critical-path exposure. We find that Linux reduces metadata work through large folios and overlaps most cold-read copying with device waiting, but these mechanisms depend on access advice, folio granularity, cache state, and backend execution. Using an experimental kernel prototype, we validate additional opportunities from out-of-order early copying and opportunistic parallelism, while showing that faster request submission does not improve end-to-end performance when SSD supply is already sufficient. To explain device waiting, we abstract first-completion wait $F$ and subsequent completion capacity $B_{CQ}$ from finite request-batch completion timelines. Measurements on a real SSD characterize how they vary with request size and batch size, while MQSim experiments connect them to internal device mechanisms and distinguish finite-batch completion from sustained throughput. We then construct a cross-layer wait chain along the actual folio--bio--request mapping. Independently calibrated device parameters predict waiting at the block layer and at read_pages with errors no greater than approximately 6.9% and 3.2%, respectively. Finally, four use cases apply the model and wait chain to parallel submission, Linux readahead, dependent-read layout, and polling versus sleeping. Their gains, no gains, and gain reversals form a closed loop from observation and modeling to explanation and control, providing a measurable basis for performance decisions in layered I/O stacks.

Wed 7 OctOperating Systems
The gist
Reading data in Linux may seem like a simple operation, but its speed depends on many hidden steps and waiting times. The authors studied how big read requests are handled, showing how the system overlaps data copying with device waiting to save time, but these benefits rely on things like memory layout and cache state. They built a model to predict waiting times accurately and used it to understand when speeding up parts of the system helps or not. Their work helps explain why read performance varies and guides better design and tuning of Linux I/O.
Open → 2610.10137v1

Linux io_uring and SLUB sheaf reveal new kernel attack methods

Harvest Season for SLUB: From io_uring vulnerability to Novel Sheaf-Based Exploitation Techniques

Abstract: The Linux kernel's push for higher I/O performance and more efficient memory management has introduced new mechanisms that, while improving performance, also open new attack surfaces. This research examines two of them together: the io_uring subsystem and the sheaf/barn caching mechanism added to the SLUB allocator in Linux 6.18. In this research, two previously unknown vulnerabilities in io_uring are presented, and one is developed into a complete local privilege escalation chain under a hardened kernel configuration. Building this chain revealed that the sheaf/barn mechanism changes long-standing assumptions behind established exploitation techniques such as cross-cache attack, and that its design also weakens existing SLUB freelist protections. Both observations are analyzed and turned into working primitives. Building on this analysis, three novel sheaf-based exploitation techniques are proposed. Among them, an RCU-sheaf cross-cache technique removes the traditional dependence on the buddy system for moving objects across caches, giving more flexible and reliable control over object migration between cache pools. Together, these results characterize the sheaf/barn layer as a new and largely unexplored attack surface in Linux kernel exploitation.

Tue 29 SeptCryptography and Security
The gist
Certain new features added to the Linux operating system to speed up file handling and memory management have unintended security weaknesses. The authors found two unknown flaws in a system called io_uring and showed how one could let a regular user gain full control on the computer even when protections are in place. They also studied a recent memory management addition called sheaf/barn in detail, discovering it breaks assumptions that many known attack techniques rely on. Using this insight, the authors created three new, more flexible ways to exploit these memory features, identifying a new area that attackers might target in the Linux kernel.
Open → 2609.37608v1

Automated patch-based reproduction of linux kernel bugs using llms and fuzzing

SyzHarness: Patch-Based Kernel Bug Reproduction with LLM-Synthesized Fuzzing Harnesses

Abstract: Automated kernel vulnerability reproduction is essential for bug triage, patch validation, and regression testing, but still lacks an effective and efficient solution. The core challenge is twofold: a reproducer must first recover the trigger scaffold needed to reach the vulnerable state and determine the precise concrete values that actually trigger the bug. Existing directed fuzzing approaches are ineffective at recovering the necessary trigger scaffold, while LLM- only generation is brittle because it struggles with concrete-value discovery and runtime nondeterminism. We design SyzHarness, a framework that combines LLM reasoning with coverage-guided fuzzing for patch-based Linux kernel vulnerability reproduction. Given a patch, SyzHarness uses an LLM agent grounded by code navigation tools to synthesize a parameterized fuzzing harness that fixes the prerequisite setup logic while exposing only uncertain, bug- critical input parameters to be mutated by Syzkaller. SyzHarness then translates this harness into a Syzkaller- compatible interface and iteratively refines it using hierarchical reachability feedback. We evaluate SyzHarness on multiple datasets of triggerable real-world Linux kernel vulnerabilities. On 100 KernelCTF cases, SyzHarness achieves a 78% bug reproduction success rate. On the SyzDirect benchmark, SyzHarness achieves a 73% bug reproduction success rate, substantially outperforming prior directed greybox fuzzing. On 50 recent, known-triggerable syzbot bugs fixed after March 2026, SyzHarness reproduces 40/50 (80%) using only the fix commits as input.

Sun 20 SeptCryptography and SecurityArtificial Intelligence
The gist
Reproducing bugs in the Linux kernel automatically helps fix and test software more efficiently, but it’s hard to do. The authors combine AI language models with a smart testing method called fuzzing to create small programs that focus on the exact parts of code causing bugs. Their approach makes testing much better by finding the right inputs that trigger bugs. They tested this on real Linux kernel bugs and succeeded most of the time, improving over earlier methods.
Open → 2609.23889v1