05.09.2015 How to Cook an Automated System for Linux Driver Verification Oleg Strikov Vadim Mutilin.

Slides:



Advertisements
Similar presentations
Static Analysis for Security
Advertisements

1 Peripheral Component Interconnect (PCI). 2 PCI based System.
CSI 400/500 Operating Systems Spring 2009 Lecture #14 – Device Management and Drivers Monday, March 23 rd, 2009.
Write Blocking CSC 485/585.
Copyright © 2014 EMC Corporation. All Rights Reserved. Linux Host Installation and Integration for Block Upon completion of this module, you should be.
Lecture 16 Buffer Overflow modified from slides of Lawrie Brown.
SLC/Ver1.0/OS CONCEPTS/Oct'991INTRODUCTION What is an Operating System? Operating Structure -System Components -OS Services -System Calls & Programs -System.
Introducing BLAST Software Verification John Gallagher CS4117.
Thomas Ball, Rupak Majumdar, Todd Millstein, Sriram K. Rajamani Presented by Yifan Li November 22nd In PLDI 01: Programming Language.
Department of Software Engineering Faculty of Mathematics and Physics CHARLES UNIVERSITY IN PRAGUE Czech Republic Extracting Zing Models from C Source.
Testing and Analysis of Device Drivers Supervisor: Abhik Roychoudhury Author: Pham Van Thuan 1.
1 Recap (RAID and Storage Architectures). 2 RAID To increase the availability and the performance (bandwidth) of a storage system, instead of a single.
Operating Systems Input/Output Devices (Ch , 12.7; , 13.7)
Intro Test 2 – Chapters 3,4 & Word Sample Questions SPRING 2005.
Chapter 22 All About SCSI.
Type-Safe Programming in C George Necula EECS Department University of California, Berkeley.
Predicate Abstraction for Software and Hardware Verification Himanshu Jain Model checking seminar April 22, 2005.
Lesson 12 – NETWORK SERVERS Distinguish between servers and workstations. Choose servers for Windows NT and Netware. Maintain and troubleshoot servers.
Temporal-Safety Proofs for Systems Code Thomas A. Henzinger Ranjit Jhala Rupak Majumdar George Necula Westley Weimer Grégoire Sutre UC Berkeley.
Guide To UNIX Using Linux Third Edition
1 I/O Management in Representative Operating Systems.
Operating Systems Input/Output Devices (Ch 5: )
5/24/011 Advanced Tool Integration for Embedded Systems Assurance Insup Lee Department of Computer and Information Science University of Pennsylvania.
Storage Networking Technologies and Virtualization Section 2 DAS and Introduction to SCSI1.
Copyright Arshi Khan1 System Programming Instructor Arshi Khan.
Systems Software Operating Systems.
System Software Operating System Boot Process Files Misc.
I/O Tanenbaum, ch. 5 p. 329 – 427 Silberschatz, ch. 13 p
Emulation as Test Infrastructure Dan Voss, Varolii Corp. SASQAG May 15, 2008.
Chapter 8 All About SCSI.
PC Maintenance: Preparing for A+ Certification
CSC2108 Lazy Abstraction on Software Model Checking Wai Sum Mong.
Module 9 Review Questions 1. The ability for a system to continue when a hardware failure occurs is A. Failure tolerance B. Hardware tolerance C. Fault.
A+ Guide to Managing and Maintaining Your PC Fifth Edition Chapter 22 All About SCSI.
Chapter 2 Chapter 2: Planning for Server Hardware.
Towards Scalable Modular Checking of User-defined Properties Thomas Ball, MSR Brian Hackett, Mozilla Shuvendu Lahiri, MSR Shaz Qadeer, MSR Julien Vanegue,
Disk Access. DISK STRUCTURE Sector: Smallest unit of data transfer from/to disk; 512B 2/4/8 adjacent sectors transferred together: Blocks Read/write heads.
Using Model-Checking to Debug Device Firmware Sanjeev Kumar Microprocessor Research Labs, Intel Kai Li Princeton University.
1 CS503: Operating Systems Spring 2014 Dongyan Xu Department of Computer Science Purdue University.
Windows Operating System Internals - by David A. Solomon and Mark E. Russinovich with Andreas Polze Unit OS6: Device Management 6.1. Principles of I/O.
Introduction to Java CSIS 3701: Advanced Object Oriented Programming.
Chapter 3.5 Memory and I/O Systems. 2 Memory Management Memory problems are one of the leading causes of bugs in programs (60-80%) MUCH worse in languages.
1 Selecting LAN server (Week 3, Monday 9/8/2003) © Abdou Illia, Fall 2003.
Lazy Abstraction Jinseong Jeon ARCS, KAIST CS750b, KAIST2/26 References Lazy Abstraction –Thomas A. Henzinger et al., POPL ’02 Software verification.
C# Language Panithan Chandrapatya Agenda C# History C# Goals C# Fixes C# Contribution C# Features C# Success C# Example.
2003 Dominic Swayne1 Microsoft Disk Operating System and PC DOS CS-550-1: Operating Systems Fall 2003 Dominic Swayne.
Instrumentation in Software Dynamic Translators for Self-Managed Systems Bruce R. Childers Naveen Kumar, Jonathan Misurda and Mary.
Writing Systems Software in a Functional Language An Experience Report Iavor Diatchki, Thomas Hallgren, Mark Jones, Rebekah Leslie, Andrew Tolmach.
Getting to Know Your Computer Your File System Applications What’s running on your machine Its own devices Networking.
Safe to the Last Instruction: Automated Verification of a Type-Safe Operating System Jean Yang MIT CSAIL Chris Hawblitzel Microsoft Research.
DEVICES AND COMMUNICATION BUSES FOR DEVICES NETWORK– PARALLEL BUS DEVICE PROTOCOLS 1.
Computer Software Types Three layers of software Operation.
Mantid Stakeholder Review Nick Draper 01/11/2007.
 The End to the Means › (According to IBM ) › 03.ibm.com/innovation/us/thesmartercity/in dex_flash.html?cmp=blank&cm=v&csr=chap ter_edu&cr=youtube&ct=usbrv111&cn=agus.
RAID and RAS CIS 485 SAU SUJA SOLOMON TIFFANY STACIE.
A+ Guide to Managing and Maintaining Your PC Fifth Edition Chapter 22 All About SCSI.
Parallel IO for Cluster Computing Tran, Van Hoai.
Storage Networking. Storage Trends Storage grows %/year, gets more complicated It’s necessary to pool storage for flexibility Intelligent storage.
Software Systems Division (TEC-SW) ASSERT process & toolchain Maxime Perrotin, ESA.
Operating systems depend on device drivers to communicate with attached hardware. A device driver is a collection of subroutines written in a low-level.
Chapter 13: I/O Systems Modified by Dr. Neerja Mhaskar for CS 3SH3.
Storage Networking.
THE OPERATION SYSTEM The need for an operating system
The PCI bus (Peripheral Component Interconnect ) is the most commonly used peripheral bus on desktops and bigger computers. higher-level bus architectures.
Storage Networking.
Chapter Overview CD-ROM and DVD Drives Advanced Hard Disk Drives
Today’s agenda Hardware architecture and runtime system
An explicit state model checker
BLAST: A Software Verification Tool for C programs
Presentation transcript:

How to Cook an Automated System for Linux Driver Verification Oleg Strikov Vadim Mutilin

Oleg A. Strikov Vadim S. Mutilin 2 / Guinea-pig DAC960PD-Ultra a high performance three-channel Ultra SCSI disk array controller that uses Intel's i bit microprocessor supports disk arrays for RAID levels 0, 1, 5, 0+1, and 5+0 permits data transfer rates across the PCI bus at 132MB/sec supports Fast-20 data transfer rates of 40MB/sec. per channel up to 45 drives can be attached to the RAID controller supports the Global Array Manager full device driver support for UNIX, Windows, OS/2, NetWare and other operating systems DAC960

Oleg A. Strikov Vadim S. Mutilin 3 / Confusing Linux Driver Code Controller->V1.DualModeMemoryMailboxInterface = false; true VERIFICATION NEEDED

Oleg A. Strikov Vadim S. Mutilin 4 / Manuscript

Oleg A. Strikov Vadim S. Mutilin 5 / Mixing Up BLAST DRIVER SOURCE VERIFICATION MODELS INSTRUMENTATION TOOL

Oleg A. Strikov Vadim S. Mutilin 6 / BLAST??? Berkeley Lazy Abstraction Software Verification Tool BLAST is a software model checker for C programs. It uses counterexample-driven automatic abstraction refinement to construct an abstract model which is model checked for safety properties.

Oleg A. Strikov Vadim S. Mutilin 7 / Real World Example /drivers/block/DAC960.c No explicit calls to linking-level init procedures (not BLAST acceptable) Callback interface procedures registration (not BLAST acceptable also) module_init(DAC960_init_module); module_exit(DAC960_cleanup_module); ret = pci_register_driver(&DAC960_pci_driver) Extra preprocessing tools should be coded

Oleg A. Strikov Vadim S. Mutilin 8 / Conceptual Hack Toolkit Bash scripting magic STATUS: DOUBLE DUTCH STATUS: BLAST ACCEPTABLE

Oleg A. Strikov Vadim S. Mutilin 9 / BLAST SHAMANIC RITUAL RULE ID0029. CANNOT CALL ALLOC() BEFORE CREATE() Error found! System is unsafe :-(

Oleg A. Strikov Vadim S. Mutilin 10 / HOW IT WORKS NATURAL LANGUAGE RULE FORMAL LANGUAGE RULE ID 0029: Memory regions cannot be allocated from non-existent predecessor pool TARGET: Prevent potential system crash, connected with incorrect pool subsystem function set usage: dma_pool_alloc() cannot be called before successful creation of pool with dma_pool_create().

Oleg A. Strikov Vadim S. Mutilin 11 / RESULTS (in progress…) 55 COLLECTED  24 beyond the scope of BLAST 15 has been formalized CURRENT TARGETS SUBSYSTEMS  /usr/src/linux/net & /usr/src/linux/drivers/net  /usr/src/linux/block & /usr/src/linux/drivers/block  /usr/src/linux/drivers/char

Oleg A. Strikov Vadim S. Mutilin 12 / CONTACTS OLEG A. STRIKOV VADIM S. MUTILIN