This article presents a case study on retrospective verification of the Linux Virtual File System (VFS), which is aimed at
checking violations of API usage rules and memory properties. Since VFS maintains dynamic data structures and is written in
a mixture of C and inlined assembly, modern software model checkers cannot be applied. Our case study centres around our novel
automated software verification tool, the SOCA Verifier, which symbolically executes and analyses compiled code. We describe
how this verifier deals with complex features such as memory access, pointer aliasing and computed jumps in the VFS implementation,
while reducing manual modelling to a minimum. Our results show that the SOCA Verifier is capable of analysing the complex
Linux VFS implementation reliably and efficiently, thereby going beyond traditional testing tools and into niches that current
software model checkers do not reach. This testifies to the SOCA Verifier’s suitability as an effective and efficient bug-finding
tool during the development of operating system components.
Keywords Model checking – Symbolic execution – Case study – Linuxvirtual file system – Object code analysis
by Jim Woodcock
An extended abstract of this article has appeared in the proceedings of SBMF 2009: “Formal Methods: Foundations and Applications”,
volume 5902 of Lecture Notes in Computer Science, pages 306–320, Springer, 2009.