PB173 - Ovladače jádra - Linux x. b. Jiří Slabý ITI, Fakulta Informatiky 30. 11. 2010 J. Slabý (ITI) PB173/01 30. 11. 2010 1 /1 Systematické testování Hledání chyb • Online • Testování jádra • Offline • Statická kontrola • Model-checking J. Slabý (ITI) PB173/01 30.11.2010 2/1 Testování jádra Online (jádro musí běžet) « Automatické testy • Kompilace různých konfigurací jádra o Bootování systému o http://kisskb.ellerman.id.au/kisskb/branch/9/ • Unit-testy • Linux Test Project (LTP) o Pomocí systémových volání se zkouší co nejvíce cest v ovladači • Všechny ioctl s různými argumenty • Nesprávné čtení přes read atp. • Domácí úkol J. Slabý (ITI) PB173/01 30. 11. 2010 3/1 Statická analýza I. Jednoduchá analýza toku - offline (stačí kód) • Relativně rychlá, mnoho falešných hlásení (FP) • Existují (drahé $) nástroje s minimem FP • Mnoho nástrojů • Sparse, Smatch, Coverity, Stanse (ITI) lock () ; if (x) return ; unlock () ; Zdroj 1: lock 2: id Sfalse + i: returnStatement 4: unlock cfg Automat Tabulka: Postup základní statické analýzy ♦ Chyby J. Slabý (ITI) PB173/01 30. 11. 2010 4/1 Úkol Použití Sparse na pb173/10 O make C=2 0 Opravit nahlášené chyby 30. 11. 2010 5/1 Statická analýza II. Symbolická exekuce - offline • Pomalejší (někdy výrazně), minimum FP • Jen pár nástrojů • Klee (kontroloval vybrané souborové systémy) {ipAb = 0) V a /= b; _^ %0 = sdiv %a, %b , , , , n\ return a; ret %0 + A D ^ 0) 6 = 0? Zdroj Low-level kód Řešení podmínky Chyby cesty Tabulka: Postup rozšířené statické analýzy J. Slabý (ITI) PB173/01 30. 11. 2010 6/1 Model-checking Offline • Matematicky se dokazuje, co může nastat a co ne • Trpí explozí cest • Jen pár nástrojů • Spin a Vstup: model chování, kód • Výstup: za jakých podmínek je model splněn J. Slabý (ITI) PB173/01 30. 11. 2010 7/1 Další témata • S/G DMA, MSI či jiné HW chuťovky • Nemáme HW, pouze teoreticky • Základy HW (paging, KBD, VGA/VESA, PIC, TIMER, PCI BIOS) • Spustit qemu bez OS a pracovat s (emulovaným) HW • Opravdové ladění chyb • Odladit kód s úmyslně přidanými chybami • K dispozici bude Oops • Síťovky (network stack) • Vyrobit virtuální síťovku • Opakování jakéhokoliv tématu ze cvičení o Např. víc do hloubky • Práce s GITem • Perf J. Slabý (ITI) PB173/01 30. 11. 2010 8/1