Verification of the Tree-Based Hierarchical Read-Copy Update in the Linux Kernel

10/10/2016
by   Lihao Liang, et al.
0

Read-Copy Update (RCU) is a scalable, high-performance Linux-kernel synchronization mechanism that runs low-overhead readers concurrently with updaters. Production-quality RCU implementations for multi-core systems are decidedly non-trivial. Giving the ubiquity of Linux, a rare "million-year" bug can occur several times per day across the installed base. Stringent validation of RCU's complex behaviors is thus critically important. Exhaustive testing is infeasible due to the exponential number of possible executions, which suggests use of formal verification. Previous verification efforts on RCU either focus on simple implementations or use modeling languages, the latter requiring error-prone manual translation that must be repeated frequently due to regular changes in the Linux kernel's RCU implementation. In this paper, we first describe the implementation of Tree RCU in the Linux kernel. We then discuss how to construct a model directly from Tree RCU's source code in C, and use the CBMC model checker to verify its safety and liveness properties. To our best knowledge, this is the first verification of a significant part of RCU's source code, and is an important step towards integration of formal verification into the Linux kernel's regression test suite.

READ FULL TEXT
research
09/03/2018

Deductive Verification of Unmodified Linux Kernel Library Functions

This paper presents results from the development and evaluation of a ded...
research
09/17/2023

Rely-guarantee Reasoning about Concurrent Memory Management: Correctness, Safety and Security

Formal verification of concurrent operating systems (OSs) is challenging...
research
08/24/2017

Towards Evaluating Size Reduction Techniques for Software Model Checking

Formal verification techniques are widely used for detecting design flaw...
research
09/14/2023

HIVE: Scalable Hardware-Firmware Co-Verification using Scenario-based Decomposition and Automated Hint Extraction

Hardware-firmware co-verification is critical to design trustworthy syst...
research
10/25/2019

Embracing a mechanized formalization gap

If a code base is so big and complicated that complete mechanical verifi...
research
12/21/2019

Verifying x86 Instruction Implementations

Verification of modern microprocessors is a complex task that requires a...
research
10/19/2017

Safe Pointers in SPARK 2014

In the context of deductive software verification, programs with pointer...

Please sign up or login with your details

Forgot password? Click here to reset