如何在Linux内核中为非用户空间内存执行内存范围检查?

时间:2012-08-14 18:31:59

标签: memory linux-kernel

我正在为另一个模块编写一个API作为linux内核模块。对于初始开发,我想对传递给我的API的物理内存指针进行一些内存范围检查。这样我的模块可以帮助捕获模块中的错误,我的模块不会被指责为坏指针。

我知道有很多方法可以检查内核中的用户空间指针是否有效。问题是我没有找到预先打包的方法来对内核可访问的物理内存进行范围检查。

检查正常的内核线性地址范围当然是可能的(0x00000000到0xbfffffff和0xc0000000到0xffffffff [了解Linux内核第3版])。内核中是否有任何函数或宏可用于执行此操作,并且可能比我的建议更好?

1 个答案:

答案 0 :(得分:1)

如果它们确实是物理地址,您可以使用page_is_ram()

您可能正在获取内核虚拟地址,在这种情况下,您必须先转换它们。