Automatic data environment construction for static device drivers analysis

  • Authors:
  • Hendrik Post;Wolfgang Küchlin

  • Affiliations:
  • University of Tübingen / Symbolic Computation Group, Tübingen, Germany;University of Tübingen / Symbolic Computation Group, Tübingen, Germany

  • Venue:
  • Proceedings of the 2006 conference on Specification and verification of component-based systems
  • Year:
  • 2006

Quantified Score

Hi-index 0.00

Visualization

Abstract

Linux contains thousands of device drivers that are developed independently by many developers. Though each individual driver source code is relatively small---≈10k lines of code---the whole operating system contains a few million lines of code. Therefore Linux device drivers offer a useful application area for modular analysis.Our finding is that despite the precise modeling of most features of the standard systems programming language C, model checking software verification tools for C fail to provide means for modular analysis of device drivers. We inspected CBMC [2], SLAM-SDV [3], MAGIC [1], BLAST [4] and others and found that a rich additional environment model for every device driver is needed. This model must provide information on out-of-scope initialized pointers and complex data structures. We present strategies to automatically create feasible, bounded data environments for Linux device drivers instead of creating them manually. Our solution differs from general interface generation mechanisms (e.g. CUTE[5]), because is it specialised on bounded model checking of Linux device drivers written in C. Our contribution is a preprocessing step that extends the usability of CBMC for modular Linux device driver analysis.