Kernel concurrency bugs are notoriously difficult to find during testing since they are only triggered under certain instruction interleavings. Unfortunately, no tools for systematically subjecting kernel code to concurrency tests have been proposed to date. This gap in tool support may be explained by the challenge of controlling pre- cisely which kernel interleavings are executed without modifying the kernel under test itself. Furthermore, to be practical, prohibitive runtime overheads must be avoided and tools must remain portable as the kernel evolves. In this paper, we propose SKI, the first tool for the systematic exploration of possible interleavings of kernel code. SKI finds kernel bugs in unmodified kernels, and is thus directly applicable to different kernels. To achieve control over kernel interleavings in a portable way, SKI uses an adapted virtual machine monitor that performs an efficient analysis of the kernel execution on a virtual multiprocessor platform. This enables SKI to determine which kernel execution flows are eligible to run, and also to selectively control which flows may proceed. In addi- tion, we detail several essential optimizations that enable SKI to scale to real-world concurrency bugs. We reliably reproduced previously reported bugs by applying SKI to different versions of the Linux kernel and to the FreeBSD kernel. Our evaluation further shows that SKI was able to discover, in widely used and already heavily tested file systems (e.g., ext4, btrfs), several un- known bugs, some of which pose the risk of data loss.
|Title of host publication||11th USENIX Symposium on Operating Systems Design and Implementation (OSDI '14)|
|Publication status||Published - 1 Jan 2014|
|Event||11th USENIX Symposium on Operating Systems Design and Implementation (OSDI '14) - |
Duration: 1 Jan 2014 → …
|Conference||11th USENIX Symposium on Operating Systems Design and Implementation (OSDI '14)|
|Period||1/01/14 → …|