PB173 - Ovladače jádra - Linux XIII. FW a OOPS Jiri Slabý ITI, Fakulta informatiky 17. 12. 2013 J. Slabý (ITI, Fl) PB173/02 17. 12. 2013 1 /8 Různé • Firmware • Analýza OOPS J. Slabý (ITI, Fl) Část I Firmware J. Slabý (ITI, Fl) PB173/02 17. 12. 2013 3/8 Firmware • Binární kód v zařízení • Nahrává jej (většinou) ovladač API • linux/firmware.h, struct firmware • request_firmware(const struct firmware **fw, const char *name, struct device *device) • f w - návratová hodnota • name - jméno souboru a release_firmware struct firmware { size.t size; const u8 *data; J. Slabý (ITI, Fl) PB173/02 17. 12. 2013 4/8 Úkol Nahrání firmware O Zkopírujte pbl73/13/fw/firmware_*.bin do /lib/firmware/ O Nahrajte firmware v ovladači • V závislosti na architektuře (např. makro config_64BIT) O Zkopírujte data do spustitelné paměti S __vmalloc + page_kernel_exec O V cyklu pro 0... 100 • Zavolejte 0. offset alokované paměti • Prototyp:unsigned int (*)(unsigned int) o Vypište návratovou hodnotu O Zjistěte, co firmware dělá J. Slabý (ITI, Fl) PB173/02 17. 12. 2013 5/8 Firmware v ASM $ objdump -D -b binary -m i386 -M x86-64 firmware_64.bin 0 31 c0 xor %eax,%eax ; eax — retval 2 83 ff Od cmp $0xd,%edi ; edi — param 0 5 77 14 ja 0x1 b 7 83 ff 01 cmp $0x1 ,%edi a b0 01 mov $0x1 ,%al c 76 Od jbe 0x1 b e 66 90 xchg %ax,%ax ; nop 10 Of af c7 imul %edi,%eax 13 83 ef 01 sub $0x1 ,%edi 16 83 ff 01 cmp $0x1 ,%edi 19 75 f5 jne 0x10 1b f3 c3 repz retq ; "return eax" J. Slaby (ITI, Fl) PB173/02 17. 12. 2013 6/8 Část II Analýza OOPS J. Slabý (ITI, Fl) PB173/02 17. 12. 2013 7/8 Společný úkol Analýza pádů O Modul Vpbl73/13/oops/ J. Slabý (ITI, Fl)