我正在为另一个模块编写一个API作为linux内核模块。对于初始开发,我想对传递给我的API的物理内存指针进行一些内存范围检查。这样,我的模块可以帮助捕获模块中的错误,并且我的模块不会因为错误的指针而受到指责。
我知道有很多方法可以在内核中检查用户空间指针的有效内存。问题是我还没有找到一种预打包的方法来对内核可访问的物理内存进行范围检查。
检查正常的内核线性地址范围当然是可能的(0x00000000到0xbfffffff和0xc0000000到0xffffffff了解Linux内核第三版)。内核中有没有现成的函数或宏可以做到这一点,而且可能比我的建议更好?
发布于 2012-08-15 21:30:00
如果它们真的是物理地址,你可以使用page_is_ram()。
不过,您可能会获得内核虚拟地址,在这种情况下,您必须首先转换它们。
https://stackoverflow.com/questions/11958560
复制相似问题