Papers for

rust embedded systems engineers

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