Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| summerofcode2014:intelsmapandkernelpatching [2014/08/14 20:38] – OliverPinter | summerofcode2014:intelsmapandkernelpatching [2017/09/18 13:59] (current) – Use local wiki LinkNames (remove absolute wiki urls) KubilayKocak | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Implement Intel SMAP and kernel patching framework ====== | ====== Implement Intel SMAP and kernel patching framework ====== | ||
| - | * Student: [[/ | + | * Student: [[/ |
| - | * Mentor: [[/ | + | * Mentor: [[/ |
| ===== Project description ===== | ===== Project description ===== | ||
| Line 69: | Line 69: | ||
| https:// | https:// | ||
| + | |||
| + | http:// | ||
| ===== Useful links ===== | ===== Useful links ===== | ||
| Line 356: | Line 358: | ||
| | 20140801 | http:// | | 20140801 | http:// | ||
| | 20140808 | http:// | | 20140808 | http:// | ||
| - | | 20140815 | | | + | | 20140815 | http:// |
| ====== test results and memos ====== | ====== test results and memos ====== | ||
| Line 364: | Line 366: | ||
| ==== 1.3 ==== | ==== 1.3 ==== | ||
| - | * fast test: | + | [[SummerOfCode2014/IntelSMAPandKernelPatching/Notes]] |
| - | + | ||
| - | < | + | |
| - | op@pandora-d tools> ./ | + | |
| - | Triple fault | + | |
| - | CPU Reset (CPU 0) | + | |
| - | RAX=00000000f000ff00 RBX=0000000000000001 RCX=0000000000000000 RDX=ffffffff80d0daa0 | + | |
| - | RSI=ffffffff800c4790 RDI=ffffffff80044100 RBP=ffffffff800440f0 RSP=ffffffff80043ef0 | + | |
| - | R8 =ffffffff80d0db80 R9 =0000000000000000 R10=0000000000000020 R11=0000000000000000 | + | |
| - | R12=ffffffff818bc8c8 R13=ffffffff8093beb0 R14=ffffffff80044100 R15=ffffffff818bcd90 | + | |
| - | RIP=ffffffff80d0d94f RFL=00000297 | + | |
| - | ES =0028 0000000000000000 ffffffff 00af9300 DPL=0 DS [-WA] | + | |
| - | CS =0020 0000000000000000 ffffffff 00af9b00 DPL=0 CS64 [-RA] | + | |
| - | SS =0028 0000000000000000 ffffffff 00af9300 DPL=0 DS | + | |
| - | DS =0028 0000000000000000 ffffffff 00af9300 DPL=0 DS | + | |
| - | FS =0028 0000000000000000 ffffffff 00af9300 DPL=0 DS | + | |
| - | GS =0028 ffffffff818d7d80 ffffffff 00af9300 DPL=0 DS | + | |
| - | LDT=0000 0000000000000000 0000ffff 00008200 DPL=0 LDT | + | |
| - | TR =0038 0000000000005f98 00002067 00008900 DPL=0 TSS64-avl | + | |
| - | GDT= | + | |
| - | IDT= | + | |
| - | CR0=80000011 CR2=0000000000005fbc CR3=0000000000044000 CR4=00000030 | + | |
| - | DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 | + | |
| - | DR6=00000000ffff0ff0 DR7=0000000000000400 | + | |
| - | CCS=0000000000000013 CCD=ffffffffffffffee CCO=SUBL | + | |
| - | EFER=0000000000000500 | + | |
| - | FCW=037f FSW=0000 [ST=0] FTW=00 MXCSR=00001f80 | + | |
| - | FPR0=0000000000000000 0000 FPR1=0000000000000000 0000 | + | |
| - | FPR2=0000000000000000 0000 FPR3=0000000000000000 0000 | + | |
| - | FPR4=0000000000000000 0000 FPR5=0000000000000000 0000 | + | |
| - | FPR6=0000000000000000 0000 FPR7=0000000000000000 0000 | + | |
| - | XMM00=00000000000000000000000000000000 XMM01=00000000000000000000000000000000 | + | |
| - | XMM02=00000000000000000000000000000000 XMM03=00000000000000000000000000000000 | + | |
| - | XMM04=00000000000000000000000000000000 XMM05=00000000000000000000000000000000 | + | |
| - | XMM06=00000000000000000000000000000000 XMM07=00000000000000000000000000000000 | + | |
| - | XMM08=00000000000000000000000000000000 XMM09=00000000000000000000000000000000 | + | |
| - | XMM10=00000000000000000000000000000000 XMM11=00000000000000000000000000000000 | + | |
| - | XMM12=00000000000000000000000000000000 XMM13=00000000000000000000000000000000 | + | |
| - | XMM14=00000000000000000000000000000000 XMM15=00000000000000000000000000000000 | + | |
| - | CPU Reset (CPU 0) | + | |
| - | EAX=00000032 EBX=00000000 ECX=00000000 EDX=00000097 | + | |
| - | ESI=0000000a EDI=00100000 EBP=00000000 ESP=00000fb8 | + | |
| - | EIP=000f13d3 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 | + | |
| - | ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS | + | |
| - | CS =0008 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA] | + | |
| - | SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS | + | |
| - | DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS | + | |
| - | FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS | + | |
| - | GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS | + | |
| - | LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT | + | |
| - | TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy | + | |
| - | GDT= | + | |
| - | IDT= | + | |
| - | CR0=60000011 CR2=00000000 CR3=00000000 CR4=00000000 | + | |
| - | DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 | + | |
| - | DR6=00000000ffff0ff0 DR7=0000000000000400 | + | |
| - | CCS=00000000 CCD=00000001 CCO=LOGICL | + | |
| - | EFER=0000000000000000 | + | |
| - | FCW=037f FSW=0000 [ST=0] FTW=00 MXCSR=00001f80 | + | |
| - | FPR0=0000000000000000 0000 FPR1=0000000000000000 0000 | + | |
| - | FPR2=0000000000000000 0000 FPR3=0000000000000000 0000 | + | |
| - | FPR4=0000000000000000 0000 FPR5=0000000000000000 0000 | + | |
| - | FPR6=0000000000000000 0000 FPR7=0000000000000000 0000 | + | |
| - | XMM00=00000000000000000000000000000000 XMM01=00000000000000000000000000000000 | + | |
| - | XMM02=00000000000000000000000000000000 XMM03=00000000000000000000000000000000 | + | |
| - | XMM04=00000000000000000000000000000000 XMM05=00000000000000000000000000000000 | + | |
| - | XMM06=00000000000000000000000000000000 XMM07=00000000000000000000000000000000 | + | |
| - | </code> | + | |
| - | + | ||
| - | < | + | |
| - | op@pandora-d opBSD.git> | + | |
| - | / | + | |
| - | </ | + | |
| - | + | ||
| - | * http:// | + | |
| - | * there is the error | + | |
| - | + | ||
| - | < | + | |
| - | + | ||
| - | Breakpoint 2, getenv_string (name=0xffffffff80f922df " | + | |
| - | size=258) at / | + | |
| - | 455 if (dynamic_kenv) { | + | |
| - | (gdb) c | + | |
| - | Continuing. | + | |
| - | + | ||
| - | Breakpoint 2, getenv_string (name=0xffffffff80f922ef " | + | |
| - | size=258) at / | + | |
| - | 455 if (dynamic_kenv) { | + | |
| - | (gdb) c | + | |
| - | Continuing. | + | |
| - | + | ||
| - | Breakpoint 2, getenv_string (name=0xffffffff80f922fc " | + | |
| - | size=258) at / | + | |
| - | 455 if (dynamic_kenv) { | + | |
| - | (gdb) c | + | |
| - | Continuing. | + | |
| - | + | ||
| - | Breakpoint 2, getenv_string (name=0xffffffff80f92309 " | + | |
| - | size=258) at / | + | |
| - | 455 if (dynamic_kenv) { | + | |
| - | (gdb) c | + | |
| - | Continuing. | + | |
| - | + | ||
| - | Breakpoint 2, getenv_string (name=0xffffffff80f92316 " | + | |
| - | size=258) at / | + | |
| - | 455 if (dynamic_kenv) { | + | |
| - | (gdb) c | + | |
| - | Continuing. | + | |
| - | + | ||
| - | Breakpoint 2, getenv_string (name=0xffffffff80f92323 " | + | |
| - | size=258) at / | + | |
| - | 455 if (dynamic_kenv) { | + | |
| - | (gdb) c | + | |
| - | Continuing. | + | |
| - | + | ||
| - | Breakpoint 2, getenv_string (name=0xffffffff80f92330 " | + | |
| - | size=258) at / | + | |
| - | 455 if (dynamic_kenv) { | + | |
| - | (gdb) c | + | |
| - | Continuing. | + | |
| - | + | ||
| - | Breakpoint 2, getenv_string (name=0xffffffff80f9233e " | + | |
| - | size=258) at / | + | |
| - | 455 if (dynamic_kenv) { | + | |
| - | (gdb) c | + | |
| - | Continuing. | + | |
| - | + | ||
| - | Breakpoint 2, getenv_string (name=0xffffffff80f9234b " | + | |
| - | size=258) at / | + | |
| - | 455 if (dynamic_kenv) { | + | |
| - | (gdb) c | + | |
| - | Continuing. | + | |
| - | + | ||
| - | Breakpoint 2, getenv_string (name=0xffffffff80f92358 " | + | |
| - | data=0xffffffff814c8cd0 "", | + | |
| - | at / | + | |
| - | 455 if (dynamic_kenv) { | + | |
| - | (gdb) c | + | |
| - | Continuing. | + | |
| - | + | ||
| - | triple fault itt: | + | |
| - | + | ||
| - | hammer_time (modulep=< | + | |
| - | at / | + | |
| - | 1898 PCPU_SET(prvspace, | + | |
| - | (gdb) | + | |
| - | 1899 PCPU_SET(curthread, | + | |
| - | (gdb) | + | |
| - | 1900 PCPU_SET(tssp, | + | |
| - | (gdb) | + | |
| - | 1901 PCPU_SET(commontssp, | + | |
| - | (gdb) | + | |
| - | 1902 PCPU_SET(tss, | + | |
| - | (gdb) | + | |
| - | 1903 PCPU_SET(ldt, | + | |
| - | (gdb) | + | |
| - | 1904 PCPU_SET(fs32p, | + | |
| - | (gdb) | + | |
| - | 1905 PCPU_SET(gs32p, | + | |
| - | (gdb) | + | |
| - | 1915 mutex_init(); | + | |
| - | (gdb) | + | |
| - | mutex_init () at / | + | |
| - | 952 | + | |
| - | (gdb) | + | |
| - | init_turnstiles () at / | + | |
| - | 364 | + | |
| - | (gdb) | + | |
| - | 365 | + | |
| - | (gdb) | + | |
| - | _mtx_init (c=0xffffffff8155d160, | + | |
| - | at / | + | |
| - | 871 m = mtxlock2mtx(c); | + | |
| - | (gdb) | + | |
| - | 875 | + | |
| - | (gdb) | + | |
| - | 885 if (opts & MTX_SPIN) | + | |
| - | (gdb) | + | |
| - | 892 if (opts & MTX_RECURSE) | + | |
| - | (gdb) | + | |
| - | 894 if ((opts & MTX_NOWITNESS) == 0) | + | |
| - | (gdb) | + | |
| - | 896 if (opts & MTX_DUPOK) | + | |
| - | (gdb) | + | |
| - | 898 if (opts & MTX_NOPROFILE) | + | |
| - | (gdb) | + | |
| - | 902 | + | |
| - | (gdb) | + | |
| - | lock_init (lock=0xffffffff8155d148, | + | |
| - | name=0xffffffff80f94b80 " | + | |
| - | at / | + | |
| - | 78 KASSERT(!lock_initialized(lock), | + | |
| - | (gdb) | + | |
| - | 83 if (lock_classes[i] == class) { | + | |
| - | (gdb) | + | |
| - | 84 lock-> | + | |
| - | (gdb) | + | |
| - | 90 lock-> | + | |
| - | (gdb) | + | |
| - | 91 lock-> | + | |
| - | (gdb) | + | |
| - | 93 WITNESS_INIT(lock, | + | |
| - | (gdb) | + | |
| - | witness_init (lock=0xffffffff8155d148, | + | |
| - | at / | + | |
| - | 809 class = LOCK_CLASS(lock); | + | |
| - | + | ||
| - | ITT A HIBA: | + | |
| - | + | ||
| - | 0xffffffff809500f0 < | + | |
| - | 0xffffffff809500f1 < | + | |
| - | 0xffffffff809500f4 < | + | |
| - | 0xffffffff809500f6 < | + | |
| - | 0xffffffff809500f8 < | + | |
| - | 0xffffffff809500f9 < | + | |
| - | 0xffffffff809500fa < | + | |
| - | 0xffffffff809500fd < | + | |
| - | 0xffffffff80950100 < | + | |
| - | 0xffffffff80950103 < | + | |
| - | >>> | + | |
| - | 0xffffffff80950109 < | + | |
| - | >>> | + | |
| - | 0xffffffff8095010c < | + | |
| - | 0xffffffff80950110 < | + | |
| - | 0xffffffff80950112 < | + | |
| - | 0xffffffff80950113 < | + | |
| - | 0xffffffff8095011e < | + | |
| - | 0xffffffff80950121 < | + | |
| - | 0xffffffff80950123 < | + | |
| - | 0xffffffff80950126 < | + | |
| - | 0xffffffff80950129 < | + | |
| - | 0xffffffff80950130 < | + | |
| - | + | ||
| - | ffffffff809500f0 < | + | |
| - | ffffffff809500f0: | + | |
| - | ffffffff809500f1: | + | |
| - | ffffffff809500f4: | + | |
| - | ffffffff809500f6: | + | |
| - | ffffffff809500f8: | + | |
| - | ffffffff809500f9: | + | |
| - | ffffffff809500fa: | + | |
| - | ffffffff809500fd: | + | |
| - | ffffffff80950100: | + | |
| - | ffffffff80950103: | + | |
| - | ffffffff80950108: | + | |
| - | ffffffff80950109: | + | |
| - | ffffffff8095010b: | + | |
| - | ffffffff8095010c: | + | |
| - | ffffffff80950110: | + | |
| - | </ | + | |
| - | + | ||
| - | < | + | |
| - | (kgdb) info break | + | |
| - | Num Type Disp Enb Address | + | |
| - | 5 | + | |
| - | 6 | + | |
| - | at / | + | |
| - | 7 | + | |
| - | at / | + | |
| - | breakpoint already hit 2 times | + | |
| - | 8 | + | |
| - | at / | + | |
| - | (kgdb) b cnremove | + | |
| - | Breakpoint 9 at 0xffffffff808b1a40: | + | |
| - | (kgdb) c | + | |
| - | Continuing. | + | |
| - | + | ||
| - | Breakpoint 7, cninit () at / | + | |
| - | 109 { | + | |
| - | (kgdb) c | + | |
| - | Continuing. | + | |
| - | + | ||
| - | Breakpoint 9, cnremove (cn=0xffffffff814048d8) | + | |
| - | at / | + | |
| - | 200 { | + | |
| - | (kgdb) bt | + | |
| - | #0 cnremove (cn=0xffffffff814048d8) at / | + | |
| - | #1 0xffffffff808b191b in cninit () at / | + | |
| - | #2 0xffffffff80cf0196 in hammer_time (modulep=< | + | |
| - | at / | + | |
| - | #3 0xffffffff802da024 in btext () at / | + | |
| - | #4 0x0000000000000000 in ?? () | + | |
| - | (kgdb) c | + | |
| - | Continuing. | + | |
| - | + | ||
| - | Breakpoint 7, cninit () at / | + | |
| - | 109 { | + | |
| - | (kgdb) c | + | |
| - | Continuing. | + | |
| - | + | ||
| - | Breakpoint 9, cnremove (cn=0xffffffff814048d8) | + | |
| - | at / | + | |
| - | 200 { | + | |
| - | (kgdb) s | + | |
| - | 204 | + | |
| - | (kgdb) | + | |
| - | 229 } | + | |
| - | (kgdb) | + | |
| - | cninit () at / | + | |
| - | 131 if (cn-> | + | |
| - | (kgdb) | + | |
| - | 133 | + | |
| - | (kgdb) | + | |
| - | sc_cnprobe (cp=0xffffffff814048d8) | + | |
| - | at / | + | |
| - | 1592 if (getenv(" | + | |
| - | (kgdb) ni | + | |
| - | 0xffffffff80734925 | + | |
| - | (kgdb) | + | |
| - | 0xffffffff8073492a | + | |
| - | (kgdb) | + | |
| - | 0xffffffff8073492d | + | |
| - | (kgdb) | + | |
| - | 0xffffffff80734937 | + | |
| - | (kgdb) | + | |
| - | 0xffffffff8073493b | + | |
| - | (kgdb) | + | |
| - | 1597 cp-> | + | |
| - | (kgdb) | + | |
| - | </ | + | |
| - | + | ||
| - | triple fault on 1597 cp-> | + | |
| - | **this error caused by compiler error, and occurred when in / | + | |
| ====== commits ====== | ====== commits ====== | ||