繁体   English   中英

我如何知道Linux内核中的地址是否可读?

[英]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资源一样重新映射该内存。

如果要在主存储器中搜索某些内容,则可以使用诸如ioremapkmap类的功能来获取特定物理地址的有效虚拟地址。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM