Proceedings of the Institute for System Programming of the RAS
RUS  ENG    JOURNALS   PEOPLE   ORGANISATIONS   CONFERENCES   SEMINARS   VIDEO LIBRARY   PACKAGE AMSBIB  
General information
Latest issue
Archive

Search papers
Search references

RSS
Latest issue
Current issues
Archive issues
What is RSS



Proceedings of ISP RAS:
Year:
Volume:
Issue:
Page:
Find






Personal entry:
Login:
Password:
Save password
Enter
Forgotten password?
Register


Proceedings of the Institute for System Programming of the RAS, 2018, Volume 30, Issue 6, Pages 143–160
DOI: https://doi.org/10.15514/ISPRAS-2018-30(6)-8
(Mi tisp381)
 

This article is cited in 2 scientific papers (total in 2 papers)

Static verification for memory safety of Linux kernel drivers

A. A. Vasilyev

Ivannikov Institute for System Programming of the Russian Academy of Sciences
Full-text PDF (939 kB) Citations (2)
References:
Abstract: Memory errors in Linux kernel drivers are a kind of serious bugs that can lead to dangerous consequences but such errors are hard to detect. This article describes static verification that aims at finding all errors under certain assumptions. Static verification of industrial projects such as the Linux kernel requires additional effort. Limitations of current tools for static verification disallow to analyze the Linux kernel as a whole, so we use a simplified automatically generated environment model. This model introduces inaccuracy, but provides ability for verification. In addition, we allow absent definitions for some functions which results in incomplete ANSI C programs. The current work proposes an approach to reveal issues with memory usage in such incomplete programs. Our static verification technique is based on Symbolic Memory Graphs (SMG) with extensions aiming to reduce a false alarm rate. We introduced an on-demand memory conception for simplification of kernel API models and implemented this conception in static verification tool CPAchecker. Also, we changed precision of a CPAchecker memory model from bytes to bits and supported structure alignment similar to the GCC compiler. We implemented the predicate extension for SMG to improve accuracy of the analysis. We verified of Linux kernel 4.11.6 and 4.16.10 with help of the Klever verification framework with CPAchecker as a verification engine. Manual analysis of warnings produced by Klever revealed 78 real bugs in drivers. We have made patches to fix 33 of them.
Keywords: shape analysis, static verification, symbolic memory graphs, memory model.
Funding agency Grant number
Russian Foundation for Basic Research 18-01-00426
The research was supported by RFBR grant 18-01-00426
Document Type: Article
Language: English
Citation: A. A. Vasilyev, “Static verification for memory safety of Linux kernel drivers”, Proceedings of ISP RAS, 30:6 (2018), 143–160
Citation in format AMSBIB
\Bibitem{Vas18}
\by A.~A.~Vasilyev
\paper Static verification for memory safety of Linux kernel drivers
\jour Proceedings of ISP RAS
\yr 2018
\vol 30
\issue 6
\pages 143--160
\mathnet{http://mi.mathnet.ru/tisp381}
\crossref{https://doi.org/10.15514/ISPRAS-2018-30(6)-8}
Linking options:
  • https://www.mathnet.ru/eng/tisp381
  • https://www.mathnet.ru/eng/tisp/v30/i6/p143
  • This publication is cited in the following 2 articles:
    Citing articles in Google Scholar: Russian citations, English citations
    Related articles in Google Scholar: Russian articles, English articles
    Proceedings of the Institute for System Programming of the RAS
     
      Contact us:
     Terms of Use  Registration to the website  Logotypes © Steklov Mathematical Institute RAS, 2025