试图清除_PAGE_PRESENT位并遇到内核恐慌

时间:2014-06-06 13:22:50

标签: linux-kernel

对内核编程不熟悉,我试图弄脏内核代码。我试图清除pte(页表条目)的PAGE_PRESENT位

所以,我做了以下

    temp_pte = pte_clear_flags(pte, _PAGE_PRESENT);
    set_pte(ptep, temp_pte);

但是我遇到了内核崩溃。跟踪位于以下链接 http://pastebin.com/5MZ3xzd3

这些是我可以从日志中识别的几条鱼线:

Jun 6 16:43:44 lenovo-laptop kernel:[131.834145] BUG:无法在fffa6120处理内核分页请求

Jun 6 16:43:44 lenovo-laptop内核:[131.835065] IP:[] native_set_pte + 0x3 / 0x10

Jun 6 16:43:44 lenovo-laptop kernel:[131.835598] * pde = 018c7067 * pte = 00000000

20060 /基板产品名称 6月6日16:43:44 lenovo-laptop内核:[131.842637] EIP:0060:[] EFLAGS:00010282 CPU:1

Jun 6 16:43:44 lenovo-laptop kernel:[131.843372] EIP在native_set_pte + 0x3 / 0x10

我经历了下面的堆栈溢出链接,因为日志很不相似,但仍然无法理解为什么会发生这种情况。

What do these Linux Kernel Oops fields mean?

我是否需要在调用set_pte之前获取一些锁?我在各个地方查看了这个函数的用法,我尝试以同样的方式使用它。为什么发生内核分页请求,因为如果查看set_pte函数,我没有发现任何分配,但是正在调用mmu操作。

任何指针或帮助都会很棒,因为我坚持这一点。感谢

0 个答案:

没有答案