使用场景
有时候设备死机的直接原因是代码段被改写,导致指令异常,而这种情况常见的SLUB DEBUG、kasan等内存检测机制是无法检测到的。可以尝试将代码段设置为只读,这样就在改写代码段的时候直接触发异常,收集到真正的死机点。
使用方法
在ARMv7的平台下,可以开启内核的以下配置项,将代码段变成只读
- CONFIG_ARM_KERNMEM_PERMS=y:将内核代码段设置为"只读+可执行"
- CONFIG_DEBUG_RODATA=y:是CONFIG_ARM_KERNMEM_PERMS子选项,作为默认值
- CONFIG_DEBUG_SET_MODULE_RONX=y:将内核模块地址段设置为"只读+可执行"
- CONFIG_ARM_PTDUMP=y:打印页表布局,还需要修订dump接口
- CONFIG_DEBUG_PAGEALLOC=y:将释放内存从页表中移除,来检测后使用,原来已开启;
- CONFIG_PAGE_POISONING=y:
网友评论