Linux中用户空间地址的嵌套页错误

Linux中用户空间地址的嵌套页错误,linux,linux-kernel,kernel,Linux,Linux Kernel,Kernel,我想知道当内核运行错误处理程序引入用户页面时,对用户空间地址进行页面错误设置是否在功能上是错误的 操作系统是Linux 2.6.30 假设两个用户地址对于任务都有效(在vma、rw权限范围内) 当我检查内核代码时,我发现内核并不介意嵌套错误 如果出现故障的地址有效,并且故障没有发生在原子上下文或irq处理程序中 (我不认为答案是特定于cpu的,但我想补充一点,我对 arm和mips) 例如:如果我从页面错误处理程序打印堆栈数据,这种情况可能会发生。在过去的一个小时里查看内核源代码,这表明这是好的

我想知道当内核运行错误处理程序引入用户页面时,对用户空间地址进行页面错误设置是否在功能上是错误的

操作系统是Linux 2.6.30

假设两个用户地址对于任务都有效(在vma、rw权限范围内)

当我检查内核代码时,我发现内核并不介意嵌套错误 如果出现故障的地址有效,并且故障没有发生在原子上下文或irq处理程序中

(我不认为答案是特定于cpu的,但我想补充一点,我对 arm和mips)


例如:如果我从页面错误处理程序打印堆栈数据,这种情况可能会发生。

在过去的一个小时里查看内核源代码,这表明这是好的:无论是定义还是调用vma->vm_ops->fault in之间的代码,都没有任何关于这一点的警告声明,我看到的少数->故障处理程序似乎也不担心它


。。。我认为最重要的是,您需要通过再次在同一地址上出错来避免陷入无限递归,但这可能只会发生在内核堆栈位于您的vma中时,这很可能不会发生?

这是绝对正确的。事实上,你甚至可以睡觉


但是,由于您将处于非原子环境中,所以您只能在这一过程通过后再进行操作。

我已经准备好回答这两次了,我自己检查了一下,但我仍然不确定+一个很好的问题。