Skip to main content

Establishing Linux Driver Verification Process

  • Conference paper
Perspectives of Systems Informatics (PSI 2009)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 5947))

Abstract

This paper presents an initiative program aimed at enhancing Linux device driver designing and maintenance by launching a long-term process that will attend the OS kernel development. This process includes two adjacent lines of activity: 1) creation and replenishment of a repository of potential faults and errors that may occur in Linux device drivers, and 2) development and improvement of special-purpose verification tools for automatic detection of all errors specified in repository. We describe in some details both lines of activity, present an architecture of a perspective verification toolset, compare our project with similar work, and finally discuss the current state of art in Linux device driver verification.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Gillen, A., Stergiades, E., Waldman, B.: The role of Linux servers and commercial workloads (2008), http://www.linux-foundation.org/publications/IDC_Workloads.pdf

  2. Chou, A., Yang, J., Chelf, B., Hallem, S., Engler, D.: An empirical study of operating systems errors. In: SOSP 2001: Proceedings of the eighteenth ACM symposium on Operating systems principles, pp. 73–88. ACM, New York (2001)

    Chapter  Google Scholar 

  3. Swift, M.M., Bershad, B.N., Levy, H.M.: Improving the reliability of commodity operating systems. In: SOSP 2003: Proceedings of the nineteenth ACM symposium on Operating systems principles, pp. 207–222. ACM, New York (2003)

    Chapter  Google Scholar 

  4. Senyard, A., Michlmayr, M.: How to have a successful free software project. In: 11th Asia-Pacific Software Engineering Conference, pp. 84–91 (2004)

    Google Scholar 

  5. Kroah-Hartman, G., Corbet, J., McPherson, A.: Linux kernel development (2008), http://www.linux-foundation.org/publications/linuxkerneldevelopment.php

  6. Kroah-Hartman, G.: The Linux kernel driver interface, http://www.kernel.org/doc/Documentation/stable_api_nonsense.txt

  7. Raymond, E.S.: The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary. O’Reilly, Sebastopol (2001)

    Google Scholar 

  8. Glass, R.L.: Facts and Fallacies of Software Engineering, 1st edn. Addison Wesley Professional, Sebastopol (2003)

    Google Scholar 

  9. Web-site: Linux Verification Center, http://linuxtesting.ru

  10. LKML: Message 41536, http://www.mail-archive.com/git-commits-head@vger.kernel.org/msg41536.html

    Google Scholar 

  11. Ball, T., Rajamani, S.K.: SLIC: A specification language for interface checking. Technical report, Microsoft Research (2001)

    Google Scholar 

  12. Post, H., Küchlin, W.: Integrated static analysis for Linux device driver verification. In: Davies, J., Gibbons, J. (eds.) IFM 2007. LNCS, vol. 4591, pp. 518–537. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  13. Henzinger, T.A., Jhala, R., Majumdar, R., McMillan, K.L.: Abstractions from proofs. SIGPLAN Not. 39(1), 232–244 (2004)

    Article  Google Scholar 

  14. Henzinger, T.A., Jhala, R., Majumdar, R.: Lazy abstraction. In: Symposium on Principles of Programming Languages, pp. 58–70. ACM Press, New York (2002)

    Google Scholar 

  15. Ball, T., Bounimova, E., Cook, B., Levin, V., Lichtenberg, J., McGarvey, C., Ondrusek, B., Rajamani, S.K., Ustuner, A.: Thorough static analysis of device drivers. SIGOPS Oper. Syst. Rev. 40(4), 73–85 (2006)

    Article  Google Scholar 

  16. Ball, T., Cook, B., Levin, V., Rajamani, S.K.: SLAM and Static Driver Verifier: technology transfer of formal methods inside Microsoft. Technical report, Microsoft Research (2004)

    Google Scholar 

  17. Breuer, P., Pickin, S.: Open source certification. FLOSS-FM (2008)

    Google Scholar 

  18. Ball, T., Majumdar, R., Millstein, T., Rajamani, S.K.: Automatic predicate abstraction of C programs. SIGPLAN Not. 36(5), 203–213 (2001)

    Article  Google Scholar 

  19. Henzinger, T.A., Jhala, R., Majumdar, R., Necula, G.C., Sutre, G., Weimer, W.: Temporal-safety proofs for systems code. In: Brinksma, E., Larsen, K.G. (eds.) CAV 2002. LNCS, vol. 2404, pp. 526–538. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  20. Beyer, D., Henzinger, T.A., Jhala, R., Majumdar, R.: The software model checker Blast: Applications to software engineering. Int. J. Softw. Tools Technol. Transf. 9(5), 505–525 (2007)

    Article  Google Scholar 

  21. Beyer, D., Henzinger, T.A., Jhala, R., Majumdar, R.: Checking memory safety with blast. In: Cerioli, M. (ed.) FASE 2005. LNCS, vol. 3442, pp. 2–18. Springer, Heidelberg (2005)

    Google Scholar 

  22. Mühlberg, J.T., Lüttgen, G.: Blasting Linux code. In: Brim, L., Haverkort, B.R., Leucker, M., van de Pol, J. (eds.) FMICS 2006 and PDMC 2006. LNCS, vol. 4346, pp. 211–226. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  23. Clarke, E., Kroening, D., Lerda, F.: A tool for checking ANSI-C programs. In: Jensen, K., Podelski, A. (eds.) TACAS 2004. LNCS, vol. 2988, pp. 168–176. Springer, Heidelberg (2004)

    Google Scholar 

  24. Witkowski, T., Blanc, N., Kroening, D., Weissenbacher, G.: Model checking concurrent Linux device drivers. In: ASE 2007: Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering, pp. 501–504. ACM, New York (2007)

    Chapter  Google Scholar 

  25. Witkowski, T.: Formal verification of Linux device drivers. Master’s thesis, Dresden University of Technology (2007)

    Google Scholar 

  26. Breuer, P., Pickin, S.: Verification in the light and large: Large-scale verification for fast-moving open source C projects. In: Software Engineering Workshop, Annual IEEE/NASA Goddard, pp. 246–255 (2007)

    Google Scholar 

  27. Kim, M., Hong, S., Hong, C., Kim, T.: Model-based kernel tesiting for concurrency bugs through counter example replay. In: Fifth Workshop on Model-Based Testing (2009)

    Google Scholar 

  28. Coverity: Linux report (2004), http://scan.coverity.com

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2010 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Khoroshilov, A., Mutilin, V., Petrenko, A., Zakharov, V. (2010). Establishing Linux Driver Verification Process. In: Pnueli, A., Virbitskaite, I., Voronkov, A. (eds) Perspectives of Systems Informatics. PSI 2009. Lecture Notes in Computer Science, vol 5947. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-11486-1_14

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-11486-1_14

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-11485-4

  • Online ISBN: 978-3-642-11486-1

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics