Papers for

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.

Linux kernel data race detection improved by separating input and scheduling searches

Breaking the Coupling: Efficient Concurrency Fuzzing for Linux Kernel Data Race Detection

Abstract: Detecting data races in the Linux kernel requires exploring both the input space and the thread-interleaving space. Existing kernel concurrency fuzzers couple these two searches by exploring interleavings during fuzzing, often spending substantial scheduling effort on inputs with little potential to trigger real races. In this paper, we present a new concurrency fuzzing paradigm that decouples concurrent-input generation from thread-interleaving exploration, enabling expensive scheduling to focus on promising inputs. To identify inputs that warrant targeted scheduling, we introduce May Race Pairs (MRPs), which represent conflicting memory-access pairs observed within a dynamically determined time threshold. Our framework first generates and executes concurrent syscall groups without controlled scheduling, collecting MRPs to guide further input mutation and identify schedule-worthy inputs. It then uses a separate scheduling instance to explore targeted interleavings and confirm real data races. To improve the effectiveness of both stages, we incorporate LLM-assisted semantic mutation for generating diverse syscall groups, backpressure-guided dynamic threshold control for balancing candidate production and scheduling consumption, and history-aware context recovery, context-aware interleaving scheduling, and candidate MRP prioritization for efficient race confirmation. We implement our framework for the Linux kernel and evaluate it on eight common kernel modules in Linux 6.17. It discovers 187 unique real-world data races, including 59 harmful races. Under the same testing budget, our approach detects substantially more data races than existing kernel concurrency fuzzers, including SegFuzz and CONZZER. These results demonstrate the effectiveness of decoupling concurrent-input generation from interleaving exploration and concentrating scheduling effort on promising candidates.

Thu 22 OctOperating Systems
The gist
Detecting bugs called data races in the Linux kernel is difficult because it needs testing many inputs and many ways threads can run at the same time. Existing tools mix these two steps, wasting effort on inputs unlikely to cause problems. The authors created a new method that separates generating test inputs from exploring thread timing, focusing detailed checks only on inputs likely to reveal races. Their approach found many more real bugs than previous tools by first running tests without careful scheduling, spotting risky memory accesses, and then targeting those inputs with focused timing exploration.
Open → 2610.30813v1

Linux kernel bug fixes face delays after automated discovery

SoK: From Finding to Deployment: Systematizing the OS Kernel Bug Lifecycle

Abstract: Automated kernel bug discovery has advanced rapidly. Continuous fuzzing and static analysis systems, such as syzbot, now expose Linux kernel bugs at a scale that downstream processes struggle to absorb. Yet a crash report is only the beginning. Before a bug is eliminated, it must be triaged, understood, patched, validated, reviewed, integrated, and often backported. These later stages remain far less automated, creating a persistent gap between bug discovery and patch deployment. This SoK systematizes the Linux kernel bug lifecycle from discovery to deployment. We organize prior work and production systems into five stages: discovery, triage, patch generation, patch validation, and integration. We explain the resulting automation gradient through kernel-specific challenges such as concurrency, implicit invariants, cross-syscall state, hardware dependence, lack of fault isolation, and architecture/configuration multiplicity. We further ground the analysis in a measurement of real syzbot-fixed bugs. The data shows that the crash-to-patch gap is not merely a backlog of unfixed reports but a structural failure mode of the repair pipeline: even after being fixed, bugs often remain open for weeks, require review-driven patch revisions, or lack reproducers that current repair and validation systems assume. This exposes a mismatch between where kernel-security automation is mature and where bug closure actually breaks down. These findings expose a deeper mismatch: today's repair and validation techniques often assume reliable reproducers, localized root causes, and checkable correctness oracles, yet these are precisely the artifacts missing from many real kernel bug reports. Closing the crash-to-patch gap, therefore, requires treating such artifacts as outputs to be produced, not prerequisites to be assumed.

Sat 19 SeptCryptography and SecurityOperating SystemsSoftware Engineering
The gist
Finding bugs in the Linux operating system kernel has become more automated and frequent. But fixing these bugs involves many steps like understanding, patching, and testing, which are still mostly done by people, causing delays. The authors studied this whole bug-fixing process and found that many bugs stay open a long time because the systems expect information that isn’t always available, like clear bug reproductions. They suggest that to speed up fixes, future tools should first generate these missing details instead of relying on them.
Open → 2609.23218v1

TyPatch improves Linux kernel bug detection using patch-based typestate rules

TyPatch: Transforming Patches into Typestate Rules for Kernel Bug Detection

Abstract: Historical Linux kernel patches capture defect knowledge that applies beyond their original repair sites. Recent work has shown that large language models (LLMs) can generate static-analysis checkers from historical patches and use them to uncover new kernel bugs. However, complete-checker generation requires the model both to recover the defect semantics expressed by a patch and to implement sophisticated program-analysis machinery, including object tracking, alias analysis, path-state maintenance, and interprocedural propagation. Coupling these responsibilities in a single end-to-end code-generation task can turn a simple defect rule into an unstable and expensive analyzer-implementation problem. To address this problem, we present TyPatch, which decouples patch-specific defect semantics from analyzer implementation. An LLM translates each patch into a typestate rule specifying its tracked object, actions, guards, transitions, and violations. A shared backend then executes these rules, binding their actions to program events, tracking object identity across aliases, propagating typestate along program paths, and producing reports for all rules. On Linux v6.16, TyPatch finds 559 distinct bugs, 121 of which have been confirmed by kernel developers. In a matched 38-patch comparison with the state-of-the-art complete-checker construction workflow, TyPatch uses 88.3-90.1% fewer generation tokens, while its initial report pools achieve 3.42-14.95$\times$ the precision of those produced by that workflow.

Sat 12 SeptSoftware EngineeringArtificial IntelligenceCryptography and Security
The gist
Detecting bugs in the Linux kernel is hard because some bugs involve complex interactions within the code. The authors created TyPatch, a tool that turns past bug fixes into clear rules about how objects in the code should behave. Instead of building big, complicated checkers for each bug, TyPatch separates the bug knowledge from the checking process. This approach helps find many bugs more efficiently and with fewer mistakes than previous methods.
Open → 2609.13728v1