|
3#
樓主 |
發表於 2009-5-8 18:09:19
|
只看該作者
剛剛似乎試出來一些成果, M- m& L7 p% Y* A( ^' _
方法就是在上一篇的基礎上
, U4 s& T* ~, m- j/ Y" k* e/ U" Q( n2 r/ S! u$ Z
1) 找到task_struct8 d# E" o8 P5 k1 M2 S
2) 找到所屬的 mm) J! |8 D: s$ \# }
2) 找到 mm 中的 pgd (page descriptor)( `: V5 z( {0 O/ u8 G7 \
3) 有了pgd就可以用系統的函式,找到對應的 page table entry(pte)
, I/ O$ a% F, p5 w( G! O 例如: pgd_offset(), pmd_offset(), pte_offset()等等
' ]8 J0 s1 N0 p' y& K5 v" |; q. Q4) pa = (virtual address & 0xfffff000) | (pte & 0xfff)
4 S4 c% V" B D2 e
0 u: A- o; R0 Y% Z) B應該就可以得到physical address。以上不知道有沒有錯誤或例外狀況。* a# a9 c& ~% |+ P
目前猜想trust zone可能會造成加在 driver的這段code沒有access某些. N5 F0 r% ?5 h1 E% z3 T$ \; y
資料的權利。但是對trush zone不是相當了解,不知道page table是不是, Y2 g* Z* q. z% t0 b4 F, R8 b' S6 V
會被保護到。 |
|