Sound formal verification of linux's USB BP keyboard driver

  • Authors:
  • Willem Penninckx;Jan Tobias Mühlberg;Jan Smans;Bart Jacobs;Frank Piessens

  • Affiliations:
  • IBBT-DistriNet, KU Leuven, Leuven, Belgium;IBBT-DistriNet, KU Leuven, Leuven, Belgium;IBBT-DistriNet, KU Leuven, Leuven, Belgium;IBBT-DistriNet, KU Leuven, Leuven, Belgium;IBBT-DistriNet, KU Leuven, Leuven, Belgium

  • Venue:
  • NFM'12 Proceedings of the 4th international conference on NASA Formal Methods
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

Case studies on formal software verification can be divided into two categories: while (i) unsound approaches may miss errors or report false-positive alarms due to coarse abstractions, (ii) sound approaches typically do not handle certain programming constructs like concurrency and/or suffer from scalability issues. This paper presents a case study on successfully verifying the Linux USB BP keyboard driver. Our verification approach is (a) sound, (b) takes into account dynamic memory allocation, complex API rules and concurrency, and (c) is applied on a real kernel driver which was not written with verification in mind. We employ VeriFast, a software verifier based on separation logic. Besides showing that it is possible to verify this device driver, we identify the parts where the verification went smoothly and the parts where the verification approach requires further research to be carried out.