2010-03-19 22 views
24

我想知道在內核運行故障處理程序時引入用戶頁面時,頁面是否功能錯誤 - 用戶空間地址錯誤。Linux中用戶空間地址的嵌套頁面錯誤

OS是Linux的2.6.30

假設兩個用戶的地址是有效的(下降VMA,RW權限內)的任務。

當我檢查內核代碼時,如果故障地址有效並且故障沒有發生在原子上下文或irq處理程序中,我發現內核不介意嵌套故障 。

(我不認爲答案是CPU特定的,但我會補充說我對 arm和mips感興趣)。

例如:如果我從頁面錯誤處理程序打印堆棧數據,則可能發生這種情況。

+0

我準備好回答這個問題了兩次,檢查了我自己,但我仍然不確定。 +1是一個很好的問題。 – 2010-03-19 16:03:18

回答

1

翻翻內核源代碼的最後一個小時顧名思義是罰款:的struct vm_operations_struct無論是清晰度還是handle_mm_fault()之間的代碼和調用的vma-> vm_ops->故障__do_fault()有對此問題的任何警示性聲明,並很少 - >我看過的錯誤處理程序似乎並不擔心它...

...我認爲最主要的是,您需要避免通過在同一地址重新進行故障進入無限遞歸,但是這大概只有在內核堆棧在你的 vma時纔會發生,這很可能不會發生?

0

這是絕對正確的。事實上,你甚至可以睡覺。

但是只有在這個line被傳遞後,您才能做到這一點,因爲您將處於非原子上下文中。

相關問題