[英]How do I know if an address in Linux kernel is readable or not?
我怎么知道地址是否可读?
如果地址不可读或未映射,则内核通常会以如下BUG: unable to handle kernel paging request at ffffffff80000018
消息响应BUG: unable to handle kernel paging request at ffffffff80000018
。
那么,是否有任何功能可以验证特定地址是否可读(或地址范围)?
copy_from_user
和相关函数从某个不受信任的用户空间程序获取地址; 它们通过安装特殊的异常处理程序来防止无效地址。 (有关详细信息,请参见此答案 。)
您可以执行相同的操作,但这只能防止内核在页表中将其标记为无效的地址。 访问某些随机设备的MMIO范围可能会产生不可预测的结果。
如果要在某些BIOS ROM中搜索某些内容,请像其他任何PCI资源一样重新映射该内存。
如果要在主存储器中搜索某些内容,则可以使用诸如ioremap
或kmap
类的功能来获取特定物理地址的有效虚拟地址。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.