Skip to main content
Log in

Using linux device drivers for static verification tools benchmarking

  • Published:
Programming and Computer Software Aims and scope Submit manuscript

Abstract

The Linux Driver Verification system is designed for static analysis of the source code of Linux kernel space device drivers. In this paper, we describe the architecture of the verification system, including the integration of third-party tools for static verification of C programs. We consider characteristics of the Linux drivers source code that are important from the viewpoint of verification algorithms and give examples of comparative analysis of different verification tools, as well as different versions and configurations of a given tool.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Similar content being viewed by others

References

  1. Engler, D., Chelf, A., and Chou, A., Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions, Proc. of the 4th Conf. on Symposium on Operating System Design and Implementation, 2000, vol. 1, pp. 1–16. http://dl.acm.org/cita-tion.cfm?id=1251229.1251230

    Google Scholar 

  2. Syromyatnikov, S., Declarative Interface of Defect Search in Syntactic Trees: The KAST Language, Tr. Inst. Sistemnogo Programmirovaniya RAN, 2011, vol. 20, pp. 51–68.

    Google Scholar 

  3. Nesov, V. and Malikov, O., Using Linear Dependence Data for Detection of Vulnerabilities in the Source Codes of Programs, Tr. Inst. Sistemnogo Programmirovaniya RAN, 2006, vol. 9, pp. 51–56.

    Google Scholar 

  4. Nesov, V. and Gaisaryan, S., Automatic Detection of Defects in the Source Codes of Programs, Proc. of the 17th All-Russian Scientific and Technical Conf.: Methods and Technical Means for Information Safety, 2008, p. 107.

  5. Nesov V., Automatically Finding Bugs in Open Source Programs, Proc. of the Third Int. Workshop on Foundations and Techniques for Open Source Software Certification, 2009, vol. 20, pp. 19–29.

    Google Scholar 

  6. Dillig, I., Dillig, T., and Aiken, A., Sound, Complete and Scalable Path-Sensitive Analysis, SIGPLAN Not., 2008, vol. 43, pp. 270–280. http://doi.acm.org/10.1145/1379022.1375615.

    Article  Google Scholar 

  7. Hovemeyer, D. and Pugh, W., Finding Bugs is Easy, SIGPLAN Not., 2004, vol. 39, pp. 92–106. http://doi.acm.org/10.1145/1052883.1052895.

    Article  Google Scholar 

  8. Evans, D. and Larochelle, D., Improving Security Using Extensible Lightweight Static Analysis, IEEE Software, 2002, vol. 19, pp. 42–51. http://por-tal.acm.org/citation.cfm?id=624647.626359.

    Article  Google Scholar 

  9. Beyer, D., Henzinger, T.A., Jhala, R., and Majumdar, R., The Software Model Checker Blast: Applications to Software Engineering, Int. J. Software Tools Technol. Transfer, 2007, vol. 9, no. 5, pp. 505–525.

    Article  Google Scholar 

  10. Shved, P., Mutilin, V., and Mandrykin, M., Static Verification “Under the Hood”: Implementation Details and Improvements of BLAST, Proc. of SYRCoSE, 2011, vol. 1, pp. 54–60.

    Google Scholar 

  11. Beyer, D. and Keremoglu, M.E., CPAchecker: A Tool for Configurable Software Verification, Proc. of the 23rd Int. Conf. on Computer-Aided Verification (CAV-11), Springer: Berlin-Heidelberg, 2011, pp. 184–190. http://dl.acm.org/citation.cfm?id=2032305.2032321.

    Chapter  Google Scholar 

  12. Clarke, Å., Kroening, D., and Lerda, F., A Tool for Checking ANSI-C Programs, Proc. of Tools and Algorithms for the Construction and Analysis of Systems (TACAS-2004), Jensen, K. and Podelski A., Eds., Springer, 2004; Lect. Notes Comput. Sci., 2004, vol. 2988, pp. 168–176.

  13. Podelski, A. and Rybalchenko, A., ARMC: The logical Choice for Software Model Checking with Abstraction Refinement, Practical Aspects of Declarative Languages, Hanus, M., Ed., Berlin: Springer, 2007; Lect. Notes Comput. Sci., vol. 4354, pp. 245–259.

    Chapter  Google Scholar 

  14. Ball, T., Bounimova, E., Levin V., et al., The Static Driver Verifier Research Platform, Computer Aided Verification (CAV-10), 2010, pp. 119–122.

  15. Ball, T., Bounimova, E., Kumar, B., and Levin V., SLAM2: Static Driver Verification with Under 4% False Alarms, Formal Methods in Computer Aided Design, 2010.

  16. Khoroshilov, A. and Mutilin, V., Formal Methods for Open Source Components Certification, Proc. of the 2nd Int. Workshop on Foundations and Techniques for Open Source Software Certification (OpenCert-2008), 2008, pp. 52–63.

  17. Khoroshilov, A., Mutilin, V., Shcherbina, V., et al., How to Cook an Automated System for Linux Driver Verification, Proc. of the 2nd Spring Young Researchers’ Colloquium on Software Engineering (SYRCoSE-2008), 2008, vol. 2, pp. 11–14.

    Google Scholar 

  18. Khoroshilov, A., Mutilin, V., Petrenko, A., and Zakharov V., Establishing Linux Driver Verification Process in Perspectives of Systems Informatics, Pnueli, A., Virbitskaite, I., and Voronkov, A., Eds., Berlin: Springer, 2010; Lect. Notes Comput. Sci., vol. 5947, pp. 165–176.

    Chapter  Google Scholar 

  19. Khoroshilov, A., Mutilin, V., Novikov, E., et al., Towards an Open Framework for Ñ Verification Tools Benchmarking, Proc. of PSI, 2011, pp. 82–91.

  20. Mutilin, V., Novikov, E., Strakh, A., et al., The Linux Driver Verification Architecture, Tr. Inst. Sistemnogo Programmirovaniya RAN, 2011, vol. 20, pp. 163–187.

    Google Scholar 

  21. Chou, A., Yang, J., Chelf B., et al., An Empirical Study of Operating Systems Errors, Proc. of the Eighteenth ACM Symp. on Operating Systems Principles (SOSP-01), New York: ACM, 2001, pp. 73–88.

    Chapter  Google Scholar 

  22. Swift, M.M., Bershad, B.N., and Levy, H.M., Improving the Reliability of Commodity Operating Systems Proc. of the Nineteenth ACM Symp. on Operating Systems Principles (SOSP-03), New York: ACM, 2003, pp. 207–222.

    Chapter  Google Scholar 

  23. Ivannikov, V.P. and Petrenko, A., Linux Operating System Verification Problems in the Context of Its Use in the State Sector, Tr. Inst. Sistemnogo Programmirovaniya RAN, 2006, vol. 10, pp. 9–14.

    Google Scholar 

  24. Kroah-Hartman, G., Corbet, J., and McPherson, A., Linux Kernel Development: How Fast It Is Going, Who Is Doing It, What They Are Doing, and Who Is Sponsoring It. http://www.linuxfoundation.org/docs/lf-linux-kernel-development-2010.pdf (2010).

  25. Ball T. and Rajamani, S.K., SLIC: A Specification Language for Interface Checking, Tech. Rep., Microsoft Research, 2001. http://research.microsoft.com/apps/pubs/default.aspx?id=69906.

  26. Beckman, N.E., Nori, A.V., Rajamani, S.K., and Simmons, R.J., Proofs from Tests, Proc. of the 2008 Int. Symp. on Software Testing and Analysis (ISSTA-08), New York: ACM, 2008, pp. 3–14. http://doi.acm.org/ 10.1145/1390630.1390634.

    Chapter  Google Scholar 

  27. Witkowski, T., Blanc, N., Kroening, D., Weissenbacher, G., Model Checking Concurrent Linux Device Drivers, Proc. of the Twenty-Second IEEE/ACM Int. Conf. on Automated Software Engineering, New York: ACM, 2007, pp. 501–504.

    Chapter  Google Scholar 

  28. Post, H. and Küchlin, W., Integrated Static Analysis for Linux Device Driver Verification, Proc. of the 6th Int. Conf. on Integrated Formal Methods (IFM-07), Berlin: Springer, 2007, pp. 518–537. http://portal.acm.org/citation.cfm?id=1770498.1770525.

    Google Scholar 

  29. Clarke, E., Kroening, D., Sharygina, N., and Yorav, K., SATABS: SAT-Based Predicate Abstraction for ANSIC, Proc. of the Int. Conf. on Tools and Algorithms for the Construction and Analysis of Systems (TACAS-2005), Springer, 2005; Lect. Notes Comput. Sci., 2005, vol. 3440, pp. 570–574.

  30. Post, H. and Küchlin, W., Automatic Data Environment Construction for Static Device Drivers Analysis, Proc. of the 2006 Conf. on Specification and Verification of Component-Based Systems (SAVCBS-06), New York: ACM, 2006, pp. 89–92. http://doi.acm.org/10.1145/1181195.1181215.

    Chapter  Google Scholar 

  31. Necula, G.C., McPeak, S., Rahul, S.P., and Weimer, W., CIL: Intermediate Language and Tools for Analysis and Transformation of Ñ Programs, Proc. of the 11th Int. Conf. on Compiler Construction (CC-02), London: Springer, 2002, pp. 213–228. http://por-tal.acm.org/citation.cfm?id=647478.727796.

    Google Scholar 

  32. Novikov, E., Simplified Analysis of Error Traces of the Code of Static Analysis Tools, Proc. of the Second Scientific and Practical Conf. “Actual Problems of System and Program Engineering (APSPE-2011), May 25, 2011, pp. 215–221.

  33. Weide, B.W., Sitaraman, M., Harton, H.K., et al., Incremental Benchmarks for Software Verification Tools and Techniques, Proc. of the 2nd Int. Conf. on Verified Software: Theories, Tools, Experiments (VSTTE-08), Springer: Berlin/Heidelberg, 2008, pp. 84–98. http://dx.doi.org/10.1007/978-3-540-87873-5_10.

    Chapter  Google Scholar 

  34. Clarke, E., Grumberg, O., Jha, S., et al., Counterexample-Guided Abstraction Refinement, Proc. CAV; Lect. Notes Comput. Sci., 2000, vol. 1855, pp. 154–169.

    Article  Google Scholar 

  35. Beyer, D., Henzinger, ò.A., and The’oduloz, G., Configurable Software Verification: Concretizing the Convergence of Model Checking and Program Analysis, Proc. of CAV, Springer: Berlin/Heidelberg, 2007, pp. 504–518. http://portal.acm.org/citation.cfm?id=1770351.1770419.

    Google Scholar 

  36. First International Competition on Software Verification (SV-COMP) Held at TACAS-2012. http://sv-comp.sosy-lab.org

  37. Problems Found in Linux Kernel Drivers. http://linux-testing.org/results/ldv

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to M. U. Mandrykin.

Additional information

Original Russian Text © M.U. Mandrykin, V.S. Mutilin, E.M. Novikov, A.V. Khoroshilov, P.E. Shved, 2012, published in Programmirovanie, 2012, Vol. 38, No. 5.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Mandrykin, M.U., Mutilin, V.S., Novikov, E.M. et al. Using linux device drivers for static verification tools benchmarking. Program Comput Soft 38, 245–256 (2012). https://doi.org/10.1134/S0361768812050039

Download citation

  • Received:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1134/S0361768812050039

Keywords

Navigation